Decorator  Pattern