I've been working on my own for all of this so far and have unfortunately been quite lacks with comments and documentation.
I intend to begin fixing this as I continue adding features however any help with older parts of the code would be quite welcome