Separated logic and command