Messy commit, has my updated files, tests, algorithms, and report. Unfortunately, there are a lot of hacky things introduced for the tests. Need to clean up later.