Initial work. Not very pretty, no setup.py yet, and kind of a mess. May have accidentally broke parts, testing to come soon.