restructure Controller to Dispatcher