add more error checking  and propagation for Read/Write and Get/Put