new controller module and an idea of an abstract factory in the
controller