revised the controllers to be even more modular