Make read and write semantics closer to that of Go