modify datasource to hierarchial structure