also, since you have a "class ShardsReader" defined here, can't 'def iteratorSeq' be implemented in the trait GraphReader itself?

i.e., overall seems like only OneShardReader implementation needs to be provided by the implementors of the those classes that are extending Graphreader and the other boilerplate should be minimized.