custom reader implementation partly