see http://www.codeproject.com/csharp/objserial.asp