Ah, yes I suppose we are hiding all of the mutable stuff from the user. We can probably get rid of more indirection in the future by exposing that, if it's a win.