Controls Software Redesign 1. Increased Modularity 2. Hierarchical Planning 3. Test-Driven Development