This class might benefit from a little bit of documentation... the interactions here are fairly complicated and the responsibility breakdown between this and BufferMessage are a little confusing (at least for me).