Halfway through refactoring. Next step is to unify all the different commands into one object.