implement the write-side of the spec as well as the read-side.