add the decorator pattern