add read func