added abstract base and admin controller