readers implementation