composite design pattern  added