Command OO pattern WIP