story  controller and further refactoring