Break everything up into components with annotation-based command system