*/
	public boolean growPolypeptide(int x, int y, double angle, int id) {
		MolecularModel m = model;
		int n = m.getNumberOfAtoms();
		int k = 0;
		Object o = m.getProperty("NOA_Translation");
		if (o instanceof Integer)
			k = (Integer) o;
		if (n <= k) {
			boolean b = insertAnAtom(x, y, id, true, false);
			if (b)
				PointRestraint.tetherParticle(m.getAtom(k), 100);
			return b;
		} else if (n == k + 1) {
			Atom a = m.getAtom(k);
			Element e = m.getElement(id);
			double d = RadialBond.PEPTIDE_BOND_LENGTH_PARAMETER * (a.getSigma() + e.getSigma());
			a.translateBy(d * Math.cos(angle), -d * Math.sin(angle));
			if (insertAnAtom(x, y, id, true, false)) {
				m.getBonds().add(new RadialBond.Builder(a, m.getAtom(n)).bondLength(d).build());
				MoleculeCollection.sort(m);
				PointRestraint.releaseParticle(a);
				PointRestraint.tetherParticle(m.getAtom(n), 100);
				return true;
			}
			a.translateBy(-d * Math.cos(angle), d * Math.sin(angle));
			return false;
		} else {
			Atom a = m.getAtom(n - 1);
			Element e = m.getElement(id);
			double d = RadialBond.PEPTIDE_BOND_LENGTH_PARAMETER * (a.getSigma() + e.getSigma()) * 0.5;
			Molecule mol = m.getMolecules().getMolecule(a);
			if (mol != null)
				mol.translateBy(d * Math.cos(angle), -d * Math.sin(angle));
			if (insertAminoAcid(x, y, id)) {
				m.getBonds().add(new RadialBond.Builder(a, m.getAtom(n)).bondLength(d * 2).build());
				MoleculeCollection.sort(m);
				PointRestraint.releaseParticle(a);
				PointRestraint.tetherParticle(m.getAtom(n), 100);
				return true;
			}
			if (mol != null)
				mol.translateBy(-d * Math.cos(angle), d * Math.sin(angle));
			return false;
		}
	}