Re-wrote. All documentation is currently broken.