Refactored to get rid of ReadOnly struct, which was not doing anything.