Scala has performed admirably in the first major task in which I've employed it. In my previous post I mentioned the XML virtualization framework I'm building. It's part of an Xpath equipped web service. The system will enable its clients to treat each mortgage as a giant XML document and use Xpath to select the part of that document in which they are interested. That Xpath query will invoke the specific functionality needed to perform queries against an existing database to construct the document fragment requested by the client, and nothing else. This is an important feature considering the massive amount of data contained in just a single loan. The document couldn't be generated in full every time someone wanted to grab the borrower's last name. I think this document-centric view of our data will be very powerful. The treelike nature of XML makes it a good way of defining ontologies, giving us an opportunity to break the many fields of each loan into a logical hierarchy. This is good for developers, because the data they'll work with will be presented coherently. It's also going to be excellent for systems integration and our ultimate upgrade path. We are basing our organization scheme on a collection of industry standard documents called schemas. Schemas are documents that describe the structure of other documents, in this case the documents involved in various stages of the mortgage process. Very soon now, many companies that we work with will be accepting documents based on these schemas, so by mapping them to our existing database, we'll gain this sort of interoperability for free. Because the schemas were developed by a mortgage standards organization which worked on them over a period of years, they are very complete. Most information that we'd need to include in a mortgage system is present in these documents, and what's missing can be added with extensions to the standard. The standards represent a stable assumption about the structure of loan information, and that makes them a good point for a software interface. We can write software that interacts with our back-end systems by treating the information they store as an XML document that conforms to the standards. A new, more robust back-end system will later be brought online to replace the existing one, but it will continue to support this standard interface. This means we can route any interactions destined for the old system to the new one as well, making a gradual transition.