Just a comment on the subject of name parsing. The last word in the string is not necessarily the surname. For example, the surname "Saint Raymond" is 2 words. Also, the first word is not necessarily the entire first name. My friends "first name" is "Mary Dee". As someone who constantly gets sorted into the wrong column based on my 2 word last name, I am sensitive to this problem. This is an issue of data collection and business rules, not a programming issue, but I wanted you to be aware of it.
To speak algebraically, Mr. M. is execrable, but Mr. C. is
Edgar Allan Poe
[Discussing fellow writers Cornelius Mathews and William Ellery Channing.]