Command pattern

Command pattern