updated read op