Need to check all the work I've done tonight but made some big changes to oDataList. Rows are gone, instead I'm creating nodes in our node tree for each line. This code can now be cleaned up further and probably be made a lot stronger, maybe even enable doing recursive grouping, we'll see. The other big change is that vertical scrolling now works on display line numbers. This saves a lot of overhead in the redraw making redraws up to 10x faster in some of the tests I've ran but it looks slightly less nice. Some more tweaking is needing here especially as our line numbers start counting at 1 but our scroll counts from 0.