add read function