public void buildTree( double[][] matrix, String[] taxa )
	{
		set slooper;
		numSpecies = matrix.length;
		D = matrix;
		for ( int i=0;i<taxa.length;i++ )
		{
			node v = new node( taxa[i], null, -1 );
			v.index2 = i;
			if ( species == null )
				species = new set( v );
			else
				species.addToSet( v );
		}
		initDoubleMatrix( 2*numSpecies-2 );
		T = new tree();
		switch ( btype )
		{
			case OLS:
				for ( slooper=species; slooper != null; slooper=slooper.next )
					T.GMEaddSpecies( slooper.node, D, A );
				break;
			case BAL:
				for ( slooper = species; slooper != null; slooper = slooper.next)
					T.BMEaddSpecies( slooper.node, D, A );
				break;
		}
	}