Almost done, shitty code