public boolean removeWord(String word) {
		if(word.length() == 0) return true; 
		char the_char = word.charAt(0);
		int childPos = getChildPos(the_char);
		if(this.children[childPos] == null)
			return false;
		if(word.length() == 1 ){
			if(this.children[childPos].is_word){
				if(this.children[childPos].is_leaf){
					this.children[childPos] = null;
					this.is_leaf = true;
					return true;
				}else{
					this.children[childPos].is_word = false;
					return true;
				}
			}else{
				return true;
			}
		}else{
			if(!this.children[childPos].is_leaf){
				boolean child_result = this.children[childPos].removeWord(word.substring(1));
				if(child_result){
					if(this.children[childPos].is_leaf && (!this.children[childPos].is_word)){ // We need to do cleaning
						this.is_leaf = true;
						this.children[childPos] = null;
						return true;
					}
					else
						return true;
				}else{
					return false;
				}
			}else
				return false;
		}
	}