made Controller an abstract class