decorator pattern design prototype