add read-only support