The majority of this class functions as three InputFormats in one file. I'd really prefer to separate out the delegation to the real InputFormat so that each implementation's logic is contained in the correct module. I think building a way for implementations to control MR is the right long-term design and the earlier we build something to fill the gap, the better off we will be. Plus, a way to delegate would mean we don't need to expose the HBase Dao or use a HBase-specific Accessor class in this code that is activated by any RandomAccessDataset.