add read functionality