Eh time to rewrite everything :/