pattern mediator
pattern observer
pattern state
pattern memento