private BSTEntry<K, V> putElem(BSTEntry<K, V> top, K key, V value) {
		if (top == null) {
			//head case, or leaf case
			size++;
			return new BSTEntry<K, V>(key, value);
		}
		
		int comp = key.compareTo(top.getKey());
		if (comp == 0) {
			top.setValue(value);
		} else if (comp > 0) {
			//don't just return - have to attach!
			top.setRight(putElem(top.getRight(), key, value));
		} else {
			top.setLeft(putElem(top.getLeft(), key, value));
		}
		return top;
	}