composite
strategy
decorate