simpler interface, including writes