refactor dispatch