Decoupled the readers and writers to allow for custom writers