tree has many tradeoffs, especially - cycle will break function - many lock/unlock operation is necessary in rust - makes it hard to do multi-processing