Decoraor and constructor pattern