Clearly there is a cycle, as A depends on C, C depends on E, and E depends on A. What is the problem with a cycle like this? Say that you have to make a change in package C that is supposed to be backward-compatible. To properly test the system with this change, we must make sure that C continues to have proper functionality given its dependencies. Now, if we trace this down the dependency chain, we must test C with D and E, and as E depends on A, we must include A as well. Now that A is included, we must include B and C. Because of the cycle, we now have to test all of the packages!