add Decorator Pattern