add Decorator Design Pattern