Implement the Command pattern