decorator & facade pattern