ReadXml and WriteXml don't need to be virtuals