add abstract read accessor