Rewrite command handling to be more generic. Not finished!

18 files changed