all commands should exec through the same method