Fleshed out the rest of the new read flow, not debugged