Added Command Pattern (without undo or command queuing)