Thanks

Thanks for writing this. It's saved me tones of time. All of these changes have actually been tested by me and our QA (we're using it in Givit). I'll probably have more for you in the future, but I wanted to get these in before it became unmanageable. I've tried to document the purpose for the changes in the commit logs, but feel free to challenge me on any of them.