The composite design pattern