layer handling:

    bit packing
    state parameters
    string pools

    reading structures from the end of a stream, seek/tell behaviour

seek based protocols are too hard. 
    hGetContents/ interleaving.

user requests:

    get remaining bytestring after a runGet

    some kind of lookahead, or restoring parsing state, or something with
      equal functionality. make it another layer on top?

    getLazyByteString takes an Int, which in Haskell98 is only guarantied to
      be 29 bits, ie. 512 mb.
      maybe we should have a readN64 for allowing reading of larger stuff?
      (which could be implemented with readN on 64bit machines)
      reference: bringerts tar archive decoder would be limitid to 0.5GB
                 files, alt. 2GB in GHC

SYB-deriving

investigate the UArray instance, it does not seem to compile in GHC 6.4
