Refactor all commands into domain objects