accept extra parameter for ChainIO::read