update decorator pattern.