Decorator pattern
Update