@Override
    public V put(K key, V value) {
        if (key == null || value == null)
            throw new IllegalArgumentException();

        int hash = (key.hashCode()) % totalBuckets;
        hash = hash * (hash < 0 ? -1 : 1); //save me from negative hashes!!
        System.out.println(String.format("They key for %s is %d, modded %d is %d", key, key.hashCode(), totalBuckets, hash));
        EntryNode list = hashes[hash];

        for (EntryNode e = list; e != null; e = e.next) {
            if (e.key.equals(key)) {
                V oldVal = e.value;
                e.value = value;
                mods++; //modified
                return oldVal;
            }
        }

        EntryNode newEntry = new EntryNode(); //otherwise, if there isn't anything to copy...

        if (list == null)
            occupiedBuckets++;

        newEntry.key = key;
        newEntry.value = value;
        newEntry.next = list; //link in; if null it won't do anything.
        hashes[hash] = newEntry;
        elements++;
        mods++; //modified
        tryResize();
        return null;
    }