Index: applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/RelationMemberEditorModel.java
===================================================================
--- applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/RelationMemberEditorModel.java	(revision 20586)
+++ applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/RelationMemberEditorModel.java	(revision 20606)
@@ -181,5 +181,5 @@
 	 * in whose context this editor is working 
 	 */
-	public void setVias(List<OsmPrimitive> vias){
+	public void setVias(List<OsmPrimitive> vias) throws IllegalArgumentException{
 		boolean viasDeleted = removeMembersWithRole("via");
 		if (vias == null || vias.isEmpty()){
Index: applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/TurnRestrictionComboBoxModel.java
===================================================================
--- applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/TurnRestrictionComboBoxModel.java	(revision 20586)
+++ applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/TurnRestrictionComboBoxModel.java	(revision 20606)
@@ -40,5 +40,5 @@
 		
 		String tagValue = model.getRestrictionTagValue();
-		if (tagValue == null) {
+		if (tagValue.trim().equals("")) {
 			selectedTagValue = null;
 		} else {
Index: applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/TurnRestrictionEditorModel.java
===================================================================
--- applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/TurnRestrictionEditorModel.java	(revision 20586)
+++ applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/TurnRestrictionEditorModel.java	(revision 20606)
@@ -68,4 +68,5 @@
 	private  RelationMemberEditorModel memberModel;
 	private  IssuesModel issuesModel;
+	private NavigationControler navigationControler;
 	
 	/**
@@ -73,12 +74,15 @@
 	 * 
 	 * @param layer the layer. Must not be null.
+	 * @param navigationControler control to direct the user to specific UI components. Must not be null 
 	 * @throws IllegalArgumentException thrown if {@code layer} is null
 	 */
 	public TurnRestrictionEditorModel(OsmDataLayer layer, NavigationControler navigationControler) throws IllegalArgumentException{
 		CheckParameterUtil.ensureParameterNotNull(layer, "layer");
+		CheckParameterUtil.ensureParameterNotNull(navigationControler, "navigationControler");
 		this.layer = layer;
+		this.navigationControler = navigationControler;
 		memberModel = new RelationMemberEditorModel(layer);
 		memberModel.addTableModelListener(new RelationMemberModelListener());
-		issuesModel = new IssuesModel(this,navigationControler);
+		issuesModel = new IssuesModel(this);
 		addObserver(issuesModel);
 		tagEditorModel.addTableModelListener(new TagEditorModelObserver());
@@ -214,5 +218,5 @@
 	/**
 	 * Replies the current tag value for the tag <tt>restriction</tt>.
-	 * null, if there isn't a tag <tt>restriction</tt>.  
+	 * The empty tag, if there isn't a tag <tt>restriction</tt>.  
 	 * 
 	 * @return the tag value
@@ -220,5 +224,5 @@
 	public String getRestrictionTagValue() {
 		TagCollection tags = tagEditorModel.getTagCollection();
-		if (!tags.hasTagsFor("restriction")) return null;
+		if (!tags.hasTagsFor("restriction")) return "";
 		return tags.getJoinedValues("restriction");
 	}
@@ -238,5 +242,5 @@
 				tm.setValue(value);
 			} else {
-				tagEditorModel.add(new TagModel("restriction", value));
+				tagEditorModel.add(new TagModel("restriction", value.trim().toLowerCase()));
 			}
 		}
@@ -262,9 +266,10 @@
 	 * must be equal to the dataset of this editor model, see {@see #getDataSet()}
 	 * 
+	 * null values in {@see vias} are skipped. 
+	 * 
 	 * @param vias the list of vias 
-	 * @throws IllegalArgumentException thrown if one of the via objects is null or
-	 * if it belongs to the wrong dataset 
-	 */
-	public void setVias(List<OsmPrimitive> vias) {
+	 * @throws IllegalArgumentException thrown if one of the via objects belongs to the wrong dataset 
+	 */
+	public void setVias(List<OsmPrimitive> vias) throws IllegalArgumentException{
 		memberModel.setVias(vias);
 	}
@@ -320,4 +325,8 @@
 	public IssuesModel getIssuesModel() {
 		return issuesModel;
+	}
+	
+	public NavigationControler getNavigationControler() {
+		return navigationControler;
 	}
 	
@@ -422,5 +431,8 @@
 		}		
 	}
-	
+
+	/* ----------------------------------------------------------------------------------------- */
+	/* inner classes                                                                             */
+	/* ----------------------------------------------------------------------------------------- */	
 	class TagEditorModelObserver implements TableModelListener {
 		public void tableChanged(TableModelEvent e) {
Index: applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/TurnRestrictionSelectionPopupPanel.java
===================================================================
--- applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/TurnRestrictionSelectionPopupPanel.java	(revision 20586)
+++ applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/TurnRestrictionSelectionPopupPanel.java	(revision 20606)
@@ -354,6 +354,6 @@
 		public void focusLost(FocusEvent e) {
 			// if we loose the focus to a component outside of the popup panel
-			// we hide the popup
-			if (!SwingUtilities.isDescendingFrom(e.getOppositeComponent(), TurnRestrictionSelectionPopupPanel.this)) {
+			// we hide the popup			
+			if (e.getOppositeComponent() == null ||!SwingUtilities.isDescendingFrom(e.getOppositeComponent(), TurnRestrictionSelectionPopupPanel.this)) {
 				if (parentPopup != null){
 					parentPopup.hide();
Index: applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/qa/IssuesModel.java
===================================================================
--- applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/qa/IssuesModel.java	(revision 20586)
+++ applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/qa/IssuesModel.java	(revision 20606)
@@ -30,5 +30,4 @@
 public class IssuesModel extends Observable implements Observer{
 	private final ArrayList<Issue> issues = new ArrayList<Issue>();
-	private NavigationControler navigationContoler;
 	private TurnRestrictionEditorModel editorModel;
 	
@@ -41,11 +40,8 @@
 	 * 
 	 * @param editorModel the editor model. Must not be null.
-	 * @param controler the navigation controler. Must not be null.
 	 * @throws IllegalArgumentException thrown if controler is null
 	 */
-	public IssuesModel(TurnRestrictionEditorModel editorModel, NavigationControler controler) throws IllegalArgumentException{
+	public IssuesModel(TurnRestrictionEditorModel editorModel) throws IllegalArgumentException{
 		CheckParameterUtil.ensureParameterNotNull(editorModel, "editorModel");
-		CheckParameterUtil.ensureParameterNotNull(controler, "controler");
-		this.navigationContoler = controler;
 		this.editorModel = editorModel;
 		this.editorModel.addObserver(this);
@@ -193,5 +189,5 @@
 	
 	public NavigationControler getNavigationControler() {
-		return navigationContoler;
+		return editorModel.getNavigationControler();
 	}
 	
