Needs to be cleaned up, but other than that pretty much done.