public void removeAtoms(BitSet bs) {
		if (bs.cardinality() <= 0)
			return;
		handleBitSet(translucentBitSet, sharedBitSet, bs);
		handleBitSet(trajectoryBitSet, sharedBitSet, bs);
		handleBitSet(velocityBitSet, sharedBitSet, bs);
		model.removeAtoms(bs);
		viewer.removeAtoms(bs);
		int n = model.getABondCount();
		if (n > 0) {
			viewer.clearABonds();
			ABond abond;
			for (int i = 0; i < n; i++) {
				abond = model.getABond(i);
				viewer.addABond(abond.getAtom1().getIndex(), abond.getAtom2().getIndex(), abond.getAtom3().getIndex());
			}
		}
		n = model.getTBondCount();
		if (n > 0) {
			viewer.clearTBonds();
			TBond tbond;
			for (int i = 0; i < n; i++) {
				tbond = model.getTBond(i);
				viewer.addTBond(tbond.getAtom1().getIndex(), tbond.getAtom2().getIndex(), tbond.getAtom3().getIndex(),
						tbond.getAtom4().getIndex());
			}
		}
		storeCurrentOrientation();
		renderModel(false);
		refresh();
		refreshTrajectories();
		repaint();
	}