start implementing Command pattern