public List<Vertex> GeneralSearch() {
		_nodes = makeEmptyQueue();
		initQueue();
		
		Node node = null;
		for(_expansions=0;_expansions<_maxExpand;){
			if(_nodes.isEmpty()){
				_noRoute = true;//Failure
				System.out.println("No Solution Found.");
				return new Vector<Vertex>();//Failure
			}

			node = _nodes.remove();
			System.out.println();
			System.out.println("Pulled Node:"+node+"- vertex-"+node.get_state().get_num()+" supplies:"+node.get_currentSupplies()+" newDepth:"+node.get_debth());
			
			if(goalTest(node)){
				System.out.println("Found solution Node: vertex-"+node.get_state().get_num()+" supplies:"+node.get_currentSupplies()+" newDepth:"+node.get_debth());
				return buildRoute(node);
				}
			if(node.get_debth()!=Double.POSITIVE_INFINITY){
				_expansions++;
				_expand++;
				_nodes.addAll(node.expand());
			}
		}
		return buildStep(node);
	}