separated command and entity