#209 command factory and command as classes