decorator pattern added base on Tomas suggestion