added dectorator pattern