Decorator design pattern