MANY MANY changes! This commit marks an entirely new approach to the program.