Mostly Complete - need to check a few odd bugs