Separate CommandFactory from Command::Base