diff --git a/de.uniwue.mk.athen/bundles/de.ids.tt.athen.rwview/src/de/ids/tt/athen/rwview/part/RedeWiedergabeView.java b/de.uniwue.mk.athen/bundles/de.ids.tt.athen.rwview/src/de/ids/tt/athen/rwview/part/RedeWiedergabeView.java
index 71a8d5cb55dc70f54565f7eb2ef0503a0475af59..680e9432a5870f2938c8ca6c194c8d9ba3aec064 100644
--- a/de.uniwue.mk.athen/bundles/de.ids.tt.athen.rwview/src/de/ids/tt/athen/rwview/part/RedeWiedergabeView.java
+++ b/de.uniwue.mk.athen/bundles/de.ids.tt.athen.rwview/src/de/ids/tt/athen/rwview/part/RedeWiedergabeView.java
@@ -22,6 +22,7 @@ import org.eclipse.e4.core.services.events.IEventBroker;
 import org.eclipse.e4.ui.di.Focus;
 import org.eclipse.e4.ui.model.application.ui.basic.MPart;
 import org.eclipse.jface.dialogs.InputDialog;
+import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.window.Window;
@@ -282,6 +283,47 @@ public class RedeWiedergabeView extends AEditorSubordinateViewPart {
 	Shell rwMetadataShell = new Shell();
 	RwMetadataDialog rwMetadataDialog = new RwMetadataDialog(rwMetadataShell);
 
+	//frameIDDialog
+	Shell frameIDShell = new Shell();
+	
+	//frameDialog
+	Shell frameShell = new Shell();
+	
+	//speakerDialog
+	Shell speakerShell = new Shell();
+	
+	//intExprDialog
+	Shell intExprShell = new Shell();
+	
+	//speakerOutsideFrame
+	Shell speakerOutsideFrameShell = new Shell();
+	
+	//speakerOutsideFrame
+	Shell speakerOutsideStwrShell = new Shell();
+	
+	//speech
+	Shell speechShell = new Shell();
+	Shell speechPunctShell = new Shell();
+	
+	//thought
+	Shell thoughtShell = new Shell();
+	Shell thoughtPunctShell = new Shell();
+	
+	//writing
+	Shell writingShell = new Shell();
+	Shell writingPunctShell = new Shell();
+	
+	//rTypeAmbig
+	Shell rTypeAmbigShell = new Shell();
+	
+	//mediumAmbig
+	Shell mediumAmbigShell = new Shell();
+	Shell mediumPunctAmbigShell = new Shell();
+	
+	//metadata
+	Shell metadataDefinedShell = new Shell ();
+	Shell metadataIncompleteShell = new Shell ();
+	
 	// flags for the medium buttons
 	private boolean speechFlag;
 	private boolean thoughtFlag;
@@ -691,8 +733,7 @@ public class RedeWiedergabeView extends AEditorSubordinateViewPart {
 			
 			for (AnnotationFS speaker : speakerList)
 			{
-				if (speaker.getFeatureValueAsString(speakerIDFeat).equals(toId))
-				{
+				if (speaker.getFeatureValueAsString(speakerIDFeat).equals(toId)){
 					updateAnnotation(speaker, speakerIDFeat, fromId, true);
 				}
 			}
@@ -704,6 +745,14 @@ public class RedeWiedergabeView extends AEditorSubordinateViewPart {
 					updateAnnotation(expression, expressionIDFeat, fromId, true);
 				}
 			}
+			
+			for (AnnotationFS speaker : speakerList)
+			{
+				if (speaker.getFeatureValueAsString(speakerIDFeat).equals(toId))
+				{
+					updateAnnotation(speaker, speakerIDFeat, fromId, true);
+				}
+			}
 		}
 		/*
 		Display.getCurrent().asyncExec(() -> {
@@ -730,6 +779,13 @@ public class RedeWiedergabeView extends AEditorSubordinateViewPart {
 				// update that annotation
 				updateAnnotation(a, stwrIDFeat, toId, true);
 			}
+			
+			for (AnnotationFS speaker : speakerList)
+			{
+				if (speaker.getFeatureValueAsString(speakerIDFeat).equals(fromId)){
+					updateAnnotation(speaker, speakerIDFeat, toId, true);
+				}
+			}
 		}
 		/*
 		Display.getCurrent().asyncExec(() -> {
@@ -859,8 +915,10 @@ public class RedeWiedergabeView extends AEditorSubordinateViewPart {
 		
 		for (AnnotationFS frame : editor.getCas().getAnnotationIndex(frameType)){
 			if (frame.getFeatureValueAsString(frameIDFeat).equals("")){
-				JFrame jFrame = new JFrame("Information");
-				JOptionPane.showMessageDialog(jFrame, "ID is missing for frame with start = " + " "  + frame.getBegin() + ".", "Attention", JOptionPane.WARNING_MESSAGE);	
+				MessageDialog.openWarning(frameIDShell, "Warning", "ID is missing for frame with start = " + " "  + frame.getBegin() + ".");
+				//frameIDShell.close();
+				//JFrame jFrame = new JFrame("Information");
+				//JOptionPane.showMessageDialog(jFrame, "ID is missing for frame with start = " + " "  + frame.getBegin() + ".", "Attention", JOptionPane.WARNING_MESSAGE);	
 				frameIdFlag = true;
 				renewPage();
 			}
@@ -892,8 +950,10 @@ public class RedeWiedergabeView extends AEditorSubordinateViewPart {
 				int position = anno.getEnd();
 				if ((editor.getCas().getDocumentText().charAt(position) == '.') || (editor.getCas().getDocumentText().charAt(position) == '?') || (editor.getCas().getDocumentText().charAt(position) == '!'))
 				{
-					JFrame frame = new JFrame("Information");
-					JOptionPane.showMessageDialog(frame, "Please do not forget to mark the punctuation character.", "Attention", JOptionPane.WARNING_MESSAGE);	
+					MessageDialog.openWarning(frameShell, "Warning", "Please do not forget to mark the punctuation character.");
+					//frameShell.close();
+					//JFrame frame = new JFrame("Information");
+					//JOptionPane.showMessageDialog(frame, "Please do not forget to mark the punctuation character.", "Attention", JOptionPane.WARNING_MESSAGE);	
 				} else {
 					editor.addAnnotation(anno);
 				}
@@ -913,8 +973,10 @@ public class RedeWiedergabeView extends AEditorSubordinateViewPart {
 	boolean speakerIDFlag = false;
 		for (AnnotationFS speaker : speakerList){
 			if (speaker.getFeatureValueAsString(speakerIDFeat) == null){
-				JFrame jFrame = new JFrame("Information");
-				JOptionPane.showMessageDialog(jFrame, "Please assign an ID to the speaker " + "\"" + speaker.getFeatureValueAsString(speakerFeat) + "\"" + ".", "Attention", JOptionPane.WARNING_MESSAGE);
+				MessageDialog.openWarning(speakerShell, "Warning",  "Please assign an ID to the speaker " + "\"" + speaker.getFeatureValueAsString(speakerFeat) + "\"" + ".");
+				//speakerShell.close();
+				//JFrame jFrame = new JFrame("Information");
+				//JOptionPane.showMessageDialog(jFrame, "Please assign an ID to the speaker " + "\"" + speaker.getFeatureValueAsString(speakerFeat) + "\"" + ".", "Attention", JOptionPane.WARNING_MESSAGE);
 				speakerIDFlag = true;
 			}	
 		}
@@ -950,6 +1012,7 @@ public class RedeWiedergabeView extends AEditorSubordinateViewPart {
 				String speakerFeatValue = anno.getFeatureValueAsString(speakerFeat);
 				speakerFeatValue = anno.getCoveredText();
 				updateAnnotation(anno, speakerFeat, speakerFeatValue, true);
+				updateAnnotation(anno, speakerIDFeat, "0", true);
 				addAnnotation(anno);
 				
 				for (AnnotationFS frame : frameList)
@@ -990,7 +1053,7 @@ public class RedeWiedergabeView extends AEditorSubordinateViewPart {
 				renewPage();
 				});
 			*/
-			renewPage();
+			renewPage();	
 		}
 	}
 	
@@ -1000,11 +1063,10 @@ public class RedeWiedergabeView extends AEditorSubordinateViewPart {
 		List<AnnotationFS> speakerSelection = editor.getCurrentSelectionOfType(speakerType);
 		String concatenatedId = "";
 		
-		
-		
 		if (speakerSelection != null && speakerSelection.size() > 0)
 		{	
 			AnnotationFS anno =  speakerSelection.get(0);
+			anno.setFeatureValueFromString(speakerIDFeat, "");
 			if (anno.getFeatureValueAsString(speakerIDFeat) == null)
 			{
 				concatenatedId = selected.getFeatureValueAsString(frameIDFeat);	
@@ -1013,13 +1075,16 @@ public class RedeWiedergabeView extends AEditorSubordinateViewPart {
 				|| anno.getFeatureValueAsString(speakerIDFeat).matches(selected.getFeatureValueAsString(frameIDFeat) + " " + ".*" )
 				|| anno.getFeatureValueAsString(speakerIDFeat).matches(".*" + " " + selected.getFeatureValueAsString(frameIDFeat))
 				|| anno.getFeatureValueAsString(speakerIDFeat).matches(selected.getFeatureValueAsString(frameIDFeat))){
-				JFrame jFrame = new JFrame("Information");
-				JOptionPane.showMessageDialog(jFrame, "The speaker already has the ID " + selected.getFeatureValueAsString(frameIDFeat) + ".", "Attention", JOptionPane.WARNING_MESSAGE);
+				MessageDialog.openWarning(speakerOutsideFrameShell, "Warning", "The speaker already has the ID " + selected.getFeatureValueAsString(frameIDFeat) + ".");
+				//speakerOutsideFrameShell.close();
+				//JFrame jFrame = new JFrame("Information");
+				//JOptionPane.showMessageDialog(jFrame, "The speaker already has the ID " + selected.getFeatureValueAsString(frameIDFeat) + ".", "Attention", JOptionPane.WARNING_MESSAGE);
 			}else {
 				concatenatedId = anno.getFeatureValueAsString(speakerIDFeat) + " " + selected.getFeatureValueAsString(frameIDFeat);
 				updateAnnotation(anno, speakerIDFeat, concatenatedId, true);		
 			}
 		}
+		renewPage();
 	}
 	
 	public void createSpeakerOutsideStwr(AnnotationFS selected)
@@ -1038,13 +1103,16 @@ public class RedeWiedergabeView extends AEditorSubordinateViewPart {
 					|| anno.getFeatureValueAsString(speakerIDFeat).matches(selected.getFeatureValueAsString(stwrIDFeat) + " " + ".*" )
 					|| anno.getFeatureValueAsString(speakerIDFeat).matches(".*" + " " + selected.getFeatureValueAsString(stwrIDFeat))
 					|| anno.getFeatureValueAsString(speakerIDFeat).matches(selected.getFeatureValueAsString(stwrIDFeat))){
-					JFrame jFrame = new JFrame("Information");
-					JOptionPane.showMessageDialog(jFrame, "The speaker already has the ID " + selected.getFeatureValueAsString(stwrIDFeat) + ".", "Attention", JOptionPane.WARNING_MESSAGE);
+				MessageDialog.openWarning(speakerOutsideStwrShell, "Warning", "The speaker already has the ID " + selected.getFeatureValueAsString(stwrIDFeat) + ".");
+				//speakerOutsideStwrShell.close();
+					//JFrame jFrame = new JFrame("Information");
+					//JOptionPane.showMessageDialog(jFrame, "The speaker already has the ID " + selected.getFeatureValueAsString(stwrIDFeat) + ".", "Attention", JOptionPane.WARNING_MESSAGE);
 			}else {
 				concatenatedId = anno.getFeatureValueAsString(speakerIDFeat) +  " " + selected.getFeatureValueAsString(stwrIDFeat);
 				updateAnnotation(anno, speakerIDFeat, concatenatedId, true);
 			}
 		}
+		renewPage();
 	}
 	
 	
@@ -1110,8 +1178,10 @@ public class RedeWiedergabeView extends AEditorSubordinateViewPart {
 			}	
 			if (repCounter == repAnnoList.size() && frameCounter == frameList.size())
 			{
-				JFrame jFrame = new JFrame("Information");
-				JOptionPane.showMessageDialog(jFrame, "Please mark a string in a frame or in a reported STWR.", "Attention", JOptionPane.WARNING_MESSAGE);
+				MessageDialog.openWarning(intExprShell, "Warning", "Please mark a string in a frame or in a reported STWR.");
+				//intExprShell.close();
+				//JFrame jFrame = new JFrame("Information");
+				//JOptionPane.showMessageDialog(jFrame, "Please mark a string in a frame or in a reported STWR.", "Attention", JOptionPane.WARNING_MESSAGE);
 			}
 		}
 		renewPage();
@@ -1138,8 +1208,11 @@ public class RedeWiedergabeView extends AEditorSubordinateViewPart {
 		if (dirFlag == false && indFlag == false && freeIndFlag == false && repFlag == false &&
 		ambigRTypeDialog.dirFlag == false && ambigRTypeDialog.indirFlag == false && ambigRTypeDialog.freeIndFlag == false && ambigRTypeDialog.repFlag == false)
 		{
-			JFrame frame = new JFrame("Information");
-			JOptionPane.showMessageDialog(frame, "Please choose a type first.", "Attention", JOptionPane.WARNING_MESSAGE);
+			MessageDialog.openWarning(speechShell, "Warning", "Please choose a type first.");
+			//speechShell.close();
+			//JFrame frame = new JFrame("Information");
+			//JOptionPane.showMessageDialog(frame, "Please choose a type first.", "Attention", JOptionPane.WARNING_MESSAGE);
+
 		} 
 		else
 		{
@@ -1149,8 +1222,10 @@ public class RedeWiedergabeView extends AEditorSubordinateViewPart {
 				int position = stwrAnno.getEnd();
 				if ((editor.getCas().getDocumentText().charAt(position) == '.') || (editor.getCas().getDocumentText().charAt(position) == '?') || (editor.getCas().getDocumentText().charAt(position) == '!'))
 				{
-					JFrame frame = new JFrame("Information");
-					JOptionPane.showMessageDialog(frame, "Please do not forget to mark the punctuation character.", "Attention", JOptionPane.WARNING_MESSAGE);	
+					MessageDialog.openWarning(speechPunctShell, "Warning", "Please do not forget to mark the punctuation character.");
+					//speechPunctShell.close();
+					//JFrame frame = new JFrame("Information");
+					//JOptionPane.showMessageDialog(frame, "Please do not forget to mark the punctuation character.", "Attention", JOptionPane.WARNING_MESSAGE);	
 				} else {
 					editor.addAnnotation(stwrAnno);
 				}
@@ -1176,8 +1251,10 @@ public class RedeWiedergabeView extends AEditorSubordinateViewPart {
 		if (dirFlag == false && indFlag == false && freeIndFlag == false && repFlag == false &&
 		ambigRTypeDialog.dirFlag == false && ambigRTypeDialog.indirFlag == false && ambigRTypeDialog.freeIndFlag == false && ambigRTypeDialog.repFlag == false)
 		{
-			JFrame frame = new JFrame("Information");
-			JOptionPane.showMessageDialog(frame, "Please choose a type first.", "Attention", JOptionPane.WARNING_MESSAGE);
+			MessageDialog.openWarning(thoughtShell, "Warning", "Please choose a type first.");
+			//thoughtShell.close();
+			//JFrame frame = new JFrame("Information");
+			//JOptionPane.showMessageDialog(frame, "Please choose a type first.", "Attention", JOptionPane.WARNING_MESSAGE);
 		} 
 		else
 		{
@@ -1187,8 +1264,10 @@ public class RedeWiedergabeView extends AEditorSubordinateViewPart {
 				int position = stwrAnno.getEnd();
 				if ((editor.getCas().getDocumentText().charAt(position) == '.') || (editor.getCas().getDocumentText().charAt(position) == '?') || (editor.getCas().getDocumentText().charAt(position) == '!'))
 				{
-					JFrame frame = new JFrame("Information");
-					JOptionPane.showMessageDialog(frame, "Please do not forget to mark the punctuation character.", "Attention", JOptionPane.WARNING_MESSAGE);	
+					MessageDialog.openWarning(thoughtPunctShell, "Warning", "Please do not forget to mark the punctuation character.");
+					//thoughtPunctShell.close();
+					//JFrame frame = new JFrame("Information");
+					//JOptionPane.showMessageDialog(frame, "Please do not forget to mark the punctuation character.", "Attention", JOptionPane.WARNING_MESSAGE);	
 				} else {
 					editor.addAnnotation(stwrAnno);
 				}
@@ -1214,8 +1293,10 @@ public class RedeWiedergabeView extends AEditorSubordinateViewPart {
 		if (dirFlag == false && indFlag == false && freeIndFlag == false && repFlag == false &&
 		ambigRTypeDialog.dirFlag == false && ambigRTypeDialog.indirFlag == false && ambigRTypeDialog.freeIndFlag == false && ambigRTypeDialog.repFlag == false)
 		{
-			JFrame frame = new JFrame("Information");
-			JOptionPane.showMessageDialog(frame, "Please choose a type first.", "Attention", JOptionPane.WARNING_MESSAGE);
+			MessageDialog.openWarning(writingShell, "Warning", "Please choose a type first.");
+			//writingShell.close();
+			//JFrame frame = new JFrame("Information");
+			//JOptionPane.showMessageDialog(frame, "Please choose a type first.", "Attention", JOptionPane.WARNING_MESSAGE);
 		} 
 		else
 		{
@@ -1225,8 +1306,10 @@ public class RedeWiedergabeView extends AEditorSubordinateViewPart {
 				int position = stwrAnno.getEnd();
 				if ((editor.getCas().getDocumentText().charAt(position) == '.') || (editor.getCas().getDocumentText().charAt(position) == '?') || (editor.getCas().getDocumentText().charAt(position) == '!'))
 				{
-					JFrame frame = new JFrame("Information");
-					JOptionPane.showMessageDialog(frame, "Please do not forget to mark the punctuation character.", "Attention", JOptionPane.WARNING_MESSAGE);	
+					MessageDialog.openWarning(writingPunctShell, "Warning", "Please do not forget to mark the punctuation character.");
+					//writingPunctShell.close();
+					//JFrame frame = new JFrame("Information");
+					//JOptionPane.showMessageDialog(frame, "Please do not forget to mark the punctuation character.", "Attention", JOptionPane.WARNING_MESSAGE);	
 				} else {
 					editor.addAnnotation(stwrAnno);
 				}
@@ -1245,10 +1328,12 @@ public class RedeWiedergabeView extends AEditorSubordinateViewPart {
 		ambigRTypeDialog.open();
 		if (ambigRTypeDialog.dirFlag == false && ambigRTypeDialog.indirFlag == false
 				&& ambigRTypeDialog.freeIndFlag == false && ambigRTypeDialog.repFlag == false) {
-			JFrame frame = new JFrame("Information");
-			JOptionPane.showMessageDialog(frame, "Please choose a type.", "Attention", JOptionPane.WARNING_MESSAGE);
+			MessageDialog.openWarning(rTypeAmbigShell, "Warning", "Please choose a type.");
+			//rTypeAmbigShell.close();
+			//JFrame frame = new JFrame("Information");
+			//JOptionPane.showMessageDialog(frame, "Please choose a type.", "Attention", JOptionPane.WARNING_MESSAGE);
 			ambigRTypeDialog.close();
-			ambigDialogRTypeShell.close();
+			//ambigDialogRTypeShell.close();
 		} else {
 			if (ambigRTypeDialog.dirFlag == true && ambigRTypeDialog.indirFlag == true
 					&& ambigRTypeDialog.freeIndFlag == true && ambigRTypeDialog.repFlag == true) {
@@ -1314,8 +1399,10 @@ public class RedeWiedergabeView extends AEditorSubordinateViewPart {
 		if (dirFlag == false && indFlag == false && freeIndFlag == false && repFlag == false &&
 		ambigRTypeDialog.dirFlag == false && ambigRTypeDialog.indirFlag == false && ambigRTypeDialog.freeIndFlag == false && ambigRTypeDialog.repFlag == false)
 		{
-			JFrame frame = new JFrame("Information");
-			JOptionPane.showMessageDialog(frame, "Please choose a type first.", "Attention", JOptionPane.WARNING_MESSAGE);
+			MessageDialog.openWarning(mediumAmbigShell, "Warning", "Please choose a type first.");
+			//mediumAmbigShell.close();
+			//JFrame frame = new JFrame("Information");
+			//JOptionPane.showMessageDialog(frame, "Please choose a type first.", "Attention", JOptionPane.WARNING_MESSAGE);
 		} 
 		else
 		{
@@ -1323,8 +1410,10 @@ public class RedeWiedergabeView extends AEditorSubordinateViewPart {
 
 			if (ambigMediumDialog.speechFlag == false && ambigMediumDialog.thoughtFlag == false
 					&& ambigMediumDialog.writingFlag == false) {
-				JFrame frame = new JFrame("Information");
-				JOptionPane.showMessageDialog(frame, "Please choose a medium.", "Attention", JOptionPane.WARNING_MESSAGE);
+				MessageDialog.openWarning(mediumAmbigShell, "Warning", "Please choose a medium.");
+				//mediumAmbigShell.close();
+				//JFrame frame = new JFrame("Information");
+				//JOptionPane.showMessageDialog(frame, "Please choose a medium.", "Attention", JOptionPane.WARNING_MESSAGE);
 				ambigMediumDialog.close();
 			} else {
 				if (ambigMediumDialog.speechFlag == true && ambigMediumDialog.thoughtFlag == true
@@ -1348,8 +1437,10 @@ public class RedeWiedergabeView extends AEditorSubordinateViewPart {
 					int position = stwrAnno.getEnd();
 					if ((editor.getCas().getDocumentText().charAt(position) == '.') || (editor.getCas().getDocumentText().charAt(position) == '?') || (editor.getCas().getDocumentText().charAt(position) == '!'))
 					{
-						JFrame frame = new JFrame("Information");
-						JOptionPane.showMessageDialog(frame, "Please do not forget to mark the punctuation character.", "Attention", JOptionPane.WARNING_MESSAGE);	
+						MessageDialog.openWarning(mediumPunctAmbigShell, "Warning", "Please do not forget to mark the punctuation character.");
+						//mediumPunctAmbigShell.close();
+						//JFrame frame = new JFrame("Information");
+						//JOptionPane.showMessageDialog(frame, "Please do not forget to mark the punctuation character.", "Attention", JOptionPane.WARNING_MESSAGE);	
 					} else {
 						editor.addAnnotation(stwrAnno);
 					}
@@ -1397,8 +1488,10 @@ public class RedeWiedergabeView extends AEditorSubordinateViewPart {
 	public void setMetadataMap(){
 		this.metadataMap.clear();
 		if (editor.getCas().getAnnotationIndex(metadataType).size() == 0){
-			JFrame errorFrame = new JFrame("Information");
-			JOptionPane.showMessageDialog(errorFrame, "Metadata is not defined.", "Attention", JOptionPane.WARNING_MESSAGE);	
+			MessageDialog.openWarning(metadataDefinedShell, "Warning", "Metadata is not defined.");
+			//metadataDefinedShell.close();
+			//JFrame errorFrame = new JFrame("Information");
+			//JOptionPane.showMessageDialog(errorFrame, "Metadata is not defined.", "Attention", JOptionPane.WARNING_MESSAGE);	
 		} else {
 			for (AnnotationFS anno : editor.getCas().getAnnotationIndex(metadataType)){	
 				if(anno.getFeatureValueAsString(idFeat) == null || anno.getFeatureValueAsString(origFileFeat) == null
@@ -1410,8 +1503,10 @@ public class RedeWiedergabeView extends AEditorSubordinateViewPart {
 					|| anno.getFeatureValueAsString(periodicalFeat) == null || anno.getFeatureValueAsString(nameFeat) == null
 					|| anno.getFeatureValueAsString(timeStampFeat) == null || anno.getFeatureValueAsString(versionFeat) == null)
 				{
-					JFrame errorFrame = new JFrame("Information");
-					JOptionPane.showMessageDialog(errorFrame, "Metadata is incomplete.", "Attention", JOptionPane.WARNING_MESSAGE);	
+					//JFrame errorFrame = new JFrame("Information");
+					//JOptionPane.showMessageDialog(errorFrame, "Metadata is incomplete.", "Attention", JOptionPane.WARNING_MESSAGE);
+					MessageDialog.openWarning(metadataIncompleteShell, "Warning", "Metadata is not incomplete.");
+					//metadataIncompleteShell.close();
 				}
 			 
 				else
@@ -1626,6 +1721,43 @@ public class RedeWiedergabeView extends AEditorSubordinateViewPart {
 		deleteAnnotations(annos.toArray(new AnnotationFS[0]));
 	}
 	
+	public String determineStwrSpeaker(AnnotationFS anno) {
+		ArrayList<String> speakerArrayList = new ArrayList<String>();
+		for (AnnotationFS speakerAnno : speakerList){
+			if (speakerAnno.getFeatureValueAsString(speakerIDFeat).contains(" "))
+			{
+				String [] speakerIDList = speakerAnno.getFeatureValueAsString(speakerIDFeat).split(" ");
+				for (String s : speakerIDList){
+					if (s.equals(anno.getFeatureValueAsString(stwrIDFeat))){
+						speakerArrayList.add(speakerAnno.getFeatureValueAsString(speakerFeat));
+					}
+				}
+			} else if (speakerAnno.getFeatureValueAsString(speakerIDFeat).equals(anno.getFeatureValueAsString(stwrIDFeat))) {
+				speakerArrayList.add(speakerAnno.getFeatureValueAsString(speakerFeat));
+				}
+		}
+		return String.join("/", speakerArrayList);
+	}
+	
+	public String determineFrameSpeaker(AnnotationFS anno) {
+		ArrayList<String> speakerArrayList = new ArrayList<String>();
+		for (AnnotationFS speakerAnno : speakerList){
+			if (speakerAnno.getFeatureValueAsString(speakerIDFeat).contains(" "))
+			{
+				String [] speakerIDList = speakerAnno.getFeatureValueAsString(speakerIDFeat).split(" ");
+				for (String s : speakerIDList){
+					if (s.equals(anno.getFeatureValueAsString(frameIDFeat))){
+						speakerArrayList.add(speakerAnno.getFeatureValueAsString(speakerFeat));
+					}
+				}
+			} else if (speakerAnno.getFeatureValueAsString(speakerIDFeat).equals(anno.getFeatureValueAsString(frameIDFeat))) {
+				speakerArrayList.add(speakerAnno.getFeatureValueAsString(speakerFeat));
+				}
+		}
+		return String.join("/", speakerArrayList);
+	}
+	
+	
 
 	/*
 	 * private AnnotationFS getCoveringStwr(int caretPos) {
@@ -1955,6 +2087,19 @@ public class RedeWiedergabeView extends AEditorSubordinateViewPart {
 		}
 	}
 	
+	public void changeToFreeIndirect(List<AnnotationFS> annos){
+		for (AnnotationFS anno : annos) {
+			String rTypeValue = anno.getFeatureValueAsString(rTypeFeat);
+
+			if (rTypeValue == null) {
+				rTypeValue = "ruleFreeIndirect";
+			}
+			rTypeValue = rTypeValue.equals("ruleFreeIndirect") ? "freeIndirect" : "ruleFreeIndirect";
+			updateAnnotation(anno, rTypeFeat, rTypeValue, true);
+		}
+			renewPage();
+	}
+	
 	public void addStwrNote(List<AnnotationFS> annos) {
 		
 		for (AnnotationFS anno : annos) {
@@ -2050,7 +2195,7 @@ public class RedeWiedergabeView extends AEditorSubordinateViewPart {
 		updateAnnotation(metaDataList.get(0), timeStampFeat, timestampValue, true);
 			
 		String versionValue = metaDataList.get(0).getFeatureValueAsString(versionFeat);
-		versionValue = "0.0.10a 0.0.1s";
+		versionValue = "0.0.11a 0.0.1s";
 		//versionValue = "0.0.8a 0.0.1s";
 		updateAnnotation(metaDataList.get(0), versionFeat, versionValue, true);	
 	}
diff --git a/de.uniwue.mk.athen/bundles/de.ids.tt.athen.rwview/src/de/ids/tt/athen/rwview/ui/RwDrawingStrategy.java b/de.uniwue.mk.athen/bundles/de.ids.tt.athen.rwview/src/de/ids/tt/athen/rwview/ui/RwDrawingStrategy.java
index 840291990bc5739c7637ea3c968af67966e968fa..7380cf5005ef1ca131f3399daf87599fb96deeee 100644
--- a/de.uniwue.mk.athen/bundles/de.ids.tt.athen.rwview/src/de/ids/tt/athen/rwview/ui/RwDrawingStrategy.java
+++ b/de.uniwue.mk.athen/bundles/de.ids.tt.athen.rwview/src/de/ids/tt/athen/rwview/ui/RwDrawingStrategy.java
@@ -47,6 +47,9 @@ public class RwDrawingStrategy implements IAnnotationDrawingStrategy {
 	private Color gold = new Color (device, 255, 215, 0);
 	private Color goldenrod = new Color (device, 218, 165, 32);
 	
+	//ruleFreeIndirect
+	private Color orangered = new Color (device, 255, 69, 0);
+	
 	//ambig
 	private Color peachpuff = new Color (device, 255, 218, 185);
 	
@@ -99,6 +102,8 @@ public class RwDrawingStrategy implements IAnnotationDrawingStrategy {
 		if (anno.getFeatureValueAsString(rTypeFeat).equals("direct")
 				&& anno.getFeatureValueAsString(mediumFeat).equals("speech")) {
 			gc.setBackground(lightpink);
+		} else if (anno.getFeatureValueAsString(rTypeFeat).equals("ruleFreeIndirect")){
+			gc.setBackground(orangered);
 		} else if (anno.getFeatureValueAsString(rTypeFeat).equals("direct")
 				&& anno.getFeatureValueAsString(mediumFeat).equals("thought")) {
 			gc.setBackground(hotpink);
diff --git a/de.uniwue.mk.athen/bundles/de.ids.tt.athen.rwview/src/de/ids/tt/athen/rwview/ui/RwFrameTableComposite.java b/de.uniwue.mk.athen/bundles/de.ids.tt.athen.rwview/src/de/ids/tt/athen/rwview/ui/RwFrameTableComposite.java
index d9e27935b84d95d23590d8e9742198ea822e1bf8..9dc8c3a78efbd1e9cea499f169fdf64ebd9e4b05 100644
--- a/de.uniwue.mk.athen/bundles/de.ids.tt.athen.rwview/src/de/ids/tt/athen/rwview/ui/RwFrameTableComposite.java
+++ b/de.uniwue.mk.athen/bundles/de.ids.tt.athen.rwview/src/de/ids/tt/athen/rwview/ui/RwFrameTableComposite.java
@@ -106,7 +106,8 @@ public class RwFrameTableComposite extends Composite{
 		createTableViewerColumn("Frame", 45, 1, part::determineFrame);
 		createTableViewerColumn("Pos", 45, 2, part::determinePos);
 		createTableViewerColumn("ID", 45, 3, part::determineFrameID);
-		createTableViewerColumn("Note", 45, 4, part::determineFrameNote);
+		createTableViewerColumn("Speaker", 45, 4, part::determineFrameSpeaker);
+		createTableViewerColumn("Note", 45, 5, part::determineFrameNote);
 	}
 
 	private TableViewerColumn createTableViewerColumn(String viewer, int bound, final int colNumber,
@@ -186,7 +187,7 @@ public class RwFrameTableComposite extends Composite{
 		List<AnnotationFS> selectedAnnos = getSelectedAnnotationsFromTable();
 		
 		// add a note
-		if (e.keyCode == SWT.CR) {
+		if (e.keyCode == '+') {
 			part.addFrameNote(selectedAnnos);
 		}
 
diff --git a/de.uniwue.mk.athen/bundles/de.ids.tt.athen.rwview/src/de/ids/tt/athen/rwview/ui/RwStwrTableComposite.java b/de.uniwue.mk.athen/bundles/de.ids.tt.athen.rwview/src/de/ids/tt/athen/rwview/ui/RwStwrTableComposite.java
index cf49df04c0b42d5d31d51cc3c8d41f2fe69d743f..8d19578bc084b18eb2d187da82a42b88752a8b69 100644
--- a/de.uniwue.mk.athen/bundles/de.ids.tt.athen.rwview/src/de/ids/tt/athen/rwview/ui/RwStwrTableComposite.java
+++ b/de.uniwue.mk.athen/bundles/de.ids.tt.athen.rwview/src/de/ids/tt/athen/rwview/ui/RwStwrTableComposite.java
@@ -1,5 +1,6 @@
 package de.ids.tt.athen.rwview.ui;
 
+import java.awt.event.KeyEvent;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -110,12 +111,14 @@ public class RwStwrTableComposite extends Composite{
 		createTableViewerColumn("Medium", 45, 2, part::determineMedium);
 		createTableViewerColumn("Type", 45, 3, part::determineRType);
 		createTableViewerColumn("ID", 45, 4, part::determineStwrID);
-		createTableViewerColumn("Level", 45, 5, part::determineLevel);
-		createTableViewerColumn("NonFact", 45, 6, part::determineNonFact);
-		createTableViewerColumn("Prag", 45, 7, part::determinePrag);
-		createTableViewerColumn("Border", 45, 8, part::determineBorder);
-		createTableViewerColumn("Metaph", 45, 9, part::determineMetaph);
-		createTableViewerColumn("Note", 45, 10, part::determineStwrNote);
+		createTableViewerColumn("Speaker", 45, 5, part::determineStwrSpeaker);
+		createTableViewerColumn("Level", 45, 6, part::determineLevel);
+		createTableViewerColumn("NonFact", 45, 7, part::determineNonFact);
+		createTableViewerColumn("Prag", 45, 8, part::determinePrag);
+		createTableViewerColumn("Border", 45, 9, part::determineBorder);
+		createTableViewerColumn("Metaph", 45, 10, part::determineMetaph);
+		createTableViewerColumn("Note", 45, 11, part::determineStwrNote);
+
 	}
 	
 	private TableViewerColumn createTableViewerColumn(String viewer, int bound, final int colNumber,
@@ -218,6 +221,11 @@ public class RwStwrTableComposite extends Composite{
 
 	// on enter we allow the user to change the name feature
 	if (e.keyCode == SWT.CR) {
+		//part.addStwrNote(selectedAnnos);
+		part.goToAnnotation(getSelectedAnnotationsFromTable());
+	}
+	
+	if (e.keyCode == '+'){
 		part.addStwrNote(selectedAnnos);
 	}
 	
@@ -253,6 +261,12 @@ public class RwStwrTableComposite extends Composite{
 	else if (e.keyCode == 'm') {
 		part.toggleMetaph(selectedAnnos);
 	}
+	else if (e.keyCode == KeyEvent.VK_SPACE){
+		part.changeToFreeIndirect(selectedAnnos);		
+	}
+	else if (e.keyCode == KeyEvent.VK_DELETE){
+		part.deleteAnnotations(getSelectedAnnotationsFromTable());
+	}
 	}
 	
 	private void handleTableDoubleClick (Event e)
diff --git a/de.uniwue.mk.athen/bundles/de.ids.tt.athen.rwview/src/de/ids/tt/athen/rwview/ui/RwViewComposite.java b/de.uniwue.mk.athen/bundles/de.ids.tt.athen.rwview/src/de/ids/tt/athen/rwview/ui/RwViewComposite.java
index ff907b27fc3dfcd87db2c58dc4e9899064c6f97d..ea78c25509551011d5cdf0054de9a7331c946a64 100644
--- a/de.uniwue.mk.athen/bundles/de.ids.tt.athen.rwview/src/de/ids/tt/athen/rwview/ui/RwViewComposite.java
+++ b/de.uniwue.mk.athen/bundles/de.ids.tt.athen.rwview/src/de/ids/tt/athen/rwview/ui/RwViewComposite.java
@@ -48,7 +48,8 @@ public class RwViewComposite extends Composite {
 		GridData gd = new GridData(GridData.GRAB_VERTICAL | GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL);
 		rwFrameTableComposite.setLayoutData(gd);
 	}
-
+	
+	
 	public void refresh(List<AnnotationFS> frameList, List<AnnotationFS> stwrList){ 
 		rwFrameTableComposite.refresh(frameList);
 		rwStwrTableComposite.refresh(stwrList);
diff --git a/de.uniwue.mk.athen/bundles/de.ids.tt.athen.rwview/typesystem/redeWiedergabeTypesystem_compare_tei_cab.xml b/de.uniwue.mk.athen/bundles/de.ids.tt.athen.rwview/typesystem/redeWiedergabeTypesystem_compare_tei_cab.xml
index e0d0902411c0ef53b32c59b67c8e6959f7c52868..ef60dc859584d5978030e81ea052044c49f622d6 100644
--- a/de.uniwue.mk.athen/bundles/de.ids.tt.athen.rwview/typesystem/redeWiedergabeTypesystem_compare_tei_cab.xml
+++ b/de.uniwue.mk.athen/bundles/de.ids.tt.athen.rwview/typesystem/redeWiedergabeTypesystem_compare_tei_cab.xml
@@ -686,7 +686,7 @@
 	
 	  <typeDescription>
       <name>de.idsma.rw.CabToken</name>
-      <description>CAB tokenizer</description>
+      <description/>
       <supertypeName>uima.tcas.Annotation</supertypeName>
       <features>
         <featureDescription>
@@ -714,11 +714,11 @@
           <description/>
           <rangeTypeName>uima.cas.String</rangeTypeName>
         </featureDescription>
-      <featureDescription>
-          <name>RfPos</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
+          <featureDescription>
+              <name>RfPos</name>
+              <description/>
+              <rangeTypeName>uima.cas.String</rangeTypeName>
+          </featureDescription>
       </features>
     </typeDescription>
 	
@@ -750,13 +750,13 @@
       <description/>
       <supertypeName>uima.tcas.Annotation</supertypeName>
     </typeDescription>
-	
-	
-  <typeDescription>
+
+
+    <typeDescription>
       <name>de.idsma.rw.preprocessing.Token</name>
       <description>openNLPTokenizer</description>
       <supertypeName>uima.tcas.Annotation</supertypeName>
-    <features>
+      <features>
         <featureDescription>
           <name>Lemma</name>
           <description/>
@@ -769,133 +769,93 @@
         </featureDescription>
       </features>
     </typeDescription>
+
     <typeDescription>
       <name>de.idsma.rw.preprocessing.OpenNLPSentence</name>
       <description>OpenNLP sentence detector</description>
       <supertypeName>uima.tcas.Annotation</supertypeName>
     </typeDescription>
-  <typeDescription>
-      <name>de.idsma.rw.AutoStwr</name>
-      <description>Stwr annotations created by a rule-based function / machine learning</description>
+
+    <typeDescription>
+      <name>de.idsma.rw.rule.StwWord</name>
+      <description>A word that indictates a speech, thought or writing event</description>
       <supertypeName>uima.tcas.Annotation</supertypeName>
-      <features>
-        <featureDescription>
-          <name>AutoMedium</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>AutoRType</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>AutoLevel</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>AutoNonFact</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>AutoPrag</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>AutoBorder</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>AutoMetaph</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>AutoStwr</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>AutoStwrID</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-      </features>
-  </typeDescription>
-  <typeDescription>
-      <name>uimarwprojekt.types.STWWord</name>
-      <description/>
+        <features>
+            <featureDescription>
+                <name>Lemma</name>
+                <description>Lemma of the STWWord</description>
+                <rangeTypeName>uima.cas.String</rangeTypeName>
+            </featureDescription>
+            <featureDescription>
+                <name>Penalty</name>
+                <description>Penalty value, number between 0 and 5</description>
+                <rangeTypeName>uima.cas.String</rangeTypeName>
+            </featureDescription>
+            <featureDescription>
+                <name>Medium</name>
+                <description>Likely medium of the STWWord</description>
+                <rangeTypeName>uima.cas.String</rangeTypeName>
+            </featureDescription>
+            <featureDescription>
+                <name>Marker</name>
+                <description>Special marker for the STWWord,
+                    at the moment: rep (likely reported) or nil (nothing)</description>
+                <rangeTypeName>uima.cas.String</rangeTypeName>
+            </featureDescription>
+        </features>
+    </typeDescription>
+
+    <typeDescription>
+      <name>de.idsma.rw.rule.RuleDirect</name>
+      <description>A word that indictates a speech, thought or writing event</description>
       <supertypeName>uima.tcas.Annotation</supertypeName>
-      <features>
-        <featureDescription>
-          <name>Lemma</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>Source</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>Penalty</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>Category</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>Marker</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>Frequency</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-      </features>
     </typeDescription>
-  <typeDescription>
-      <name>de.idsma.rw.AutoFrame</name>
-      <description/>
+
+    <typeDescription>
+      <name>de.idsma.rw.rule.RuleIndirect</name>
+      <description>A word that indictates a speech, thought or writing event</description>
       <supertypeName>uima.tcas.Annotation</supertypeName>
-      <features>
-        <featureDescription>
-          <name>AutoPos</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>AutoFrame</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-      <featureDescription>
-          <name>AutoRwType</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-      </features>
+        <features>
+            <featureDescription>
+                <name>Penalty</name>
+                <description>Penalty value for this instance</description>
+                <rangeTypeName>uima.cas.String</rangeTypeName>
+            </featureDescription>
+            <featureDescription>
+                <name>IndType</name>
+                <description>Structural type of this instance: zu, conj, conjVerb</description>
+                <rangeTypeName>uima.cas.String</rangeTypeName>
+            </featureDescription>
+        </features>
     </typeDescription>
-  <typeDescription>
-      <name>de.idsma.rw.preprocessing.riedlmaNamedEntity</name>
-      <description/>
+
+    <typeDescription>
+      <name>de.idsma.rw.rule.RuleFreeIndirect</name>
+      <description>A word that indictates a speech, thought or writing event</description>
       <supertypeName>uima.tcas.Annotation</supertypeName>
-      <features>
-        <featureDescription>
-          <name>NamedEntityTag</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-      </features>
+        <features>
+            <featureDescription>
+                <name>Score</name>
+                <description>Score for this fi instance</description>
+                <rangeTypeName>uima.cas.String</rangeTypeName>
+            </featureDescription>
+        </features>
     </typeDescription>
-  </types>
+
+    <typeDescription>
+          <name>de.idsma.rw.rule.RuleFrame</name>
+          <description/>
+          <supertypeName>uima.tcas.Annotation</supertypeName>
+          <features>
+              <featureDescription>
+                  <name>Pos</name>
+                  <description>- start
+                      - mid
+                      - end</description>
+                  <rangeTypeName>uima.cas.String</rangeTypeName>
+              </featureDescription>
+          </features>
+      </typeDescription>
+	  
+    </types>
 </typeSystemDescription>