This is gonna take a while, I have no idea what I'm doing