private Object[] add(int key, String value, Node<Integer,Object> node) {
		if(node instanceof LeafNode){
			if(node.size() < maxLeafKeys ){
				node.addKey(key);
				node.addChild(value);
				return null;
			}else{
				return splitLeaf(key,value,node);
			}
		}

		if(node instanceof InternalNode){
			for(int i=1; i<node.size(); i++){
				System.out.println(node.size()+" "+i);
				if(key < node.getKey(i)){
					Object[] container = add(key, value, ((Node<Integer,Object>)node.getChild(i-1)));
					if(container == null){
						return null;
					}else{
						return dealWithPromotion((Integer)container[0],(String)container[1],node);
					}
				}
			}
			Object[] container = add(key,value,(Node<Integer,Object>)node.getChild(node.size()-1));
			if(container == null){
				return null;
			}else{
				return dealWithPromotion((Integer)container[0], (String)container[1], node);
			}
		}

		return null;
	}