composite/decrator/facade