I'm overhauling this PR so this part is going to change.