updated data reading