fix AbstractController interface