decorator pattern basic example