Added some tests and refined AbstractController: most methods protected