refactoring super controller