add read and write support