made a more usable data model (so you can re-use a buffer)