first pass at tree data structure