decorator pattern & unit tests