refactor ActionDispatcherImpl