start implement partial read/write