added fromXML()