Support for Separated Read Write

Rebased from #4211.