Refactor dispather classes

The command dispatch subsystem is more complicated than it needs to be.