switch controllers to best practices