reader first impls