stack decorator pattern