TODO: Fix all my mistakes, I shouldn't be doing this at 3am