Changed controller to abstract