diff --git a/src/avatartranslator/touppaal/AVATAR2UPPAAL.java b/src/avatartranslator/touppaal/AVATAR2UPPAAL.java
index cbdbba3cbe2b1aaef4c258632b18ac58eb0958dc..ce68ce354186b8f12cd4b50bc646e43a0d38709a 100755
--- a/src/avatartranslator/touppaal/AVATAR2UPPAAL.java
+++ b/src/avatartranslator/touppaal/AVATAR2UPPAAL.java
@@ -486,13 +486,13 @@ public class AVATAR2UPPAAL {
 		
 		TraceManager.addDev("Making behaviour of " + _block.getName());
 		
-		makeElementBehavior(_block, _template, ass, loc, null, null, false);
+		makeElementBehavior(_block, _template, ass, loc, null, null, false, false);
 		
 		TraceManager.addDev("Nb of locations=" + _template.getNbOfLocations()); 
 		
 	}
 	
-	public void makeElementBehavior(AvatarBlock _block, UPPAALTemplate _template, AvatarStateMachineElement _elt, UPPAALLocation _previous, UPPAALLocation _end, String _guard, boolean _previousState) {
+	public void makeElementBehavior(AvatarBlock _block, UPPAALTemplate _template, AvatarStateMachineElement _elt, UPPAALLocation _previous, UPPAALLocation _end, String _guard, boolean _previousState, boolean _severalTransitions) {
 		AvatarActionOnSignal aaos;
 		UPPAALLocation loc, loc1;
 		UPPAALTransition tr;
@@ -520,7 +520,7 @@ public class AVATAR2UPPAAL {
 		if (_elt instanceof AvatarStartState) {
 			hash.put(_elt, _previous);
 			//if (_elt.getNext(0) != null) {
-			makeElementBehavior(_block, _template, _elt.getNext(0), _previous, _end, null, false);
+			makeElementBehavior(_block, _template, _elt.getNext(0), _previous, _end, null, false, false);
 			//}
 			return;
 			
@@ -543,14 +543,14 @@ public class AVATAR2UPPAAL {
 			_previous.setCommitted();
 			loc.setCommitted();
 			hash.put(_elt, _previous);
-			makeElementBehavior(_block, _template, _elt.getNext(0), loc, _end, null, false);
+			makeElementBehavior(_block, _template, _elt.getNext(0), loc, _end, null, false, false);
 			return;
 			
 			
 			// Avatar Action on Signal
 		} else if (_elt instanceof AvatarActionOnSignal) {
 			loc = translateAvatarActionOnSignal((AvatarActionOnSignal)_elt, _block, _template, _previous, _guard);
-			makeElementBehavior(_block, _template, _elt.getNext(0), loc, _end, null, false);
+			makeElementBehavior(_block, _template, _elt.getNext(0), loc, _end, null, false, false);
 			
 			// Avatar State
 		} else if (_elt instanceof AvatarState) {
@@ -577,7 +577,7 @@ public class AVATAR2UPPAAL {
 				// No transition with a delay
 				for(i=0; i<state.nbOfNexts(); i++) {
 					at = (AvatarTransition)(state.getNext(i));
-					makeElementBehavior(_block, _template, at, _previous, _end, null, false);
+					makeElementBehavior(_block, _template, at, _previous, _end, null, false, (state.nbOfNexts() > 1));
 				}
 			} else {
 				// At least one transition with a delay
@@ -600,18 +600,22 @@ public class AVATAR2UPPAAL {
 				makeStateTransitions(state, locs, transitions, loc, _end, _block, _template, builtlocs, elements);
 				
 				for(int k=0; k<builtlocs.size(); k++) {
-					makeElementBehavior(_block, _template, elements.get(k), builtlocs.get(k), _end, null, false);
+					makeElementBehavior(_block, _template, elements.get(k), builtlocs.get(k), _end, null, false, (state.nbOfNexts() > 1));
 				}
 			}
 			
 			
 		} else if (_elt instanceof AvatarTransition) {
 			at = (AvatarTransition) _elt;
-			if ((at.getNext(0) instanceof AvatarActionOnSignal) && (at.isGuarded()) && !(at.hasActions())) {
-				makeElementBehavior(_block, _template, _elt.getNext(0), _previous, _end, at.getGuard(), false);
+			if ((at.getNext(0) instanceof AvatarActionOnSignal) && !(at.hasActions())) {
+				if (at.isGuarded()) {
+					makeElementBehavior(_block, _template, _elt.getNext(0), _previous, _end, at.getGuard(), false, false);
+				}  else {
+					makeElementBehavior(_block, _template, _elt.getNext(0), _previous, _end, null, false, false);
+				}
 			} else {
-				loc = translateAvatarTransition(at, _block, _template, _previous, _guard, _previousState);
-				makeElementBehavior(_block, _template, _elt.getNext(0), loc, _end, null, false);
+				loc = translateAvatarTransition(at, _block, _template, _previous, _guard, _previousState, _severalTransitions);
+				makeElementBehavior(_block, _template, _elt.getNext(0), loc, _end, null, false, false);
 			}
 			
 		} else {
@@ -638,21 +642,32 @@ public class AVATAR2UPPAAL {
 		return loc;
 	}
 	
-	public UPPAALLocation translateAvatarTransition(AvatarTransition _at, AvatarBlock _block, UPPAALTemplate _template, UPPAALLocation _previous, String _guard, boolean _previousState) {
+	public UPPAALLocation translateAvatarTransition(AvatarTransition _at, AvatarBlock _block, UPPAALTemplate _template, UPPAALLocation _previous, String _guard, boolean _previousState, boolean _severalTransitions) {
 		UPPAALLocation loc = _previous;
 		UPPAALLocation loc1;
 		UPPAALTransition tr;
 		String tmps;
 		int i;
 		
+		if (_at.isGuarded()) {
+			TraceManager.addDev("Guard=" + _at.getGuard());
+		}
+		
+		if (_severalTransitions) {
+			TraceManager.addDev("SEVERAL TRANSITIONS");
+		} else {
+			TraceManager.addDev("ONE TRANSITION");
+		}
+		
 		if (!_previousState) {
-			
 			if (_at.isGuarded()) {
+					_previous.setCommitted();
 					loc1 = addLocation(_template);
 					tr = addTransition(_template, _previous, loc1);
 					tmps = convertGuard(_at.getGuard());
 					setGuard(tr, tmps);
 					loc = loc1;
+					
 			}
 			
 			if (_at.hasDelay()) {
@@ -692,6 +707,20 @@ public class AVATAR2UPPAAL {
 					loc = loc1;
 				}
 			}
+		} else {
+			/*// make choice!
+			
+			if (_severalTransitions) {
+				loc.setUrgent();
+				TraceManager.addDev("Really Making choice!");
+				loc1 = addLocation(_template);
+				tr = addTransition(_template, loc, loc1);
+				setSynchronization(tr, "makeChoice!");
+				loc = loc1;
+			} else {
+				TraceManager.addDev("Make committed");
+				loc.setCommitted();
+			}*/
 		}
 		hash.put(_at, loc);
 		return loc;
@@ -748,7 +777,7 @@ public class AVATAR2UPPAAL {
 					setGuard(tr, tmps);
 					setSynchronization(tr, CHOICE_ACTION + "!");
 					if (_template.nbOfTransitionsExitingFrom(locend) == 0) {
-						loc1 = translateAvatarTransition(at, _block, _template, locend, "", true);
+						loc1 = translateAvatarTransition(at, _block, _template, locend, "", true, (_state.nbOfNexts() > 1));
 						_builtlocs.add(loc1);
 						_elements.add(at.getNext(0));
 					}
@@ -763,14 +792,14 @@ public class AVATAR2UPPAAL {
 						}
 						setSynchronization(tr, CHOICE_ACTION + "!");
 						if (_template.nbOfTransitionsExitingFrom(locend) == 0) {
-							loc1 = translateAvatarTransition(at, _block, _template, locend, "", true);
+							loc1 = translateAvatarTransition(at, _block, _template, locend, "", true, (_state.nbOfNexts() > 1));
 							_builtlocs.add(loc1);
 							_elements.add(at.getNext(0));
 						}
 						
 					} else {
 						// We make the translation in the next transition
-						loc1 = translateAvatarTransition(at, _block, _template, _loc, "", true);
+						loc1 = translateAvatarTransition(at, _block, _template, _loc, "", true, (_state.nbOfNexts() > 1));
 						tr = addTransition(_template, loc1, locend);
 						loc1.setCommitted();
 						if (!(_elements.contains(at.getNext(0)))) {
diff --git a/src/ui/TDiagramMouseManager.java b/src/ui/TDiagramMouseManager.java
index 35c207d0ca300777c6000c315223df19e9c06e9e..5771b233bd8e0ee3faf6cdc2d9775adc71a06db8 100755
--- a/src/ui/TDiagramMouseManager.java
+++ b/src/ui/TDiagramMouseManager.java
@@ -102,7 +102,7 @@ public class TDiagramMouseManager implements MouseListener, MouseMotionListener
 
 		//System.out.println("mode = " + tdp.mode + " selected=" + selected);
 
-		if ((tdp.mode == TDiagramPanel.SELECTED_COMPONENTS) && (tdp.isInSelectedRectangle(e.getX(), e.getY()))){
+		if ((tdp.mode == TDiagramPanel.SELECTED_COMPONENTS) && (e.getButton() == MouseEvent.BUTTON1) && (tdp.isInSelectedRectangle(e.getX(), e.getY()))){
 			tdp.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));
 			tdp.mode = TDiagramPanel.MOVING_SELECTED_COMPONENTS;
 			tdp.setMovingSelectedComponents();
@@ -115,7 +115,7 @@ public class TDiagramMouseManager implements MouseListener, MouseMotionListener
 		}
 
 
-		if ((tdp.mode == TDiagramPanel.NORMAL) && (selected == TGComponentManager.EDIT)) {
+		if ((tdp.mode == TDiagramPanel.NORMAL) && (selected == TGComponentManager.EDIT)& (e.getButton() == MouseEvent.BUTTON1)) {
 			//search if an element is pointed
 			boolean actionMade = false;
 			tgc = tdp.componentPointed();
@@ -236,7 +236,7 @@ public class TDiagramMouseManager implements MouseListener, MouseMotionListener
 		}
 
 
-		if ((tdp.mode == TDiagramPanel.NORMAL) && (selected == TGComponentManager.CONNECTOR)) {
+		if ((tdp.mode == TDiagramPanel.NORMAL) && (selected == TGComponentManager.CONNECTOR) & (e.getButton() == MouseEvent.BUTTON1)) {
 			// connector adding
 			// search for an selected connecting point
 			TGConnectingPoint p1;