Needs cleaned up

Untested

Parts only