composite design pattern provided