public V put(K newKey, V newValue) {
		if (newKey == null)
			return null;
		
		int index = hashFunction(newKey);
		
		if (mTable[index] != null) { // table bucket contains at least one entry already
			Node currentNode = mTable[index];
			
			// check if key is already mapped
			while (true) {
				if (currentNode.mKey == newKey) {
					V temp = currentNode.mValue;
					currentNode.mValue = newValue;
					return temp;
				} else if (currentNode.next == null)
					break;
				else
					currentNode = currentNode.next;
			}
			
			// key is not already mapped, currentNode.next == null
			currentNode.next = new Node(newKey, newValue);
			size++;
			if ((double) size/tableSize > loadFactor)
				resize();
			return null;
			
		} else { // table bucket is empty
			mTable[index] = new Node(newKey, newValue);
			size++;
			if ((double) size/tableSize > loadFactor)
				resize();
			return null;
		}
	}