protected synchronized void success() {
		if (debug) {
			System.out.println(name + " success");
		}
		if (abort)
			return;
		count++;
		Thread.yield();
		boolean better = updateBest();
		if (isOption(BETTER)) {
			if (monitor != null) {
				// monitor.addData(this, bestValue);
				int value = solution.getObjectiveIntValue();
				monitor.addData(this, value);
			}
			if (!better)
				return;
		} else {
			if (monitor != null) {
				int value = solution.getObjectiveIntValue();
				monitor.addData(this, value);
			}
		}
		ready = true;
		notifyAll();
		while (!abort && ready) {
			try {
				wait();
			} catch (InterruptedException e) {
			}
		}
	}