Stripped back to basics for major overhaul. Code was just too convoluted and an absolute mess :/