private void addNodes() {
		List<Transition> transitionsToVisit = new ArrayList<Transition>(
				simplifiedSTS.getTransitions());

		while (!transitionsToVisit.isEmpty()) {
			Transition trans = transitionsToVisit.remove(0);
			logger.trace("Visiting " + trans);
			
			boolean added = addAsActivityNode(trans) || addAsXorSplit(trans);
			
			if (!added) {
				
				State source = trans.getSource();
				State target = trans.getTarget();
				
				Set<Transition> outTrans = simplifiedSTS.getTransitionsFromState(source);
				Set<Transition> inTrans = simplifiedSTS.getTransitionsToState(target);
				simplifiedSTS.removeTransition(trans);
				
				if (outTrans.size() > 1 || inTrans.size() > 1) {
					Transition newTrans = new DefaultTransition(source, trans.getCondition(), 
							new DefaultAction(defaultName, true), target);
					simplifiedSTS.addTransition(newTrans);
					logger.trace("Substituting " + trans + " with " + newTrans);
				} else {
					
					replaceState(target, source);
					Set<Transition> copy = new HashSet<Transition>(transitionsToVisit);
					for (Transition t : copy) {
						Transition newT = t.replaceState(target, source);
						if (!newT.equals(t)) {
							transitionsToVisit.remove(t);
							transitionsToVisit.add(newT);
						}
					}
				}
			}	
		}				
	}