add factory and execute methods to controller