Added code from old project and rewrote some bits to make things a little clearer
From here the only thing to do right away is fix the issue with some of the fonts