Assignment finished, DO NOT USE WilliamHashFunctor.java IT BREAKS OCCASIONALLY