private boolean createBond(Atom a1, Atom a2) {
		if (a1 == null || a2 == null || a1 == a2)
			return false;
		if (!bonds.isEmpty()) {
			RadialBond rBond;
			Atom origin, destin;
			synchronized (bonds.getSynchronizationLock()) {
				for (Iterator it = bonds.iterator(); it.hasNext();) {
					rBond = (RadialBond) it.next();
					origin = rBond.getAtom1();
					destin = rBond.getAtom2();
					if ((a1 == origin && a2 == destin) || (a2 == origin && a1 == destin))
						return false;
				}
			}
		}
		double xij = a2.getRx() - a1.getRx();
		double yij = a2.getRy() - a1.getRy();
		bonds.add(new RadialBond.Builder(a1, a2).bondLength(Math.hypot(xij, yij)).build());
		MoleculeCollection.sort(model);
		model.notifyChange();
		repaint();
		return true;
	}