add read primitive