Remarks
Pros of using Decorator:
you can add new functionalities at runtime in different configurations
good alternative for inheritance
client can choose configuration he wants to use