refactor for clearer class names
removed userprefs
retargeted for .net 3.5 compat
refactor for csharp style
error handling parm