update Reader and Writer to better use internal methods