an example of decorator design pattern