refactor dispatcher