independent data reading implemented