decorator pattern sample