Kinda big commit i guess. Working on this is super fun!