Haskell data marshaling layer. Uses type level equations to optimize buffering.