reads and writes fully working