preparing controller factory, controller abstract and preparing for
error handling.