add facade and flyweight