command pattern
singleton pattern
mediator pattern