Imagine having a single view controller for each screen in your app taking care of everything from catching user interactions, setting up views, creating network sessions, to parsing received data and handling network errors — all in all it is a recipe for disaster.