tree view with composite pattern