Too much to write, happy with where I'm at so will merge and push to master