Finished

Needs documentation but near good to go.