Rewrite From Scratch

Rewrote the program from scratch after looking at some code provided by another programmer of an buggy yet functional rewrite (Thank's Travis!) - took several code design decisions from that, and rewrote the methods from my original code, using new algorithms I designed during rewrite based on the old algorithms.