private boolean existsThreatByLower(StandardBoard scb)
	{
		long turnpieces;
		long otherpieces;
		if (scb.whoseTurn() == Definitions.Color.BLACK)
		{
			turnpieces = scb.getWhite();
			otherpieces = scb.getBlack();
		}
		else
		{
			turnpieces = scb.getBlack();
			otherpieces = scb.getWhite();
		}

		//pawn threats
		if (scb.whoseTurn() == Definitions.Color.WHITE)
		{
			//if opposing pawn threatens one of our nonpawns
			if ((Definitions.bpawnAttacks(otherpieces & scb.getPawns()) & turnpieces) != 0)
				return true;
		}
		else
		{
			if ((Definitions.wpawnAttacks(otherpieces & scb.getPawns()) & turnpieces) != 0)
				return true;
		}

		//knight and bishop threats
		if (((Definitions.knightAttacks(scb.getKnights() & otherpieces) | 
				Definitions.bishopAttacks(scb.getBishops() & otherpieces, ~(turnpieces | otherpieces))) & 
				(turnpieces & ~scb.getPawns())) != 0)
		{
			return true;
		}

		//rook threats
		if ((Definitions.rookAttacks(scb.getRooks() & otherpieces, ~(turnpieces | otherpieces)) & 
				(turnpieces & ~(scb.getPawns() | scb.getKnights() | scb.getBishops()))) != 0)
		{
			return true;
		}

		//queen threats
		if ((Definitions.queenAttacks(scb.getQueens() & otherpieces, ~(turnpieces | otherpieces)) &
				(turnpieces & scb.getQueens())) != 0)
		{
			return true;
		}

		return false; //no threats
	}