support read-only