Restructure and allowing custom controllers