add tests and throw exception when attempting to change ro property