May be a few more changes, but this should be the final