Lots of updates, lots of stuff rewritten to be pure python