modify class controller to abstract class