mediator + flyweight + factory method modyfication