Programs that depend on a lot of different subprograms tend to aggregate too many responsibilities, and inevitably become harder to understand and therefore to maintain. Above a specific threshold, it is strongly advised to refactor the program into several smaller programs which focus on well-defined topics.