Initial work

I usually do that, call exceptions 'ignore' 

Keep in mind that this is a port of the code from Lin's stuff, I didn't make too many modifications beyond formatting and getting things working with V3. As per your review I can go back and make these changes, but it wasn't my initial attempt.