private Object[] dealWithPromotion(int key, String value,
			Node<Integer, Object> node) {

		if(value == null){
			return null;
		}

		if(key > node.getKey(node.size()-1)){
			node.addKey(key);
			node.addChild(value);
		}else{
			for(int i=1; i<node.size(); i++){
				if(key < node.getKey(i)){
					node.addKey(key, i);
					node.addChild(value,i);
				}
			}
		}

		if(node.size() <= maxNodeKeys){
			return null;
		}

		Node<Integer,Object> sibling = new InternalNode<Integer,Object>();
		int mid = (node.size()/2)+1;
		for(int i=1; i<=node.size()-mid; i++){
			sibling.addKey(node.removeKey(mid+i), i);
		}
		for(int i=0; i<=node.size()-mid; i++){
			sibling.addChild(node.removeChild(mid+i), i);
		}
		int promoteKey = node.getKey(mid);
		node.removeKey(mid);
		return new Object[]{promoteKey,sibling};

	}