This is.. a long one. So I apologize for any inconsistency regarding code and problems. I\'ll be sure to try and add as much of the source code as I can to