add Decorator pattern
Add Decorator Pattern