decorator pattern(1)