Command pattern example