add command_factory.go