Grabbed from http://obd.codeplex.com/ and modified because the library was unusably broken.