add Decorato pattern