added reads implementation