better naming for AbstractController