rearchitect using STI in controller