Decorator design pattern, example implementation