add code for DecoratorPattern