Split client into engine, render, userInput and network.\nAdded comments everywhere