use unsafe pointers for SegmentReaders as well. This is still a bit buggy
pass by reference
a bit less heap allocation
'self -> 'a