diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.textwidget/src/de/uniwue/mk/athen/textwidget/widget/ATHENEditorBorderComposite.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.textwidget/src/de/uniwue/mk/athen/textwidget/widget/ATHENEditorBorderComposite.java
index 52c70a3b628cbc310cc8022cec9b2f6bf3ae41a5..c4b1a54e022344c3015c0963dbf38e4dede6084c 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.textwidget/src/de/uniwue/mk/athen/textwidget/widget/ATHENEditorBorderComposite.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.textwidget/src/de/uniwue/mk/athen/textwidget/widget/ATHENEditorBorderComposite.java
@@ -9,6 +9,9 @@ import java.util.Map;
 import org.apache.uima.cas.text.AnnotationFS;
 import org.eclipse.jface.window.DefaultToolTip;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
 import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.widgets.Composite;
@@ -85,6 +88,15 @@ public class ATHENEditorBorderComposite extends Composite {
 		for (AnnotationToDSPair pair : annoToDSPairs) {
 			Composite composite = new Composite(this, SWT.BORDER);
 
+			composite.addMouseListener(new MouseAdapter() {
+				@Override
+				public void mouseDown(MouseEvent e) {
+					widget.setSelection(new Point(pair.getAnno().getBegin(), pair.getAnno().getEnd()));
+					widget.showSelection();
+
+				}
+
+			});
 			applyStyling(composite, pair.getDrawingstrategy());
 			controlledWidgets.put(pair, composite);
 		}
@@ -117,7 +129,7 @@ public class ATHENEditorBorderComposite extends Composite {
 
 			// calculate top line and bottom line
 			// get top offset
-			
+
 			double topOffset = (widget.getLineAtOffset(pair.getAnno().getBegin()) / (widget.getLineCount() + 0.0d))
 					* getBounds().height;
 			double bottomOffset = (widget.getLineAtOffset(pair.getAnno().getEnd()) / (widget.getLineCount() + 0.0d))
@@ -128,7 +140,14 @@ public class ATHENEditorBorderComposite extends Composite {
 			// every composite displays its annotation
 			DefaultToolTip toolTip = new DefaultToolTip(composite);
 			toolTip.setShift(new Point(5, 5));
-			toolTip.setText(pair.getAnno().toString());
+
+			if (pair.getAnno().getType().getName().contains("Scene")) {
+				toolTip.setText(
+						pair.getAnno().getFeatureValueAsString(pair.getAnno().getType().getFeatureByBaseName("Type")));
+
+			} else {
+				toolTip.setText(pair.getAnno().toString());
+			}
 		});
 
 	}
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.textwidget/src/de/uniwue/mk/athen/textwidget/widget/ATHENEditorWidget.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.textwidget/src/de/uniwue/mk/athen/textwidget/widget/ATHENEditorWidget.java
index ec2188c696d1620dad82f3aab67e93b81f7d4fec..51fecd41ee188ef0b8ae165a83b8d4e9f30b4f2a 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.textwidget/src/de/uniwue/mk/athen/textwidget/widget/ATHENEditorWidget.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.athen.textwidget/src/de/uniwue/mk/athen/textwidget/widget/ATHENEditorWidget.java
@@ -659,7 +659,7 @@ public class ATHENEditorWidget extends Canvas {
 		if (editorLines != null && editorLines.size() > topLineOffset) {
 			firstVisibleCharacter = editorLines.get(topLineOffset).getOffset().x;
 		}
-		determineWrappedLines(determineWidgetWidth(), gc, getBounds().height);
+		determineWrappedLines(determineWidgetWidth(), gc);
 
 		// calculate the height of the widget
 		int height = 0;
@@ -1109,7 +1109,7 @@ public class ATHENEditorWidget extends Canvas {
 		return currentInput.getCas().getDocumentText();
 	}
 
-	private void determineWrappedLines(int widgetWidth, GC gc, int height) {
+	private void determineWrappedLines(int widgetWidth, GC gc) {
 
 		editorLines = new ArrayList<>();
 
@@ -1520,7 +1520,6 @@ public class ATHENEditorWidget extends Canvas {
 	@Override
 	public void layout() {
 		super.layout();
-
 		drawWidget();
 	}
 
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.annotationbrowserview/src/de/uniwue/mk/kall/athen/annotationbrowserview/ui/AnnotationBrowserView.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.annotationbrowserview/src/de/uniwue/mk/kall/athen/annotationbrowserview/ui/AnnotationBrowserView.java
index 81acefc5db25c04115037723b4a69d69612aa135..d9426de8b8855bcaac1e95b4a6b1843a73595d78 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.annotationbrowserview/src/de/uniwue/mk/kall/athen/annotationbrowserview/ui/AnnotationBrowserView.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.annotationbrowserview/src/de/uniwue/mk/kall/athen/annotationbrowserview/ui/AnnotationBrowserView.java
@@ -1,14 +1,24 @@
 package de.uniwue.mk.kall.athen.annotationbrowserview.ui;
 
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.List;
+
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
 import javax.inject.Inject;
 
+import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.Type;
+import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.resource.ResourceConfigurationException;
+import org.apache.uima.resource.ResourceInitializationException;
+import org.apache.uima.ruta.engine.Ruta;
+import org.apache.uima.util.InvalidXMLException;
 import org.eclipse.e4.ui.di.Focus;
 import org.eclipse.e4.ui.di.Persist;
 import org.eclipse.e4.ui.model.application.ui.basic.MPart;
-import org.eclipse.e4.ui.workbench.lifecycle.PostContextCreate;
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.swt.custom.StyleRange;
 import org.eclipse.swt.layout.GridLayout;
@@ -27,8 +37,6 @@ import de.uniwue.mk.kall.editorPainting.paintingstrategies.specialized.JoniSegme
 public class AnnotationBrowserView extends AEditorSubordinateViewPart {
 
 	private AnnotationBrowserWidget widget;
-	
-	
 
 	@Inject
 	public AnnotationBrowserView() {
@@ -39,7 +47,6 @@ public class AnnotationBrowserView extends AEditorSubordinateViewPart {
 	public void postConstruct(Composite parent, MPart part) {
 		super.postConstruct(parent, part);
 		System.out.println("Construct Annotation Browser");
-		
 
 	}
 
@@ -59,7 +66,6 @@ public class AnnotationBrowserView extends AEditorSubordinateViewPart {
 	public void save() {
 		// nothing to save
 	}
-	
 
 	@Override
 	protected void initLayout(Composite composite) {
@@ -128,6 +134,9 @@ public class AnnotationBrowserView extends AEditorSubordinateViewPart {
 	@Override
 	public boolean initTypes() {
 
+
+		// hide all types
+		editor.allStylesInvisible();
 		// try to set default editor stylings to given annotations
 		Type typeDWHeadline = editor.getCas().getTypeSystem().getType("de.uniwue.dw.segmentation.Headline");
 		Type typeDWHeadlineCandidate = editor.getCas().getTypeSystem()
@@ -152,6 +161,8 @@ public class AnnotationBrowserView extends AEditorSubordinateViewPart {
 		return false;
 	}
 
+
+
 	private void setDefaultHistoricalDrawingStrategies() {
 
 		Type historicalSemnaticType = editor.getCas().getTypeSystem()
@@ -199,8 +210,6 @@ public class AnnotationBrowserView extends AEditorSubordinateViewPart {
 		}
 
 	}
-	
-
 
 	@Override
 	public void initModel() {
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.annotationbrowserwidget/src/de/uniwue/mk/kall/athen/annotationbrowserwidget/AnnotationBrowserWidget.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.annotationbrowserwidget/src/de/uniwue/mk/kall/athen/annotationbrowserwidget/AnnotationBrowserWidget.java
index ab7b1b11cf48fd86bc3ad160aa34c47b7ed611a6..426997f5732b45f2f9b566ddc54bec0fb8e37a90 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.annotationbrowserwidget/src/de/uniwue/mk/kall/athen/annotationbrowserwidget/AnnotationBrowserWidget.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.annotationbrowserwidget/src/de/uniwue/mk/kall/athen/annotationbrowserwidget/AnnotationBrowserWidget.java
@@ -1,12 +1,17 @@
 package de.uniwue.mk.kall.athen.annotationbrowserwidget;
 
+import java.io.IOException;
+import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.uima.cas.FSIndex;
+import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.Type;
-import org.apache.uima.cas.impl.AnnotationImpl;
 import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.resource.ResourceConfigurationException;
+import org.apache.uima.resource.ResourceInitializationException;
+import org.apache.uima.ruta.engine.Ruta;
+import org.apache.uima.util.InvalidXMLException;
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.IMenuListener;
 import org.eclipse.jface.action.IMenuManager;
@@ -15,17 +20,18 @@ import org.eclipse.jface.dialogs.InputDialog;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.ITreeSelection;
-import org.eclipse.jface.viewers.TreePath;
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.KeyAdapter;
 import org.eclipse.swt.events.KeyEvent;
 import org.eclipse.swt.events.MouseAdapter;
 import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Label;
@@ -48,9 +54,12 @@ public class AnnotationBrowserWidget extends Composite {
 	private Label labelSearchAnnotations;
 	private Label labelSearchFeatureValue;
 
+	private Button buttonApplyRUTA;
+
 	private Text textSearchTypes;
 	private Text textSearchAnnotations;
 	private Text textSearchFeatureValue;
+	private Text textApplyRUTA;
 
 	private AnnotationTextFilter textFilter;
 	private TreeViewerAlphabeticalSorter alphabeticalSorter;
@@ -115,8 +124,29 @@ public class AnnotationBrowserWidget extends Composite {
 			@Override
 			public void keyReleased(KeyEvent e) {
 				setFeatureFilterString(textSearchFeatureValue.getText());
-				viewer.refresh();
+				// the editor should not surpress any annotations by default
+				editor.deleteAllSurpressedAndReload(true);
+				// viewer.refresh();
+				viewer.setInput(editor);
+				editor.updateWidget();
+			}
+
+		});
 
+		buttonApplyRUTA = new Button(this, SWT.NONE);
+		buttonApplyRUTA.setText("Apply RUTA");
+
+		textApplyRUTA = new Text(this, SWT.NONE | SWT.BORDER);
+		textApplyRUTA.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_TITLE_BACKGROUND_GRADIENT));
+		textApplyRUTA.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL));
+		buttonApplyRUTA.addSelectionListener(new SelectionAdapter() {
+
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				String rutaRule = textApplyRUTA.getText();
+				if (rutaRule != null && rutaRule.trim().length() > 0) {
+					applyRuta(rutaRule);
+				}
 			}
 
 		});
@@ -248,6 +278,17 @@ public class AnnotationBrowserWidget extends Composite {
 					};
 					actionSetToModus.setText("Set to Modus");
 					menuMgr.add(actionSetToModus);
+
+					Action actionResetModus = new Action() {
+
+						@Override
+						public void run() {
+							editor.resetMode();
+							renewPage();
+						}
+					};
+					actionResetModus.setText("Reset Mode!");
+					menuMgr.add(actionResetModus);
 				}
 			}
 		});
@@ -325,10 +366,9 @@ public class AnnotationBrowserWidget extends Composite {
 					}
 
 				}
+				if (firstElement instanceof AnnotationFS) {
 
-				if (firstElement instanceof AnnotationImpl) {
-
-					AnnotationImpl anno = (AnnotationImpl) firstElement;
+					AnnotationFS anno = (AnnotationFS) firstElement;
 					editor.highlightRange(anno.getBegin(), anno.getEnd() - anno.getBegin(), true);
 				}
 
@@ -348,6 +388,7 @@ public class AnnotationBrowserWidget extends Composite {
 
 	private void addTreeMouseListener() {
 		viewer.getTree().addMouseListener(new MouseAdapter() {
+			
 
 			@Override
 			public void mouseDoubleClick(MouseEvent e) {
@@ -355,6 +396,15 @@ public class AnnotationBrowserWidget extends Composite {
 				IStructuredSelection sel = (IStructuredSelection) viewer.getSelection();
 
 				Object firstElement = sel.getFirstElement();
+				
+				if(firstElement instanceof TypeStyleDataStructure){
+					TypeStyleDataStructure tsds = (TypeStyleDataStructure) firstElement;
+					
+					if(editor.getActualSelectedText()!=null){
+						AnnotationFS fs = editor.getCas().createAnnotation(tsds.getAnnotationType(), editor.getActualSelectedText().x, editor.getActualSelectedText().y);
+						editor.addAnnotation(fs);
+					}
+				}
 
 				if (firstElement instanceof FeatureValueWrapper) {
 
@@ -412,7 +462,7 @@ public class AnnotationBrowserWidget extends Composite {
 	}
 
 	public void setNameFilterString(String filterString) {
-		this.textFilter.setSearchText(filterString,editor);
+		this.textFilter.setSearchText(filterString, editor);
 	}
 
 	public void setTypeFilterString(String filterString) {
@@ -420,10 +470,10 @@ public class AnnotationBrowserWidget extends Composite {
 	}
 
 	public void setFeatureFilterString(String filterString) {
-		this.annoFeatureFilter.setSearchText(filterString,editor);
-		
+		this.annoFeatureFilter.setSearchText(filterString, editor);
+
 		this.editor.updateWidget();
-		
+
 	}
 
 	public void renewPage() {
@@ -433,7 +483,6 @@ public class AnnotationBrowserWidget extends Composite {
 
 		Object[] expandedElements = viewer.getExpandedElements();
 		viewer.refresh();
-		
 
 		// TODO not working because the expanded element might be changed during
 		// this process and therefore cannot be expanded properly
@@ -489,4 +538,39 @@ public class AnnotationBrowserWidget extends Composite {
 			editor.removeAnnotation(toDelete.get(0));
 		}
 	}
+
+	private void applyRuta(String rule) {
+
+		// delete all eval annotation beforehand
+		List<AnnotationFS> evalAnnos = new ArrayList<>();
+		for (AnnotationFS a : editor.getCas()
+				.getAnnotationIndex(editor.getCas().getTypeSystem().getType("de.uniwue.medIE.Eval"))) {
+			evalAnnos.add(a);
+		}
+		for (AnnotationFS a : evalAnnos) {
+			editor.getCas().removeFsFromIndexes(a);
+		}
+		String[] elements = rule.split(" ");
+		try {
+			Ruta.apply(editor.getCas(), rule + "{->MARK(Eval,1," + elements.length + ")};");
+		} catch (AnalysisEngineProcessException | InvalidXMLException | ResourceInitializationException
+				| ResourceConfigurationException | IOException | URISyntaxException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+
+		// delete all ruta stuff
+		List<AnnotationFS> annos = new ArrayList<>();
+		for (AnnotationFS a : editor.getCas().getAnnotationIndex()) {
+			if (a.getType().getName().contains(".ruta.")) {
+				annos.add(a);
+			}
+		}
+
+		for (AnnotationFS a : annos) {
+			editor.getCas().removeFsFromIndexes(a);
+		}
+
+		viewer.setInput(editor);
+	}
 }
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.annotationbrowserwidget/src/de/uniwue/mk/kall/athen/annotationbrowserwidget/AnnotationFeatureFilter.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.annotationbrowserwidget/src/de/uniwue/mk/kall/athen/annotationbrowserwidget/AnnotationFeatureFilter.java
index 0a795bd73a4864a8fb6630b87f9ed0dbf0293fab..8e516b1a6ddd02a79bfcbab8b1cbcfbea6dda4a3 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.annotationbrowserwidget/src/de/uniwue/mk/kall/athen/annotationbrowserwidget/AnnotationFeatureFilter.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.annotationbrowserwidget/src/de/uniwue/mk/kall/athen/annotationbrowserwidget/AnnotationFeatureFilter.java
@@ -26,6 +26,7 @@ public class AnnotationFeatureFilter extends ViewerFilter {
 		if (!(element instanceof AnnotationFS))
 			return true;
 
+		// by default an annotation is visible
 		AnnotationFS p = (AnnotationFS) element;
 
 		if (searchString == null || searchString.length() == 0) {
@@ -60,7 +61,7 @@ public class AnnotationFeatureFilter extends ViewerFilter {
 
 				String featureValueAsString = p.getFeatureValueAsString(featureByBaseName);
 
-				if (featureValueAsString != null && !featureValueAsString.matches(".*" + split2[1] + ".*")) {
+				if (featureValueAsString != null && !featureValueAsString.matches(split2[1])) {
 					if (editor != null) {
 						editor.surpressAnnotation(p, true);
 					}
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.appDelegation/ressources/corefViewConfig.xml b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.appDelegation/ressources/corefViewConfig.xml
index d6e397b01bb383d99b12f3c25429480e0cdc58f9..3986278721cf23a450428a075051f9227726f3d7 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.appDelegation/ressources/corefViewConfig.xml
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.appDelegation/ressources/corefViewConfig.xml
@@ -1,71 +1,71 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<nappiPipelineConfiguration>
-    <engines>
-        <configurationParams>
-            <entry>
-                <key>PARAM_MODEL_LOCATION</key>
-                <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">http://ki.informatik.uni-wuerzburg.de/nappi/nappiOnlineRepository/models/openNLP/sentence/de-sent.bin</value>
-            </entry>
-        </configurationParams>
-        <engineClass>OpenNLPSentenceSplitter</engineClass>
-        <reader>false</reader>
-    </engines>
-    <engines>
-        <configurationParams>
-            <entry>
-                <key>PARAM_MODEL_LOCATION</key>
-                <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">http://ki.informatik.uni-wuerzburg.de/nappi/nappiOnlineRepository/models/openNLP/token/de-token.bin</value>
-            </entry>
-        </configurationParams>
-        <engineClass>OpenNLPTokenizer</engineClass>
-        <reader>false</reader>
-    </engines>
-    <engines>
-        <configurationParams>
-            <entry>
-                <key>PARAM_EXECUTABLE_LOCATION</key>
-                <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">http://ki.informatik.uni-wuerzburg.de/nappi/nappiOnlineRepository/executables/treetagger/bin/tree-tagger.exe</value>
-            </entry>
-            <entry>
-                <key>PARAM_MODEL_LOCATION</key>
-                <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">http://ki.informatik.uni-wuerzburg.de/nappi/nappiOnlineRepository/models/treetagger/pos/german-utf8.par</value>
-            </entry>
-        </configurationParams>
-        <engineClass>TreeTaggerLemmatizer</engineClass>
-        <reader>false</reader>
-    </engines>
-    <engines>
-        <configurationParams>
-            <entry>
-                <key>PARAM_EXECUTABLE_LOCATION</key>
-                <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">http://ki.informatik.uni-wuerzburg.de/nappi/nappiOnlineRepository/executables/treetagger/bin/tree-tagger.exe</value>
-            </entry>
-            <entry>
-                <key>PARAM_MODEL_LOCATION</key>
-                <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">http://ki.informatik.uni-wuerzburg.de/nappi/nappiOnlineRepository/models/treetagger/pos/german-utf8.par</value>
-            </entry>
-        </configurationParams>
-        <engineClass>TreeTaggerPOSTagger</engineClass>
-        <reader>false</reader>
-    </engines>
-    <engines>
-        <configurationParams>
-            <entry>
-                <key>PARAM_MODEL_LOCATION</key>
-                <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">http://ki.informatik.uni-wuerzburg.de/nappi/nappiOnlineRepository/models/rft/german-pc-64bit-utf8.par</value>
-            </entry>
-        </configurationParams>
-        <engineClass>RFTTagger</engineClass>
-        <reader>false</reader>
-    </engines>
-    <engines>
-        <configurationParams>
-            <entry>
-                <key>PARAM_MODEL_LOCATION</key>
-                <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">http://ki.informatik.uni-wuerzburg.de/nappi/nappiOnlineRepository/models/kallimachos/DROCTagger/nerAllModel.bin</value>
-            </entry>
-        </configurationParams>
-        <engineClass>DROCTagger</engineClass>
-        <reader>false</reader>
-    </engines>
-</nappiPipelineConfiguration>
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<nappiPipelineConfiguration>
+    <engines>
+        <configurationParams>
+            <entry>
+                <key>PARAM_MODEL_LOCATION</key>
+                <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">http://ki.informatik.uni-wuerzburg.de/nappi/nappiOnlineRepository/models/openNLP/sentence/de-sent.bin</value>
+            </entry>
+        </configurationParams>
+        <engineClass>OpenNLPSentenceSplitter</engineClass>
+        <reader>false</reader>
+    </engines>
+    <engines>
+        <configurationParams>
+            <entry>
+                <key>PARAM_MODEL_LOCATION</key>
+                <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">http://ki.informatik.uni-wuerzburg.de/nappi/nappiOnlineRepository/models/openNLP/token/de-token.bin</value>
+            </entry>
+        </configurationParams>
+        <engineClass>OpenNLPTokenizer</engineClass>
+        <reader>false</reader>
+    </engines>
+    <engines>
+        <configurationParams>
+            <entry>
+                <key>PARAM_EXECUTABLE_LOCATION</key>
+                <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">http://ki.informatik.uni-wuerzburg.de/nappi/nappiOnlineRepository/executables/treetagger/bin/tree-tagger.exe</value>
+            </entry>
+            <entry>
+                <key>PARAM_MODEL_LOCATION</key>
+                <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">http://ki.informatik.uni-wuerzburg.de/nappi/nappiOnlineRepository/models/treetagger/pos/german-utf8.par</value>
+            </entry>
+        </configurationParams>
+        <engineClass>TreeTaggerLemmatizer</engineClass>
+        <reader>false</reader>
+    </engines>
+    <engines>
+        <configurationParams>
+            <entry>
+                <key>PARAM_EXECUTABLE_LOCATION</key>
+                <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">http://ki.informatik.uni-wuerzburg.de/nappi/nappiOnlineRepository/executables/treetagger/bin/tree-tagger.exe</value>
+            </entry>
+            <entry>
+                <key>PARAM_MODEL_LOCATION</key>
+                <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">http://ki.informatik.uni-wuerzburg.de/nappi/nappiOnlineRepository/models/treetagger/pos/german-utf8.par</value>
+            </entry>
+        </configurationParams>
+        <engineClass>TreeTaggerPOSTagger</engineClass>
+        <reader>false</reader>
+    </engines>
+    <engines>
+        <configurationParams>
+            <entry>
+                <key>PARAM_MODEL_LOCATION</key>
+                <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">http://ki.informatik.uni-wuerzburg.de/nappi/nappiOnlineRepository/models/rft/german-pc-64bit-utf8.par</value>
+            </entry>
+        </configurationParams>
+        <engineClass>RFTTagger</engineClass>
+        <reader>false</reader>
+    </engines>
+    <engines>
+        <configurationParams>
+            <entry>
+                <key>PARAM_MODEL_LOCATION</key>
+                <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">http://ki.informatik.uni-wuerzburg.de/nappi/nappiOnlineRepository/models/kallimachos/DROCTagger/nerAllModel.bin</value>
+            </entry>
+        </configurationParams>
+        <engineClass>DROCTagger</engineClass>
+        <reader>false</reader>
+    </engines>
+</nappiPipelineConfiguration>
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.depparse.analyzer/src/de/uniwue/mk/kall/athen/depparse/analyzer/DependencyParseAnalyzer.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.depparse.analyzer/src/de/uniwue/mk/kall/athen/depparse/analyzer/DependencyParseAnalyzer.java
index aa0fcad6e6449384fdb2b39004942ec6ffd8e4bf..a38d2d693a11d4f52220aea63fda55d581fcb182 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.depparse.analyzer/src/de/uniwue/mk/kall/athen/depparse/analyzer/DependencyParseAnalyzer.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.depparse.analyzer/src/de/uniwue/mk/kall/athen/depparse/analyzer/DependencyParseAnalyzer.java
@@ -22,7 +22,6 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
 
 import de.uniwue.mk.athen.textwidget.struct.AnnoStyle;
-import de.uniwue.mk.athen.textwidget.struct.EditorLine;
 import de.uniwue.mk.kall.athen.widget.editor.EEditorEvent;
 import de.uniwue.mk.kall.editorPainting.paintingstrategies.specialized.DependencyDrawingStrategy;
 import de.uniwue.mkrug.kall.typesystemutil.Util_impl;
@@ -106,7 +105,6 @@ public class DependencyParseAnalyzer extends AEditorSubordinateTextWidgetAnalyze
 			}
 		}
 
-
 	}
 
 	@Override
@@ -191,8 +189,9 @@ public class DependencyParseAnalyzer extends AEditorSubordinateTextWidgetAnalyze
 		this.analyzerWidget.changeStyle(this.typeDepParseNewCAS, style2);
 
 		this.analyzerWidget.getWidget()
-		.setTopMargin(super.overlay.getClientArea().height
-				- analyzerWidget.getWidget().getEditorLines().get(0).getLineHeight()*2-10-DependencyDrawingStrategy.ANCHOR_HEIGHT);
+				.setTopMargin(super.overlay.getClientArea().height
+						- analyzerWidget.getWidget().getEditorLines().get(0).getLineHeight() * 2 - 10
+						- DependencyDrawingStrategy.ANCHOR_HEIGHT);
 
 		this.analyzerWidget.changeVisibility(this.typeDepParseNewCAS, true);
 		this.analyzerWidget.changeLayer(this.typeDepParseNewCAS, 0);
@@ -229,7 +228,7 @@ public class DependencyParseAnalyzer extends AEditorSubordinateTextWidgetAnalyze
 	private void onEditorMouseMoved(Object changedObject) {
 
 		Point p = (Point) changedObject;
-
+		p.x+=analyzerWidget.getWidget().getHorizontalBar().getSelection();
 		analyzerWidget.getWidget().setCursor(cursorStandard);
 
 		// now check if also in x range
@@ -240,8 +239,8 @@ public class DependencyParseAnalyzer extends AEditorSubordinateTextWidgetAnalyze
 		for (AnnotationFS dep : analyzerWidget.getCas().getAnnotationIndex(typeDepParseNewCAS)) {
 
 			Rectangle rectangle = analyzerWidget.getWidget().getTextBounds(dep.getBegin(), dep.getEnd() - 1);
-
 			Rectangle anchorArea = drawingStrategy.calculateAnchorArea(rectangle);
+		
 			if (anchorArea.contains(p)) {
 
 				boolean depChanged = false;
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.events/src/de/uniwue/mk/kall/athen/events/IAnnotationEditorEvents.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.events/src/de/uniwue/mk/kall/athen/events/IAnnotationEditorEvents.java
index 5befdb151485b0af66438848d3e89e17e81da56b..b41b8f4e02ba5afc125f5ff6345f9287cbf8a507 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.events/src/de/uniwue/mk/kall/athen/events/IAnnotationEditorEvents.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.events/src/de/uniwue/mk/kall/athen/events/IAnnotationEditorEvents.java
@@ -7,6 +7,8 @@ public interface IAnnotationEditorEvents {
 	public static final String RELOAD_PROJECTS = "RELOAD_PROJECTS_EVENT";
 
 	public static final String OPEN_XMI_REQUESTED = "OPEN_XMI_REQUESTED";
+	
+	public static final String OPEN_DOCUMENT_REQUESTED = "OPEN_DOCUMENT_REQUESTED";
 
 	public static final String EDITOR_INPUT_CHANGED = "EDITOR_INPUT_CHANGED";
 	
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.goldstandardAnalyzer/src/de/uniwue/mk/kall/athen/goldstandardAnalyzer/GoldstandardAnalyzer.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.goldstandardAnalyzer/src/de/uniwue/mk/kall/athen/goldstandardAnalyzer/GoldstandardAnalyzer.java
index d68e5b085818df0d9afe27ce894696cdbab231ae..2c90f16c1298f2b96c2866572c17fb5302b22bd3 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.goldstandardAnalyzer/src/de/uniwue/mk/kall/athen/goldstandardAnalyzer/GoldstandardAnalyzer.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.goldstandardAnalyzer/src/de/uniwue/mk/kall/athen/goldstandardAnalyzer/GoldstandardAnalyzer.java
@@ -49,44 +49,44 @@ import de.uniwue.mk.kall.athen.part.editor.annotations.UIMAInfo.VariableType;
 import de.uniwue.mk.kall.athen.part.editor.subordinate.AEditorSubordinateViewPart;
 
 public class GoldstandardAnalyzer extends AEditorSubordinateViewPart {
-	
+
 	private static final String TP = "de.uniwue.kalimachos.coref.type.TP";
 	private static final String FP = "de.uniwue.kalimachos.coref.type.FP";
 	private static final String FN = "de.uniwue.kalimachos.coref.type.FN";
 
 	// the reference to the UI
 	private GoldstandardAnalyzerWidget widget;
-		
+
 	// the mappings
 	List<GoldMappingConfig> mappings;
 	private Type currentSystemType;
 
 	private List<NAryTupel> content;
-	
+
 	private StyleRange styleRange;
-	
-	private Map <AnnotationFS, String> m = new HashMap<AnnotationFS, String>();
-	private Map <AnnotationFS, String> fpMap = new HashMap <AnnotationFS, String>();
-	private Map <AnnotationFS, String> fnMap = new HashMap<AnnotationFS, String>();
-	private Map <AnnotationFS, String> tpMap = new HashMap<AnnotationFS, String>();
 
-	private GoldstandardAnalyzerDrawingStrategy goldstandardAnalyzerDrawingStrategy = new GoldstandardAnalyzerDrawingStrategy(styleRange, m);
+	private Map<AnnotationFS, String> m = new HashMap<AnnotationFS, String>();
+	private Map<AnnotationFS, String> fpMap = new HashMap<AnnotationFS, String>();
+	private Map<AnnotationFS, String> fnMap = new HashMap<AnnotationFS, String>();
+	private Map<AnnotationFS, String> tpMap = new HashMap<AnnotationFS, String>();
+
+	private GoldstandardAnalyzerDrawingStrategy goldstandardAnalyzerDrawingStrategy = new GoldstandardAnalyzerDrawingStrategy(
+			styleRange, m);
 
-	
 	// UIMA Types, everything here will be injected by the annotation processor
 	@ATHENEditorDrawingInfo(mode = true, layer = 3)
 	@UIMAInfo(variableType = VariableType.TYPE, nameOrKey = TP)
 	private Type tpType;
-	
+
 	@ATHENEditorDrawingInfo(mode = true, layer = 2)
 	@UIMAInfo(variableType = VariableType.TYPE, nameOrKey = FP)
 	private Type fpType;
-	
+
 	@ATHENEditorDrawingInfo(mode = true, layer = 1)
 	@UIMAInfo(variableType = VariableType.TYPE, nameOrKey = FN)
 	private Type fnType;
 
-	private List<AnnotationFS> annoList;
+	// private List<AnnotationFS> annoList;
 
 	@PostConstruct
 	public void postConstruct(Composite parent, MPart part) {
@@ -214,49 +214,48 @@ public class GoldstandardAnalyzer extends AEditorSubordinateViewPart {
 
 	@Override
 	public boolean initTypes() {
-		
-		annoList = new ArrayList<AnnotationFS>();
-			
-		// process the annotations on the fields
-		AnnotationProcessor.processUIMAInfoAnnotations(this, editor.getCas());	
-		
+
 		// set everything unneeded invisible - editor should only display what
 		// is needed in this view
 		this.editor.allStylesInvisible();
-			
+		
+		// process the annotations on the fields
+		AnnotationProcessor.processUIMAInfoAnnotations(this, editor.getCas());
+
+
 		// layer
 		editor.changeLayer(tpType, 3);
 		editor.changeLayer(fpType, 2);
 		editor.changeLayer(fnType, 1);
-		
-		//true positive yellowgreen
+
+		// true positive yellowgreen
 		StyleRange rangeOv = new StyleRange();
-		rangeOv.background = new Color(Display.getCurrent(), 154,205,50);
+		rangeOv.background = new Color(Display.getCurrent(), 154, 205, 50);
 		AnnoStyle tpStyle = new AnnoStyle(new GoldstandardAnalyzerDrawingStrategy(rangeOv, m), rangeOv);
-		
+
 		editor.changeStyle(tpType, tpStyle);
 		editor.changeVisibility(tpType, true);
 		editor.setActiveMode(tpType);
-		
-		
-		//false positive firebrick
+
+		// false positive firebrick
 		StyleRange rangeOv1 = new StyleRange();
-		rangeOv1.background = new Color(Display.getCurrent(), 178,34,34);
+		rangeOv1.background = new Color(Display.getCurrent(), 178, 34, 34);
 		AnnoStyle fpStyle = new AnnoStyle(new GoldstandardAnalyzerDrawingStrategy(rangeOv1, m), rangeOv1);
-		
+
 		editor.changeStyle(fpType, fpStyle);
 		editor.changeVisibility(fpType, true);
 		editor.setActiveMode(fpType);
-		
-		//false negative firebrick
+
+		// false negative firebrick
 		StyleRange rangeOv2 = new StyleRange();
-		rangeOv2.background = new Color(Display.getCurrent(), 178,34,34);
-		AnnoStyle fnStyle = new AnnoStyle(new GoldstandardAnalyzerDrawingStrategy(rangeOv2, m), rangeOv2);;
-		
+		rangeOv2.background = new Color(Display.getCurrent(), 178, 34, 34);
+		AnnoStyle fnStyle = new AnnoStyle(new GoldstandardAnalyzerDrawingStrategy(rangeOv2, m), rangeOv2);
+		;
+
 		editor.changeStyle(fnType, fnStyle);
 		editor.changeVisibility(fnType, true);
 		editor.setActiveMode(fnType);
-		
+
 		return false;
 	}
 
@@ -290,47 +289,55 @@ public class GoldstandardAnalyzer extends AEditorSubordinateViewPart {
 		}
 
 	}
-	
+
 	private void deleteAnnotations(AnnotationFS... annos) {
 		List<AnnotationFS> toDelete = new ArrayList<>();
-		
+
 		toDelete.addAll(Arrays.asList(annos));
-		
+
 		editor.removeAnnotations(toDelete);
-		
-		for (AnnotationFS anno : toDelete)
-		{
-			editor.getCas().removeFsFromIndexes(anno);
-		}
+
+		// for (AnnotationFS anno : toDelete) {
+		// editor.getCas().removeFsFromIndexes(anno);
+		// }
 	}
-	
-	
-	public void deleteAnnotations(List<AnnotationFS> annoList) {	
+
+	public void deleteAnnotations() {
 		
+		//reset maps
+		this.fnMap.clear();
+		this.fpMap.clear();
+		this.tpMap.clear();
+
+		List<AnnotationFS> annoList = new ArrayList<>();
 		AnnotationIndex<AnnotationFS> annotationIndex = editor.getCas().getAnnotationIndex(tpType);
 		FSIterator<AnnotationFS> iterator = annotationIndex.iterator();
 		while (iterator.hasNext()) {
 			annoList.add((AnnotationFS) iterator.next());
 		}
-		
+
 		AnnotationIndex<AnnotationFS> annotationIndex1 = editor.getCas().getAnnotationIndex(fpType);
 		FSIterator<AnnotationFS> iterator1 = annotationIndex1.iterator();
 		while (iterator1.hasNext()) {
 			annoList.add((AnnotationFS) iterator1.next());
 		}
-		
+
 		AnnotationIndex<AnnotationFS> annotationIndex2 = editor.getCas().getAnnotationIndex(fnType);
 		FSIterator<AnnotationFS> iterator2 = annotationIndex2.iterator();
 		while (iterator2.hasNext()) {
 			annoList.add((AnnotationFS) iterator2.next());
 		}
-		deleteAnnotations(annoList.toArray(new AnnotationFS[0]));
+		for (AnnotationFS a : annoList) {
+			editor.getCas().removeFsFromIndexes(a);
+		}
+		editor.updateWidget();
+		// deleteAnnotations(annoList.toArray(new AnnotationFS[0]));
 	}
-	
+
 	public void compareTypes() {
-		
-		deleteAnnotations(annoList);
-		
+
+		deleteAnnotations();
+
 		content = mappingsToContent(mappings);
 		widget.refresh(content);
 		if (!content.isEmpty()) {
@@ -342,50 +349,51 @@ public class GoldstandardAnalyzer extends AEditorSubordinateViewPart {
 			EvaluationStruct evalStruct = calculateEvalStruct(content);
 			widget.updateScores(evalStruct);
 		}
-			
-		for (NAryTupel tupel : content){
-			if (tupel.getElementAt(0) == null){
+
+		for (NAryTupel tupel : content) {
+			if (tupel.getElementAt(0) == null) {
 				createFalsePositive(tupel);
 			}
-			
-			else if (tupel.getElementAt(0) != null){
+
+			else if (tupel.getElementAt(0) != null) {
 				createFalseNegativeOrTruePositive(tupel);
 			}
 		}
 	}
-	
-	public void createFalsePositive(NAryTupel t){
-		for (int k = 1; k < t.getTupelDimension(); k++){
-			if (t.getElementAt(k) != null){
-				AnnotationFS fpAnnotation = editor.getCas().createAnnotation(fpType, t.getElementAt(k).getBegin(), t.getElementAt(k).getEnd());
-				//annoList.add(fpAnnotation);
+
+	public void createFalsePositive(NAryTupel t) {
+		for (int k = 1; k < t.getTupelDimension(); k++) {
+			if (t.getElementAt(k) != null) {
+				AnnotationFS fpAnnotation = editor.getCas().createAnnotation(fpType, t.getElementAt(k).getBegin(),
+						t.getElementAt(k).getEnd());
+				// annoList.add(fpAnnotation);
 				String s = "Annotator" + k;
 				fpMap.put(fpAnnotation, s);
 			}
 		}
 		createMap();
 	}
-	
-	public void createFalseNegativeOrTruePositive(NAryTupel t){
+
+	public void createFalseNegativeOrTruePositive(NAryTupel t) {
 		int counter = 0;
-		for (int l = 1; l < t.getTupelDimension(); l++){
-			if (t.getElementAt(l) != null){
+		for (int l = 1; l < t.getTupelDimension(); l++) {
+			if (t.getElementAt(l) != null) {
 				counter++;
-			} 
-		}	
-		if (counter == t.getTupelDimension()-1){
-			createTruePositive(t);
+			}
 		}
-		else{
+		if (counter == t.getTupelDimension() - 1) {
+			createTruePositive(t);
+		} else {
 			createFalseNegative(t);
 		}
 	}
-	
-	public void createFalseNegative(NAryTupel t){
-		for (int k = 0; k < t.getTupelDimension(); k++){
-			if (t.getElementAt(k) != null){
-				AnnotationFS fnAnnotation = editor.getCas().createAnnotation(fnType, t.getElementAt(k).getBegin(), t.getElementAt(k).getEnd());
-				//annoList.add(fnAnnotation);
+
+	public void createFalseNegative(NAryTupel t) {
+		for (int k = 0; k < t.getTupelDimension(); k++) {
+			if (t.getElementAt(k) != null) {
+				AnnotationFS fnAnnotation = editor.getCas().createAnnotation(fnType, t.getElementAt(k).getBegin(),
+						t.getElementAt(k).getEnd());
+				// annoList.add(fnAnnotation);
 				String s = "Annotator" + k;
 				fnMap.put(fnAnnotation, s);
 			}
@@ -393,26 +401,29 @@ public class GoldstandardAnalyzer extends AEditorSubordinateViewPart {
 		createMap();
 	}
 
-	
-	public void createTruePositive(NAryTupel t){
-		AnnotationFS tpAnnotation = editor.getCas().createAnnotation(tpType, t.getElementAt(0).getBegin(), t.getElementAt(0).getEnd());
-		//annoList.add(tpAnnotation);
+	public void createTruePositive(NAryTupel t) {
+		AnnotationFS tpAnnotation = editor.getCas().createAnnotation(tpType, t.getElementAt(0).getBegin(),
+				t.getElementAt(0).getEnd());
+		// annoList.add(tpAnnotation);
 		String s = "Annotator" + "tp";
 		tpMap.put(tpAnnotation, s);
 		createMap();
 	}
-	
-	
-	public void createMap()
-	{
+
+	public void createMap() {
+		this.m = new HashMap<>();
 		m.putAll(tpMap);
 		m.putAll(fpMap);
 		m.putAll(fnMap);
-		
+
 		goldstandardAnalyzerDrawingStrategy.updateAnnotations(m);
-		
+
 		for (AnnotationFS anno : m.keySet()) {
-			editor.getCas().addFsToIndexes(anno);
+			if (anno != null || !(anno instanceof AnnotationFS)) {
+				editor.getCas().addFsToIndexes(anno);
+			} else {
+				System.out.println("How can this even happen! A null annotation!");
+			}
 		}
 		editor.updateWidget();
 	}
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.goldstandardAnalyzer/src/de/uniwue/mk/kall/athen/goldstandardAnalyzer/struct/NAryTupel.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.goldstandardAnalyzer/src/de/uniwue/mk/kall/athen/goldstandardAnalyzer/struct/NAryTupel.java
index d69970a65bd421d4030d46a14f7b21c0794c5cc1..cf29847da55c1fd07bf2adfc12318a0c9a50dfdc 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.goldstandardAnalyzer/src/de/uniwue/mk/kall/athen/goldstandardAnalyzer/struct/NAryTupel.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.goldstandardAnalyzer/src/de/uniwue/mk/kall/athen/goldstandardAnalyzer/struct/NAryTupel.java
@@ -65,6 +65,7 @@ public class NAryTupel implements Iterable<AnnotationFS> {
 	public void insert(AnnotationFS anno) {
 
 		if (anno != null) {
+			//TODO this cannot deal with comparisons of the same type
 			Integer integer = typeToIndexMap.get(anno.getType());
 			tupelEntries.set(integer, anno);
 		}
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.goldstandardAnalyzer/src/de/uniwue/mk/kall/athen/goldstandardAnalyzer/ui/GoldstandardAnalyzerDrawingStrategy.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.goldstandardAnalyzer/src/de/uniwue/mk/kall/athen/goldstandardAnalyzer/ui/GoldstandardAnalyzerDrawingStrategy.java
index af3aff5d08cd7aecac4baf4e71e3df0c88ac89b0..ea39e42ffb040c332dd9d29436e2e382ee6980ba 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.goldstandardAnalyzer/src/de/uniwue/mk/kall/athen/goldstandardAnalyzer/ui/GoldstandardAnalyzerDrawingStrategy.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.goldstandardAnalyzer/src/de/uniwue/mk/kall/athen/goldstandardAnalyzer/ui/GoldstandardAnalyzerDrawingStrategy.java
@@ -53,6 +53,9 @@ public class GoldstandardAnalyzerDrawingStrategy implements IAnnotationDrawingSt
 		if (m.containsKey(anno));
 		{
 			annotator = m.get(anno);
+			if(annotator==null){
+				return;
+			}
 			if (annotator.equals("Annotatortp")){
 				gc.setBackground(yellowgreen);				
 			} else if (annotator.equals("Annotator0")){
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.goldstandardAnalyzer/src/de/uniwue/mk/kall/athen/goldstandardAnalyzer/util/AnnotationComparisonUtil.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.goldstandardAnalyzer/src/de/uniwue/mk/kall/athen/goldstandardAnalyzer/util/AnnotationComparisonUtil.java
index cb71217bbfdce59a46a81afd637c591c58686d74..b6cadc1083e05b83abb70f9f0a4ab1932814df81 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.goldstandardAnalyzer/src/de/uniwue/mk/kall/athen/goldstandardAnalyzer/util/AnnotationComparisonUtil.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.goldstandardAnalyzer/src/de/uniwue/mk/kall/athen/goldstandardAnalyzer/util/AnnotationComparisonUtil.java
@@ -43,6 +43,8 @@ public class AnnotationComparisonUtil {
 		/*
 		 * Check Gold Annotations
 		 */
+		System.out.println(goldList.size());
+		System.out.println(systemRemaining.size());
 		goldList.forEach(goldAnno -> {
 			AnnotationFS foundAnno = null;
 			for (AnnotationFS systemAnno : systemRemaining) {
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.goldstandardAnalyzer/src/de/uniwue/mk/kall/athen/goldstandardAnalyzer/widgets/GoldStandardTreeTableComposite.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.goldstandardAnalyzer/src/de/uniwue/mk/kall/athen/goldstandardAnalyzer/widgets/GoldStandardTreeTableComposite.java
index 9c5690bcab6de4fa9416d7e33ebaaac1665264a6..39dc05c0b5154029f722e7e9bbd0698f63274e08 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.goldstandardAnalyzer/src/de/uniwue/mk/kall/athen/goldstandardAnalyzer/widgets/GoldStandardTreeTableComposite.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.goldstandardAnalyzer/src/de/uniwue/mk/kall/athen/goldstandardAnalyzer/widgets/GoldStandardTreeTableComposite.java
@@ -112,6 +112,8 @@ public class GoldStandardTreeTableComposite extends Composite {
 
 	public void refresh(List<NAryTupel> content) {
 
+		if (content == null)
+			return;
 		createTreeTable(content);
 
 		addTreeTableSelectionListener();
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/.classpath b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/.classpath
index 54f561c7dfd66e1778155ba69fce0d990c2b6918..1ded221ff6d7925bd4465d9aff680db5db445c90 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/.classpath
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/.classpath
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
+	<classpathentry exported="true" kind="lib" path="libs/de.uniwue.mk.nappi.core-0.0.1-SNAPSHOT-jar-with-dependencies.jar"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="src" path="src"/>
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/META-INF/MANIFEST.MF b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/META-INF/MANIFEST.MF
index a866f11d3c5b3b022fe61e5a7779671e08e4402a..7a0b862b995863fa30c2c45ec8c3a7428716422e 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/META-INF/MANIFEST.MF
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/META-INF/MANIFEST.MF
@@ -1,32 +1,33 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Editor
-Bundle-SymbolicName: de.uniwue.mk.kall.athen.part.editor
-Bundle-Version: 1.0.0.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Export-Package: de.uniwue.mk.kall.athen.part.editor,
- de.uniwue.mk.kall.athen.part.editor.annotations,
- de.uniwue.mk.kall.athen.part.editor.dialog,
- de.uniwue.mk.kall.athen.part.editor.subordinate,
- de.uniwue.mk.kall.athen.part.editor.util,
- de.uniwue.mk.kall.athen.widget.editor
-Require-Bundle: de.uniwue.mk.kall.editorPainting,
- org.eclipse.core.runtime,
- org.eclipse.e4.ui.model.workbench,
- org.eclipse.jface,
- org.eclipse.e4.ui.workbench,
- org.eclipse.e4.ui.di,
- org.eclipse.core.runtime,
- org.eclipse.e4.ui.model.workbench,
- org.eclipse.jface,
- org.eclipse.e4.ui.workbench,
- org.eclipse.e4.ui.di,
- javax.annotation,
- org.eclipse.e4.core.services,
- org.eclipse.osgi.services,
- org.eclipse.jface.text,
- de.uniwue.mk.kall.athen.events,
- de.uniwue.mk.kall.athen.appDelegation,
- de.uniwue.mkrug.kall.typesystemUtil,
- de.uniwue.mk.athen.textwidget
-Bundle-ClassPath: .
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Editor
+Bundle-SymbolicName: de.uniwue.mk.kall.athen.part.editor
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: de.uniwue.mk.kall.athen.part.editor,
+ de.uniwue.mk.kall.athen.part.editor.annotations,
+ de.uniwue.mk.kall.athen.part.editor.dialog,
+ de.uniwue.mk.kall.athen.part.editor.subordinate,
+ de.uniwue.mk.kall.athen.part.editor.util,
+ de.uniwue.mk.kall.athen.widget.editor
+Require-Bundle: de.uniwue.mk.kall.editorPainting,
+ org.eclipse.core.runtime,
+ org.eclipse.e4.ui.model.workbench,
+ org.eclipse.jface,
+ org.eclipse.e4.ui.workbench,
+ org.eclipse.e4.ui.di,
+ org.eclipse.core.runtime,
+ org.eclipse.e4.ui.model.workbench,
+ org.eclipse.jface,
+ org.eclipse.e4.ui.workbench,
+ org.eclipse.e4.ui.di,
+ javax.annotation,
+ org.eclipse.e4.core.services,
+ org.eclipse.osgi.services,
+ org.eclipse.jface.text,
+ de.uniwue.mk.kall.athen.events,
+ de.uniwue.mk.kall.athen.appDelegation,
+ de.uniwue.mkrug.kall.typesystemUtil,
+ de.uniwue.mk.athen.textwidget
+Bundle-ClassPath: .,
+ libs/de.uniwue.mk.nappi.core-0.0.1-SNAPSHOT-jar-with-dependencies.jar
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/build.properties b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/build.properties
index 41eb6ade2b4f20b43023591aff3c2d34c4d95883..9e3bcda328615d620fbc8ea8bd09db3a8e3aa44c 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/build.properties
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/build.properties
@@ -1,4 +1,5 @@
 source.. = src/
 output.. = bin/
 bin.includes = META-INF/,\
-               .
+               .,\
+               libs/de.uniwue.mk.nappi.core-0.0.1-SNAPSHOT-jar-with-dependencies.jar
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/libs/de.uniwue.mk.nappi.core-0.0.1-SNAPSHOT-jar-with-dependencies.jar b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/libs/de.uniwue.mk.nappi.core-0.0.1-SNAPSHOT-jar-with-dependencies.jar
new file mode 100644
index 0000000000000000000000000000000000000000..3a2e86491fa1f21650fea78de6ba00379dc5813b
Binary files /dev/null and b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/libs/de.uniwue.mk.nappi.core-0.0.1-SNAPSHOT-jar-with-dependencies.jar differ
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/src/de/uniwue/mk/kall/athen/part/editor/MainCharacterFilter.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/src/de/uniwue/mk/kall/athen/part/editor/MainCharacterFilter.java
new file mode 100644
index 0000000000000000000000000000000000000000..9b56638184dced76fabc47a7131fd25d0eadd763
--- /dev/null
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/src/de/uniwue/mk/kall/athen/part/editor/MainCharacterFilter.java
@@ -0,0 +1,36 @@
+package de.uniwue.mk.kall.athen.part.editor;
+
+import org.apache.uima.cas.Feature;
+import org.apache.uima.cas.text.AnnotationFS;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+
+public class MainCharacterFilter extends ViewerFilter {
+
+	private boolean isActive = false;
+
+	public void setActive(boolean active) {
+		this.isActive = active;
+	}
+
+	public boolean getActive() {
+		return this.isActive;
+	}
+
+	@Override
+	public boolean select(Viewer viewer, Object parentElement, Object element) {
+
+		if (!isActive)
+			return true;
+		AnnotationFS p = (AnnotationFS) element;
+		Feature isImp = p.getType().getFeatureByBaseName("IsImportant");
+		if (isImp != null) {
+			String value = p.getFeatureValueAsString(isImp);
+			if (value != null && value.equals("true")) {
+				return true;
+			}
+		}
+
+		return false;
+	}
+}
\ No newline at end of file
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/src/de/uniwue/mk/kall/athen/part/editor/dialog/SearchDialog.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/src/de/uniwue/mk/kall/athen/part/editor/dialog/SearchDialog.java
index 18175d022d072487279ed9d1ce86aa00175025ac..2eda99b66c3ff5dbb145f6817e52d2734497356f 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/src/de/uniwue/mk/kall/athen/part/editor/dialog/SearchDialog.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/src/de/uniwue/mk/kall/athen/part/editor/dialog/SearchDialog.java
@@ -57,7 +57,7 @@ public class SearchDialog {
 	 * @param parent
 	 *            Shell The shell that is the parent of the dialog.
 	 */
-	public SearchDialog(Shell parent, String selectedText) {
+	public SearchDialog(Shell parent) {
 		shell = new Shell(parent, SWT.CLOSE | SWT.BORDER | SWT.TITLE);
 		GridLayout layout = new GridLayout();
 
@@ -77,7 +77,6 @@ public class SearchDialog {
 		GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
 		gridData.widthHint = 200;
 		searchText.setLayoutData(gridData);
-		searchText.setText(selectedText);
 		searchText.addModifyListener(new ModifyListener() {
 			public void modifyText(ModifyEvent e) {
 				boolean enableFind = searchText.getCharCount() != 0;
@@ -166,6 +165,14 @@ public class SearchDialog {
 		findHandler = listener;
 	}
 
+	public void hide() {
+		this.shell.setVisible(false);
+	}
+
+	public void show() {
+		this.shell.setVisible(true);
+	}
+
 	public boolean getMatchCase() {
 		return matchCase.getSelection();
 	}
@@ -205,6 +212,10 @@ public class SearchDialog {
 	public void removeFindListener(FindListener listener) {
 		findHandler = null;
 	}
+	
+	public void putFocus(){
+		searchText.setFocus();
+	}
 
 	public void setMatchCase(boolean match) {
 		matchCase.setSelection(match);
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/src/de/uniwue/mk/kall/athen/part/editor/dialog/StyleChangingDialog.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/src/de/uniwue/mk/kall/athen/part/editor/dialog/StyleChangingDialog.java
index 8c74b6101cbd39fb344e8c2ba21f6fb96b9d655e..7597f3ddb53ea454b5d987c3034f4b9058c722e3 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/src/de/uniwue/mk/kall/athen/part/editor/dialog/StyleChangingDialog.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/src/de/uniwue/mk/kall/athen/part/editor/dialog/StyleChangingDialog.java
@@ -21,6 +21,7 @@ import de.uniwue.mk.athen.textwidget.drawingstrategies.IAnnotationDrawingStrateg
 import de.uniwue.mk.athen.textwidget.struct.TypeStyleDataStructure;
 import de.uniwue.mk.kall.athen.widget.editor.AnnotationEditorWidget;
 import de.uniwue.mk.kall.drawingstrategies.generic.DrawingTypeStrategyFactory;
+import de.uniwue.mk.kall.drawingstrategies.generic.GenericDrawingStrategy;
 import de.uniwue.mk.kall.drawingstrategies.generic.struct.EDrawingType;
 
 public class StyleChangingDialog extends Dialog {
@@ -104,8 +105,14 @@ public class StyleChangingDialog extends Dialog {
 					Color color = new Color(parent.getDisplay(), rgb);
 					colorLabel.setBackground(color);
 
+					// TODO this is never read!
 					// update TSDS
 					tsds.getStyle().getStyle().background = color;
+					IAnnotationDrawingStrategy drawingStrategy = tsds.getStyle().getDrawingStrategy();
+					if (drawingStrategy != null && drawingStrategy instanceof GenericDrawingStrategy) {
+						GenericDrawingStrategy gds = (GenericDrawingStrategy) drawingStrategy;
+						gds.changeColor(color, color);
+					}
 
 					// inform listener
 					editor.styleChanged(tsds);
@@ -144,9 +151,14 @@ public class StyleChangingDialog extends Dialog {
 			@Override
 			public void widgetSelected(SelectionEvent e) {
 				// BackgroundStyle
+				Color foreGround = tsds.getStyle().getStyle().foreground;
+				if (foreGround == null) {
+					// use the background
+					foreGround = tsds.getStyle().getStyle().background;
+				}
 				if (e.getSource().toString().contains(String.valueOf(EPaintingStyles.BACKGROUND))) {
 					IAnnotationDrawingStrategy strat = DrawingTypeStrategyFactory.getNaiveSpanDrawingStrategy(
-							tsds.getAnnotationType(), tsds.getStyle().getStyle().foreground.getRGBA(),
+							tsds.getAnnotationType(), foreGround != null ? foreGround.getRGBA() : null,
 							tsds.getStyle().getStyle().background.getRGBA(), EDrawingType.RECTANGLE_FILLED);
 					tsds.getStyle().setDrawingStrategy(strat);
 
@@ -155,26 +167,28 @@ public class StyleChangingDialog extends Dialog {
 				else if (e.getSource().toString().contains(String.valueOf(EPaintingStyles.UNDERLINE))) {
 
 					IAnnotationDrawingStrategy drawingStrat = DrawingTypeStrategyFactory.getNaiveSpanDrawingStrategy(
-							tsds.getAnnotationType(), tsds.getStyle().getStyle().foreground.getRGBA(),
+							tsds.getAnnotationType(), foreGround != null ? foreGround.getRGBA() : null,
 							tsds.getStyle().getStyle().background.getRGBA(), EDrawingType.UNDERLINED);
 					tsds.getStyle().setDrawingStrategy(drawingStrat);
 				}
 
 				else if (e.getSource().toString().contains(String.valueOf(EPaintingStyles.BRACKET))) {
 					IAnnotationDrawingStrategy strat = DrawingTypeStrategyFactory.getNaiveSpanDrawingStrategy(
-							tsds.getAnnotationType(), tsds.getStyle().getStyle().foreground.getRGBA(),
+							tsds.getAnnotationType(), foreGround != null ? foreGround.getRGBA() : null,
 							tsds.getStyle().getStyle().background.getRGBA(), EDrawingType.BRACKET);
 					tsds.getStyle().setDrawingStrategy(strat);
 				}
 
 				else if (e.getSource().toString().contains(String.valueOf(EPaintingStyles.BOX))) {
+					System.out.println(tsds.getAnnotationType().getName());
+					System.out.println(tsds.getStyle().getStyle().background);
+					System.out.println(tsds.getStyle().getStyle().foreground);
 					IAnnotationDrawingStrategy strat = DrawingTypeStrategyFactory.getNaiveSpanDrawingStrategy(
-							tsds.getAnnotationType(), tsds.getStyle().getStyle().foreground.getRGBA(),
+							tsds.getAnnotationType(), foreGround != null ? foreGround.getRGBA() : null,
 							tsds.getStyle().getStyle().background.getRGBA(), EDrawingType.RECTANGLE_BORDER);
 					tsds.getStyle().setDrawingStrategy(strat);
 				}
 
-
 				// Inform listener
 				editor.styleChanged(tsds);
 			}
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/src/de/uniwue/mk/kall/athen/widget/editor/AnnotationEditorPart.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/src/de/uniwue/mk/kall/athen/widget/editor/AnnotationEditorPart.java
index 51437c2c481f88927c57640e06c861b92fd54776..2110699a360e25ad5cacf4075923f1a6b46ce9f0 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/src/de/uniwue/mk/kall/athen/widget/editor/AnnotationEditorPart.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/src/de/uniwue/mk/kall/athen/widget/editor/AnnotationEditorPart.java
@@ -11,7 +11,6 @@ import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
 import org.eclipse.e4.ui.workbench.modeling.EModelService;
 import org.eclipse.e4.ui.workbench.modeling.EPartService;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.widgets.Composite;
 import org.osgi.service.event.Event;
 import org.osgi.service.event.EventHandler;
@@ -19,7 +18,6 @@ import org.osgi.service.event.EventHandler;
 import de.uniwue.mk.athen.textwidget.struct.CASEditorInput;
 import de.uniwue.mk.kall.athen.appDelegation.hierarchie.IPerspectiveDecoupledPart;
 import de.uniwue.mk.kall.athen.appDelegation.ui.MasterPart;
-import de.uniwue.mk.kall.athen.appDelegation.util.ApplicationUtil;
 import de.uniwue.mk.kall.athen.events.IAnnotationEditorEvents;
 import de.uniwue.mk.kall.athen.part.editor.DeserializeXMIHandler;
 import de.uniwue.mk.kall.athen.part.editor.subordinate.AEditorSubordinateViewPart;
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/src/de/uniwue/mk/kall/athen/widget/editor/AnnotationEditorWidget.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/src/de/uniwue/mk/kall/athen/widget/editor/AnnotationEditorWidget.java
index 4efd8ff41203c40a46253669a9e8efdfdafee00c..d2c63170affa8029158da56e5d89ed7d39486f62 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/src/de/uniwue/mk/kall/athen/widget/editor/AnnotationEditorWidget.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.part.editor/src/de/uniwue/mk/kall/athen/widget/editor/AnnotationEditorWidget.java
@@ -1,11 +1,11 @@
 package de.uniwue.mk.kall.athen.widget.editor;
 
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.StandardCopyOption;
+import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -19,12 +19,15 @@ import org.apache.uima.cas.Type;
 import org.apache.uima.cas.TypeSystem;
 import org.apache.uima.cas.impl.XmiCasSerializer;
 import org.apache.uima.cas.text.AnnotationFS;
+import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.IMenuListener;
 import org.eclipse.jface.action.IMenuManager;
 import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.action.Separator;
 import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.jface.window.Window;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.StyleRange;
@@ -53,6 +56,7 @@ import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.FileDialog;
 import org.eclipse.swt.widgets.FontDialog;
 import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.MenuItem;
@@ -89,6 +93,7 @@ import de.uniwue.mk.kall.drawingstrategies.generic.struct.ERenderingPosition;
 import de.uniwue.mk.kall.drawingstrategies.generic.struct.FeatureDrawingStrategy;
 import de.uniwue.mk.kall.drawingstrategies.generic.struct.FeatureValueDrawingStategy;
 import de.uniwue.mk.kall.drawingstrategies.generic.struct.TypeDrawingStrategy;
+import de.uniwue.mk.nappi.core.NappiUtil;
 
 public class AnnotationEditorWidget extends Composite {
 
@@ -127,6 +132,7 @@ public class AnnotationEditorWidget extends Composite {
 	private StyleDataStructure styleStruct;
 
 	private TypeSystem typeSystem;
+	private SearchDialog sd;
 
 	protected boolean mousedrag;
 	private boolean isDirty;
@@ -139,6 +145,7 @@ public class AnnotationEditorWidget extends Composite {
 	private Type activeModeType;
 
 	private int styleBits;
+	private File currentNappiConfig;
 
 	public AnnotationEditorWidget(Composite parent, int style) {
 		super(parent, SWT.NONE);
@@ -149,38 +156,56 @@ public class AnnotationEditorWidget extends Composite {
 		surpressedAnnos = new ArrayList<AnnotationFS>();
 
 		editorListener = new HashMap<EEditorEvent, List<IAnnotationEditorListener>>();
-		
+
 		addDropListener();
 
 	}
 
 	private void addDropListener() {
 		// enable each label to be a drop target
-        DropTarget target = new DropTarget(this, DND.DROP_NONE);
-        target.setTransfer(new Transfer[] { FileTransfer.getInstance() }); // varargs are not yet supported see https://git.eclipse.org/r/#/c/92236         // add a drop listener
-        target.addDropListener(new DropTargetAdapter() {
-			
-			
+		DropTarget target = new DropTarget(this, DND.DROP_NONE);
+		target.setTransfer(new Transfer[] { FileTransfer.getInstance() }); // varargs
+																			// are
+																			// not
+																			// yet
+																			// supported
+																			// see
+																			// https://git.eclipse.org/r/#/c/92236
+																			// //
+																			// add
+																			// a
+																			// drop
+																			// listener
+		target.addDropListener(new DropTargetAdapter() {
+
 			@Override
 			public void drop(DropTargetEvent event) {
-				
-				if(FileTransfer.getInstance().isSupportedType(event.currentDataType)){
-					
-					//retrieve all files
-					if(event.data instanceof String[]){
+
+				if (FileTransfer.getInstance().isSupportedType(event.currentDataType)) {
+
+					// retrieve all files
+					if (event.data instanceof String[]) {
 						String[] fileNames = (String[]) event.data;
-						
-						if(fileNames.length>0){
-							//open the first document
-							if(fileNames[0].endsWith(".xmi")){
-								MasterPart.getBroker().send(IAnnotationEditorEvents.OPEN_XMI_REQUESTED,new File(fileNames[0]) );
+
+						if (fileNames.length > 0) {
+							// open the first document
+							if (fileNames[0].endsWith(".xmi")) {
+								MasterPart.getBroker().send(IAnnotationEditorEvents.OPEN_XMI_REQUESTED,
+										new File(fileNames[0]));
+							}
+
+							else {
+								// fire an event that starts the opening of
+								// remaining annotations
+								MasterPart.getBroker().send(IAnnotationEditorEvents.OPEN_DOCUMENT_REQUESTED,
+										new File(fileNames[0]));
 							}
 						}
 					}
 				}
-				
+
 			}
-			
+
 		});
 	}
 
@@ -212,7 +237,14 @@ public class AnnotationEditorWidget extends Composite {
 		else {
 			this.surpressedAnnos.remove(anno);
 		}
-		
+
+	}
+
+	public void deleteAllSurpressedAndReload(boolean reload) {
+		this.surpressedAnnos.clear();
+		if (reload) {
+			this.updateWidget();
+		}
 	}
 
 	public void setInput(CASEditorInput input) {
@@ -237,6 +269,11 @@ public class AnnotationEditorWidget extends Composite {
 				visibleTypesOld.clear();
 			}
 		}
+		
+		//update search dialog
+		if(sd!=null){
+			sd.addFindListener(new EditorFindHandler(getWidget(), sd, AnnotationEditorWidget.this));
+		}
 
 		if (this.cas != null) {
 			this.cas.release();
@@ -315,29 +352,29 @@ public class AnnotationEditorWidget extends Composite {
 
 		// we only test the pos tag annotation and test the generic drawing
 		// strategy
-		String posTypeS = "de.uniwue.kalimachos.coref.type.POS";
+		String posTypeS = "de.uniwue.kalimachos.coref.type.Chunk";
 		Type posType = cas.getTypeSystem().getType(posTypeS);
-		Feature posTagF = posType.getFeatureByBaseName("POSTag");
+		Feature posTagF = posType.getFeatureByBaseName("ChunkType");
 
 		// create for the span
-		DrawingStruct ds = new DrawingStruct(new RGBA(255, 0, 0, 0), new RGBA(100, 100, 100, 0), null,
+		DrawingStruct ds = new DrawingStruct(new RGBA(0, 0, 255, 0), new RGBA(100, 100, 100, 0), null,
 				EDrawingType.RECTANGLE_BORDER);
 		List<RGBA> fgColors = new ArrayList<>();
 		fgColors.add(new RGBA(255, 0, 0, 0));
-		fgColors.add(new RGBA(0, 255, 0, 0));
-		fgColors.add(new RGBA(0, 0, 255, 0));
+		// fgColors.add(new RGBA(0, 255, 0, 0));
+		// fgColors.add(new RGBA(0, 0, 255, 0));
 
 		ds.setData(EFancyDrawingType.FANCY_ALTERNATING_FG_COLORS, fgColors);
-		ds.setFancyDrawingType(EFancyDrawingType.ALTERNATING);
+		// ds.setFancyDrawingType(EFancyDrawingType.ALTERNATING);
 		FeatureValueDrawingStategy spanFeatureDS = new FeatureValueDrawingStategy(null, null, ds);
 		FeatureDrawingStrategy spanDS = new FeatureDrawingStrategy(null, spanFeatureDS);
 
 		// also for the pos tag
 		DrawingStruct dsPOS = new DrawingStruct(new RGBA(120, 0, 200, 0), new RGBA(255, 255, 255, 0),
 				ERenderingPosition.UC, EDrawingType.STRING);
-		dsPOS.setData(StringDrawingStrategy.FONT_SIZE_DATA, 6);
-		dsPOS.setData(StringDrawingStrategy.FONT_TYPE, "Magneto");
-		dsPOS.setFancyDrawingType(EFancyDrawingType.ALL_SAME_DIFFER_FG);
+		dsPOS.setData(StringDrawingStrategy.FONT_SIZE_DATA, 10);
+		dsPOS.setData(StringDrawingStrategy.FONT_TYPE, "Calibri");
+		// dsPOS.setFancyDrawingType(EFancyDrawingType.ALL_SAME_DIFFER_FG);
 		FeatureValueDrawingStategy spanFeatureDSPOS = new FeatureValueDrawingStategy(posTagF, null, dsPOS);
 
 		FeatureDrawingStrategy spanDSPOS = new FeatureDrawingStrategy(posTagF, spanFeatureDSPOS);
@@ -556,12 +593,20 @@ public class AnnotationEditorWidget extends Composite {
 			public void keyPressed(KeyEvent e) {
 
 				if (((e.stateMask & SWT.CTRL) == SWT.CTRL) && (e.keyCode == 'f')) {
-					// open search dialog
-					SearchDialog sd = new SearchDialog(Display.getCurrent().getActiveShell(),
-							widget.getSelectionText() != null ? widget.getSelectionText() : "");
+					if (sd == null) {
+						sd = new SearchDialog(Display.getCurrent().getActiveShell());
+						sd.open();
+						sd.hide();
+					}
 					sd.addFindListener(new EditorFindHandler(getWidget(), sd, AnnotationEditorWidget.this));
 
-					sd.open();
+					String input = widget.getSelectionText() != null ? widget.getSelectionText() : "";
+					sd.setSearchString(input);
+					
+					sd.show();
+					sd.putFocus();
+
+					
 				}
 
 				if (((e.stateMask & SWT.CTRL) == SWT.CTRL)) {
@@ -1106,8 +1151,11 @@ public class AnnotationEditorWidget extends Composite {
 			// default is backgroundDrawingStrategy
 
 			// TODO the anno browser labelprovider color seems off!!
-			AnnoStyle style = new AnnoStyle(DrawingTypeStrategyFactory.getNaiveSpanDrawingStrategy(next, null,
-					actual.getRGBA(), EDrawingType.RECTANGLE_FILLED), styleRange);
+			StyleRange srAnnoType = new StyleRange();
+			srAnnoType.background = actual;
+			srAnnoType.foreground = actual;
+			AnnoStyle style = new AnnoStyle(DrawingTypeStrategyFactory.getNaiveSpanDrawingStrategy(next,
+					actual.getRGBA(), actual.getRGBA(), EDrawingType.RECTANGLE_FILLED), srAnnoType);
 			// AnnoStyle style = new AnnoStyle(strat, styleRange);
 			TypeStyleDataStructure asds = new TypeStyleDataStructure(next, style, 0);
 
@@ -1230,7 +1278,7 @@ public class AnnotationEditorWidget extends Composite {
 					public void run() {
 						System.out.println("search");
 
-						SearchDialog sd = new SearchDialog(getParent().getShell(), getWidget().getSelectionText());
+						SearchDialog sd = new SearchDialog(getParent().getShell());
 						sd.addFindListener(new EditorFindHandler(getWidget(), sd, AnnotationEditorWidget.this));
 
 						sd.open();
@@ -1242,6 +1290,44 @@ public class AnnotationEditorWidget extends Composite {
 
 				manager.add(new Separator());
 
+				Action executePipelineAction = new Action() {
+					@Override
+					public void run() {
+
+						FileDialog fd = new FileDialog(Display.getCurrent().getActiveShell(), SWT.OPEN);
+						fd.setText("Open a configuration");
+						// fd.setFilterPath("C:/");
+						String[] filterExt = { "*.xml", "*.*" };
+						fd.setFilterExtensions(filterExt);
+						String selected = fd.open();
+						if (selected == null)
+							return;
+						AnnotationEditorWidget.this.currentNappiConfig = new File(selected);
+
+						if (AnnotationEditorWidget.this.currentNappiConfig != null) {
+							executePipeline();
+						}
+					}
+
+				};
+
+				executePipelineAction.setText("Execute Pipeline");
+				manager.add(executePipelineAction);
+
+				if (AnnotationEditorWidget.this.currentNappiConfig != null) {
+					Action executeLastPipelineAction = new Action() {
+						@Override
+						public void run() {
+							executePipeline();
+						}
+
+					};
+
+					executeLastPipelineAction
+							.setText("Execute: " + AnnotationEditorWidget.this.currentNappiConfig.getName());
+					manager.add(executeLastPipelineAction);
+				}
+
 				fireEvent(EEditorEvent.RIGHTCLICK_MENU_REQUESTED, manager);
 			}
 		});
@@ -1249,6 +1335,55 @@ public class AnnotationEditorWidget extends Composite {
 		// initializeMenu2();
 	}
 
+	private void executePipeline() {
+		IRunnableWithProgress runnable = new IRunnableWithProgress() {
+
+			@Override
+			public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+				if (AnnotationEditorWidget.this.currentNappiConfig == null)
+					return;
+
+				monitor.beginTask("Download models and execute pipeline...", 1);
+				FileInputStream fis = null;
+				try {
+					fis = new FileInputStream(AnnotationEditorWidget.this.currentNappiConfig);
+				} catch (FileNotFoundException e) {
+					// TODO Auto-generated catch block
+					e.printStackTrace();
+				}
+				NappiUtil.executePipeline(fis, cas, ApplicationUtil.getLocalNappiRepository().getAbsolutePath());
+
+				try {
+					fis.close();
+				} catch (IOException e) {
+					// TODO Auto-generated catch block
+					e.printStackTrace();
+				}
+
+				monitor.worked(1);
+				monitor.done();
+
+			}
+		};
+
+		ProgressMonitorDialog pmDia = new ProgressMonitorDialog(Display.getCurrent().getActiveShell());
+		try {
+			pmDia.run(true, false, runnable);
+			updateWidget();
+		} catch (InvocationTargetException | InterruptedException ex) {
+			MessageDialog.openError(Display.getCurrent().getActiveShell(), "Processing aborted",
+					"An exception occured during processing:\\n" + ex.getMessage()
+							+ "\n maybe you forgot to access the online repository?");
+			ex.printStackTrace();
+		}
+
+		// use a hack to notify all views
+		for (AnnotationFS anno : cas.getAnnotationIndex()) {
+			changeAnnotation(anno);
+			break;
+		}
+	}
+
 	private void initializeMenu2() {
 
 		// =====MENU======
@@ -1330,7 +1465,7 @@ public class AnnotationEditorWidget extends Composite {
 	}
 
 	public void save() {
-
+
 		fireEvent(EEditorEvent.EDITOR_FILE_SAVED, null);
 		try {
 			FileOutputStream fileOutputStream = new FileOutputStream(openedFile);
@@ -1408,6 +1543,10 @@ public class AnnotationEditorWidget extends Composite {
 
 	}
 
+	public void resetMode() {
+		this.activeModeType = null;
+	}
+
 	public Type getActiveMode() {
 		return this.activeModeType;
 	}
@@ -1463,4 +1602,8 @@ public class AnnotationEditorWidget extends Composite {
 		return selection;
 	}
 
+	public void setCaretOffset(int newCaretPosition) {
+		widget.setCaretOffset(newCaretPosition);
+	}
+
 }
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/.classpath b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/.classpath
index 34789704fcb5079558b6a702f0d6f7fe0b47627a..8a32f0d257eb2c85898026c23ef5fca1ceb0019a 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/.classpath
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/.classpath
@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
+	<classpathentry exported="true" kind="lib" path="libs/TCFConverter-0.0.1-SNAPSHOT-jar-with-dependencies.jar"/>
+	<classpathentry exported="true" kind="lib" path="libs/TEIReader-0.0.1-SNAPSHOT-jar-with-dependencies.jar"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry exported="true" kind="lib" path="libs/juniversalchardet-1.0.3.jar"/>
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/META-INF/MANIFEST.MF b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/META-INF/MANIFEST.MF
index 38563ebf4c00e93e8350a1d851a213c34255b6b2..7edfe30a52f0681582a552b06c70d66360e2b1da 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/META-INF/MANIFEST.MF
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/META-INF/MANIFEST.MF
@@ -27,4 +27,6 @@ Export-Package: de.uniwue.mk.kall.athen.projectExplorer.actions,
  de.uniwue.mk.kall.athen.projectExplorer.projectDescription,
  de.uniwue.mk.kall.athen.projectExplorer.ui
 Bundle-ClassPath: libs/juniversalchardet-1.0.3.jar,
- .
+ .,
+ libs/TEIReader-0.0.1-SNAPSHOT-jar-with-dependencies.jar,
+ libs/TCFConverter-0.0.1-SNAPSHOT-jar-with-dependencies.jar
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/build.properties b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/build.properties
index 54dbb7b55e76c40ae05cf9a40ef480f5edc89ac0..85de4d12fa1d17273b689d619aebc9d4f2ac12b3 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/build.properties
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/build.properties
@@ -3,4 +3,6 @@ output.. = bin/
 bin.includes = META-INF/,\
                .,\
                icons/,\
-               libs/juniversalchardet-1.0.3.jar
+               libs/juniversalchardet-1.0.3.jar,\
+               libs/TEIReader-0.0.1-SNAPSHOT-jar-with-dependencies.jar,\
+               libs/TCFConverter-0.0.1-SNAPSHOT-jar-with-dependencies.jar
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/libs/TCFConverter-0.0.1-SNAPSHOT-jar-with-dependencies.jar b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/libs/TCFConverter-0.0.1-SNAPSHOT-jar-with-dependencies.jar
new file mode 100644
index 0000000000000000000000000000000000000000..860c8f9331f31e3508411e17d36b8c9f234a7806
Binary files /dev/null and b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/libs/TCFConverter-0.0.1-SNAPSHOT-jar-with-dependencies.jar differ
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/libs/TEIReader-0.0.1-SNAPSHOT-jar-with-dependencies.jar b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/libs/TEIReader-0.0.1-SNAPSHOT-jar-with-dependencies.jar
new file mode 100644
index 0000000000000000000000000000000000000000..dccb7f9a51aa520fbeff0f8f3abbc66ffdf94d67
Binary files /dev/null and b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/libs/TEIReader-0.0.1-SNAPSHOT-jar-with-dependencies.jar differ
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/ApplicationXMIToKTFFormatConverter.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/ApplicationXMIToKTFFormatConverter.java
new file mode 100644
index 0000000000000000000000000000000000000000..bc2c0e0448b379a1a48e0100a1aee1bbf6ee2ae4
--- /dev/null
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/ApplicationXMIToKTFFormatConverter.java
@@ -0,0 +1,47 @@
+package de.uniwue.mk.kall.athen.projectExplorer.conversion;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+import org.apache.uima.cas.CAS;
+import org.apache.uima.cas.impl.XmiCasDeserializer;
+import org.xml.sax.SAXException;
+
+import de.uniwue.mk.kall.athen.appDelegation.util.ApplicationUtil;
+import de.uniwue.mk.kall.athen.projectExplorer.ktf.EDataFormat;
+import de.uniwue.mk.kall.athen.projectExplorer.ktf.FormatConverter;
+
+public class ApplicationXMIToKTFFormatConverter extends AFormatConverter {
+
+	public ApplicationXMIToKTFFormatConverter() {
+		super(EFormat.APPLICATION_XMI, EFormat.KTF);
+	}
+
+	@Override
+	public ADocument convertFormat(File input) {
+		// convert from XMI to txt
+		CAS cas = ApplicationUtil.createCAS();
+		FileInputStream fis;
+		try {
+			fis = new FileInputStream(input);
+			try {
+				XmiCasDeserializer.deserialize(fis, cas);
+			} catch (SAXException | IOException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+		} catch (FileNotFoundException e1) {
+			// TODO Auto-generated catch block
+			e1.printStackTrace();
+		}
+//
+//		MKDataFormat mkDataFormat = new MKDataFormat(cas);
+//		KallimachosDataFormat kdf = new KallimachosDataFormat();
+//		kdf.convertValues(mkDataFormat);
+;
+		return new KTFDocument(cas, EFormat.TXT);
+	}
+
+}
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/ApplicationXMIToTCFFormatConverter.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/ApplicationXMIToTCFFormatConverter.java
new file mode 100644
index 0000000000000000000000000000000000000000..e8debd0de886fe974004fe6079c52740b24849cb
--- /dev/null
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/ApplicationXMIToTCFFormatConverter.java
@@ -0,0 +1,44 @@
+package de.uniwue.mk.kall.athen.projectExplorer.conversion;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+import org.apache.uima.cas.CAS;
+import org.apache.uima.cas.impl.XmiCasDeserializer;
+import org.xml.sax.SAXException;
+
+import de.uniwue.mk.kall.athen.appDelegation.util.ApplicationUtil;
+import de.uniwue.mk.kallimachos.tcf.writer.XMIToTCFWriter;
+import eu.clarin.weblicht.wlfxb.tc.xb.TextCorpusStored;
+
+public class ApplicationXMIToTCFFormatConverter extends AFormatConverter {
+
+	public ApplicationXMIToTCFFormatConverter() {
+		super(EFormat.APPLICATION_XMI, EFormat.TCF);
+	}
+
+	@Override
+	public ADocument convertFormat(File input) {
+		// convert from XMI to txt
+		CAS cas = ApplicationUtil.createCAS();
+		FileInputStream fis;
+		try {
+			fis = new FileInputStream(input);
+			try {
+				XmiCasDeserializer.deserialize(fis, cas);
+			} catch (SAXException | IOException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+		} catch (FileNotFoundException e1) {
+			// TODO Auto-generated catch block
+			e1.printStackTrace();
+		}
+		
+		TextCorpusStored textCorpus = new XMIToTCFWriter().convertXMI(cas, "DE");
+		return new TCFDocument(textCorpus, EFormat.TXT);
+	}
+
+}
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/ApplicationXMIToTxtFormatConverter.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/ApplicationXMIToTxtFormatConverter.java
new file mode 100644
index 0000000000000000000000000000000000000000..af09d8bc2c280039766845f79ca223747ddae303
--- /dev/null
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/ApplicationXMIToTxtFormatConverter.java
@@ -0,0 +1,43 @@
+package de.uniwue.mk.kall.athen.projectExplorer.conversion;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+import org.apache.uima.cas.CAS;
+import org.apache.uima.cas.impl.XmiCasDeserializer;
+import org.mozilla.universalchardet.UniversalDetector;
+import org.xml.sax.SAXException;
+
+import de.uniwue.mk.kall.athen.appDelegation.util.ApplicationUtil;
+
+public class ApplicationXMIToTxtFormatConverter extends AFormatConverter {
+
+	public ApplicationXMIToTxtFormatConverter() {
+		super(EFormat.APPLICATION_XMI, EFormat.TXT);
+	}
+
+	@Override
+	public ADocument convertFormat(File input) {
+		// convert from XMI to txt
+		CAS cas = ApplicationUtil.createCAS();
+		FileInputStream fis;
+		try {
+			fis = new FileInputStream(input);
+			try {
+				XmiCasDeserializer.deserialize(fis, cas);
+			} catch (SAXException | IOException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+		} catch (FileNotFoundException e1) {
+			// TODO Auto-generated catch block
+			e1.printStackTrace();
+		}
+
+		String text = cas.getDocumentText();
+		return new TxtDocument(text, EFormat.TXT);
+	}
+
+}
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/DocumentFormatUtil.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/DocumentFormatUtil.java
index 390e9b90c0030cf7185ff706133900dbd19a8640..33c0e306f1dbf04c935d00d9eaefea8947005bd9 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/DocumentFormatUtil.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/DocumentFormatUtil.java
@@ -15,6 +15,10 @@ public class DocumentFormatUtil {
 		converter.add(new TxtToApplicationXMIFormatConverter());
 		converter.add(new ImageToApplicationXMIFormatConverter());
 		converter.add(new MedTxtToApplicationXMIFormatConverter());
+		converter.add(new XMLToApplicationXMIFormatConverter());
+		converter.add(new ApplicationXMIToTxtFormatConverter());
+		converter.add(new ApplicationXMIToTCFFormatConverter());
+		converter.add(new ApplicationXMIToKTFFormatConverter());
 	}
 
 	public static ADocument convertDocument(File f, EFormat source, EFormat target) {
@@ -36,13 +40,28 @@ public class DocumentFormatUtil {
 
 		if (toDetermine.getAbsolutePath().endsWith("med.txt"))
 			return EFormat.MEDTXT;
-		
+
 		if (toDetermine.getAbsolutePath().endsWith(".txt"))
 			return EFormat.TXT;
 
 		else if (toDetermine.getAbsolutePath().endsWith(".png") || toDetermine.getAbsolutePath().endsWith(".jpg")) {
 			return EFormat.IMG;
 		}
+
+		else if (toDetermine.getAbsolutePath().endsWith(".xml") || toDetermine.getAbsolutePath().endsWith(".html")) {
+			return EFormat.XML;
+		}
+
+		else if (toDetermine.getAbsolutePath().endsWith(".xmi")) {
+			return EFormat.APPLICATION_XMI;
+		}
+
+		else if (toDetermine.getAbsolutePath().endsWith(".tcf")) {
+			return EFormat.TCF;
+		}
+		else if (toDetermine.getAbsolutePath().endsWith(".ktf")) {
+			return EFormat.KTF;
+		}
 		return null;
 	}
 
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/EFormat.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/EFormat.java
index 4adbe5b87f5ed5e9f7e0213ecf197cbdac1cecce..17d2e3f4936f375e6440603853a1e0a20861c4d7 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/EFormat.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/EFormat.java
@@ -1,6 +1,6 @@
 package de.uniwue.mk.kall.athen.projectExplorer.conversion;
 
 public enum EFormat {
-	APPLICATION_XMI, DKPRO_XMI, CONLL, TEI, TXT, UNSUPPORTED_FORMAT, IMG, MEDTXT;
+	APPLICATION_XMI, KTF, TXT, UNSUPPORTED_FORMAT, IMG, MEDTXT,XML, TCF;
 
 }
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/KTFDocument.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/KTFDocument.java
new file mode 100644
index 0000000000000000000000000000000000000000..2014050b25ce65e15f452c5635c581001f0ebf22
--- /dev/null
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/KTFDocument.java
@@ -0,0 +1,44 @@
+package de.uniwue.mk.kall.athen.projectExplorer.conversion;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.apache.commons.io.FileUtils;
+
+import de.uniwue.mk.kall.athen.projectExplorer.ktf.EDataFormat;
+import de.uniwue.mk.kall.athen.projectExplorer.ktf.FormatConverter;
+
+public class KTFDocument extends ADocument {
+
+	public KTFDocument(Object content, EFormat format) {
+		super(content, format, ".ktf");
+
+	}
+
+	// the content of this document is something really cool! (a cas)
+	@Override
+	public Object getContent() {
+		return this.content;
+	}
+
+	@Override
+	public void serialize(File toFile) {
+		// add a .tcf if required
+		toFile = DocumentFormatUtil.formatFileEnding(toFile, this);
+
+		FormatConverter.convertDataFormat(this.content, EDataFormat.MKFORMAT, toFile, EDataFormat.JANNIDIS_FORMAT);
+	}
+
+	@Override
+	public void deserialize(File toDeserialize) {
+
+		try {
+			this.content = FileUtils.readFileToString(toDeserialize);
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+
+	}
+
+}
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/TCFDocument.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/TCFDocument.java
new file mode 100644
index 0000000000000000000000000000000000000000..2e71eb1c0dfd15a2d18f838f47471ae717220d7d
--- /dev/null
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/TCFDocument.java
@@ -0,0 +1,55 @@
+package de.uniwue.mk.kall.athen.projectExplorer.conversion;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import org.apache.commons.io.FileUtils;
+
+import eu.clarin.weblicht.wlfxb.io.WLDObjector;
+import eu.clarin.weblicht.wlfxb.io.WLFormatException;
+import eu.clarin.weblicht.wlfxb.tc.xb.TextCorpusStored;
+import eu.clarin.weblicht.wlfxb.xb.WLData;
+
+public class TCFDocument extends ADocument {
+
+	public TCFDocument(Object content, EFormat format) {
+		super(content, format, ".tcf");
+
+	}
+
+	// the content of this document is a TextCorpusStored
+	@Override
+	public Object getContent() {
+		return this.content;
+	}
+
+	@Override
+	public void serialize(File toFile) {
+		// add a .tcf if required
+		toFile = DocumentFormatUtil.formatFileEnding(toFile, this);
+
+		// write it
+		WLData wlData = new WLData((TextCorpusStored) this.content);
+		try {
+			WLDObjector.write(wlData, new FileOutputStream(toFile));
+		} catch (WLFormatException | FileNotFoundException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+	}
+
+	@Override
+	public void deserialize(File toDeserialize) {
+
+		try {
+			this.content = FileUtils.readFileToString(toDeserialize);
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+
+	}
+
+}
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/TxtDocument.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/TxtDocument.java
new file mode 100644
index 0000000000000000000000000000000000000000..77956da3057e5a22bdfd7ad195be2a8c5755e0ef
--- /dev/null
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/TxtDocument.java
@@ -0,0 +1,55 @@
+package de.uniwue.mk.kall.athen.projectExplorer.conversion;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.uima.cas.CAS;
+import org.apache.uima.cas.impl.XmiCasDeserializer;
+import org.apache.uima.cas.impl.XmiCasSerializer;
+import org.xml.sax.SAXException;
+
+import de.uniwue.mkrug.kall.typesystemutil.Util_impl;
+
+public class TxtDocument extends ADocument {
+
+	public TxtDocument(Object content, EFormat format) {
+		super(content, format, ".txt");
+
+	}
+
+	// the content of this document is a CAS
+	@Override
+	public Object getContent() {
+		return this.content;
+	}
+
+	@Override
+	public void serialize(File toFile) {
+		// add a .txt if required
+		toFile = DocumentFormatUtil.formatFileEnding(toFile, this);
+
+		try {
+			FileUtils.write(toFile, (String) content);
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+	}
+
+	@Override
+	public void deserialize(File toDeserialize) {
+
+		try {
+			this.content = FileUtils.readFileToString(toDeserialize);
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+
+	}
+
+}
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/XMLToApplicationXMIFormatConverter.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/XMLToApplicationXMIFormatConverter.java
new file mode 100644
index 0000000000000000000000000000000000000000..4d7779586585602f6aa098ab1bd374f76454ede6
--- /dev/null
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/conversion/XMLToApplicationXMIFormatConverter.java
@@ -0,0 +1,40 @@
+package de.uniwue.mk.kall.athen.projectExplorer.conversion;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.uima.cas.CAS;
+import org.apache.uima.cas.Feature;
+import org.apache.uima.cas.Type;
+import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.resource.ResourceInitializationException;
+import org.apache.uima.util.FileUtils;
+
+import de.uniwue.mk.kall.athen.appDelegation.util.ApplicationUtil;
+import de.uniwue.mk.kall.formatconversion.teireader.reader.TEIReader;
+
+public class XMLToApplicationXMIFormatConverter extends AFormatConverter {
+
+
+	public XMLToApplicationXMIFormatConverter() {
+		super(EFormat.XML, EFormat.APPLICATION_XMI);
+	}
+
+	@Override
+	public ADocument convertFormat(File input) {
+		// convert from txt to XMI
+		CAS cas = ApplicationUtil.createCAS();
+		try {
+			cas = new TEIReader(false).readDocument(input,cas).getFirst();
+		} catch (ResourceInitializationException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+
+		return new XMIDocument(cas, EFormat.APPLICATION_XMI);
+	}
+
+
+}
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/ktf/ADataFormat.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/ktf/ADataFormat.java
new file mode 100644
index 0000000000000000000000000000000000000000..bdd9ff8648c9cb69a6a6529fc91d9058420466c7
--- /dev/null
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/ktf/ADataFormat.java
@@ -0,0 +1,96 @@
+package de.uniwue.mk.kall.athen.projectExplorer.ktf;
+
+import java.io.File;
+import java.util.List;
+
+public abstract class ADataFormat {
+
+  /*
+   * abstract class that gives all represenations a given format should have
+   */
+
+  protected Object dataModel;
+  
+  //all the stuff to store
+  protected List<String> sentences;
+
+  protected List<WordStruct> words;
+  protected List<String> lemma;
+
+  protected List<String> finegrainedPOS;
+
+  protected List<String> coarseGrainedPOS;
+
+  protected List<String> depRels;
+
+  protected List<String> headNrs;
+
+  protected List<String> morph;
+
+  protected List<String> pdeprel;
+
+  protected List<String> nes;
+
+  protected List<String> corefs;
+
+
+
+  
+
+  public ADataFormat(File inFile){
+    
+    dataModel = deserialize(inFile);
+    
+  }
+  
+  // create an empty datamodel that you need to fill
+  public ADataFormat() {
+
+  }
+
+
+  public abstract Object deserialize(File in);
+
+  public abstract List<String> getSentences();
+
+  public abstract List<WordStruct> getWords();
+
+  public abstract List<String> getLemma();
+
+  public abstract List<String> getDepRel();
+
+  public abstract List<String> getHeadNr();
+
+  public abstract List<String> getMorphString();
+
+  public abstract List<String> getFineGrainedPOS();
+
+  public abstract List<String> getCoarseGrainedPOS();
+
+  public abstract List<String> getPDEPREL();
+
+  public abstract List<String> getNETag();
+
+  public abstract List<String> getCorefIds();
+
+  public abstract void serialize(File out);
+
+  public void convertValues(ADataFormat df) {
+    
+    this.coarseGrainedPOS = df.getCoarseGrainedPOS();
+    this.corefs = df.getCorefIds();
+    this.depRels = df.getDepRel();
+    this.finegrainedPOS = df.getFineGrainedPOS();
+    this.headNrs = df.getHeadNr();
+    this.nes = df.getNETag();
+    this.lemma = df.getLemma();
+    this.morph = df.getMorphString();
+    this.pdeprel = df.getPDEPREL();
+    this.sentences = df.getSentences();
+    this.words = df.getWords();
+    
+    
+
+  }
+
+}
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/ktf/DataFormatFactory.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/ktf/DataFormatFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..1dd4f66a8c94437aaa6fa7fe73ca909ab0e34531
--- /dev/null
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/ktf/DataFormatFactory.java
@@ -0,0 +1,41 @@
+package de.uniwue.mk.kall.athen.projectExplorer.ktf;
+
+import java.io.File;
+
+import org.apache.uima.cas.CAS;
+
+public class DataFormatFactory {
+  
+  
+  public static ADataFormat create(File in, EDataFormat format){
+
+    if (format == EDataFormat.MKFORMAT) {
+      return new MKDataFormat(in);
+    }
+    return null;
+    
+    
+  }
+
+  public static ADataFormat createEmpty(EDataFormat targetFormat) {
+    
+    if (targetFormat == EDataFormat.JANNIDIS_FORMAT) {
+      return new KallimachosDataFormat();
+    }
+
+    else if (targetFormat == EDataFormat.MKFORMAT) {
+      return new MKDataFormat();
+    }
+
+    return null;
+  }
+
+  public static ADataFormat create(Object source, EDataFormat sourceFormat) {
+
+    if (sourceFormat == EDataFormat.MKFORMAT) {
+      return new MKDataFormat(((CAS) source));
+    }
+    return null;
+  }
+
+}
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/ktf/EDataFormat.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/ktf/EDataFormat.java
new file mode 100644
index 0000000000000000000000000000000000000000..71fb9f6819247b10de20153a87e837738b719aa6
--- /dev/null
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/ktf/EDataFormat.java
@@ -0,0 +1,6 @@
+package de.uniwue.mk.kall.athen.projectExplorer.ktf;
+
+public enum EDataFormat {
+  MKFORMAT, CONNL, JANNIDIS_FORMAT, DKPRO;
+
+}
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/ktf/FormatConverter.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/ktf/FormatConverter.java
new file mode 100644
index 0000000000000000000000000000000000000000..b59d95c2eb4ed3c9461142aaabb1e4c40f9258c2
--- /dev/null
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/ktf/FormatConverter.java
@@ -0,0 +1,45 @@
+package de.uniwue.mk.kall.athen.projectExplorer.ktf;
+
+import java.io.File;
+
+
+public class FormatConverter {
+
+  public static void convertDataFormat(File source, EDataFormat sourceFormat,
+          File targetFile, EDataFormat targetFormat) {
+
+    // deserilaizie sopurce
+
+    ADataFormat df = DataFormatFactory.create(source, sourceFormat);
+
+    // create a new format with the new representation
+    ADataFormat targetDF = DataFormatFactory.createEmpty(targetFormat);
+
+    // copy the values into the target format
+    targetDF.convertValues(df);
+
+
+    // write - serialize the target format to a file
+    targetDF.serialize(targetFile);
+
+  }
+
+  public static void convertDataFormat(Object source, EDataFormat sourceFormat, File targetFile,
+          EDataFormat targetFormat) {
+
+    // deserilaizie sopurce
+
+    ADataFormat df = DataFormatFactory.create(source, sourceFormat);
+
+    // create a new format with the new representation
+    ADataFormat targetDF = DataFormatFactory.createEmpty(targetFormat);
+
+    // copy the values into the target format
+    targetDF.convertValues(df);
+
+    // write - serialize the target format to a file
+    targetDF.serialize(targetFile);
+
+  }
+
+}
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/ktf/KallimachosDataFormat.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/ktf/KallimachosDataFormat.java
new file mode 100644
index 0000000000000000000000000000000000000000..52f222b089e607f647648931dffa0256442b5b13
--- /dev/null
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/ktf/KallimachosDataFormat.java
@@ -0,0 +1,202 @@
+package de.uniwue.mk.kall.athen.projectExplorer.ktf;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.util.List;
+
+public class KallimachosDataFormat extends ADataFormat {
+
+	@Override
+	public Object deserialize(File in) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public List<String> getSentences() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public List<WordStruct> getWords() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public List<String> getLemma() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public List<String> getDepRel() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public List<String> getHeadNr() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public List<String> getMorphString() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public List<String> getFineGrainedPOS() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public List<String> getCoarseGrainedPOS() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public List<String> getPDEPREL() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public List<String> getNETag() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public List<String> getCorefIds() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public void serialize(File out) {
+		Writer fw = null;
+		try {
+			fw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(out), "UTF-8"));
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+
+		try {
+			appendDocumentLinePerLine(fw);
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+
+		try {
+			fw.flush();
+			fw.close();
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+	}
+
+	private void appendDocumentLinePerLine(Writer fw) throws IOException {
+
+		// append the header
+		fw.append("SectionId\tParagraphId\tSentenceId\tTokenId\tBegin\tEnd\tToken\tLemma\tCPOS\tPOS\tMorphology\tDependencyHead\tDependencyRelation\tNamedEntity\tCorefId\n");
+		int lineCnt = this.words.size();
+		// create one line after another
+		for (int i = 0; i < lineCnt; i++) {
+			WordStruct wordStruct = this.words.get(i);
+			// section id aka chapter
+			fw.append(wordStruct.getChapterId() + "\t");
+
+			// paragraph id
+			fw.append(wordStruct.getParagraphId() + "\t");
+
+			// sentenceId
+			fw.append(wordStruct.getSentId() + "\t");
+
+			// token id
+			fw.append(i + "\t");
+
+			// begin
+			fw.append(wordStruct.getBeg() + "\t");
+
+			// end
+			fw.append(wordStruct.getEnd() + "\t");
+
+			// token
+			fw.append(wordStruct.getWord() + "\t");
+
+			// Lemma
+			if (i < this.lemma.size())
+				fw.append(this.lemma.get(i) + "\t");
+
+			// CPOS
+			if (i < this.coarseGrainedPOS.size())
+				fw.append(this.coarseGrainedPOS.get(i) + "\t");
+
+			// POS
+			if (i < this.finegrainedPOS.size())
+				fw.append(this.finegrainedPOS.get(i) + "\t");
+
+			// Morph
+			if (i < this.morph.size()) {
+				fw.append(this.morph.get(i) + "\t");
+			} else {
+				fw.append("--\t");
+
+			}
+
+			// DepHead
+			if (i < this.headNrs.size()) {
+				fw.append(this.headNrs.get(i) + "\t");
+			}
+
+			else {
+				fw.append("--\t");
+
+			}
+
+			// DepRel
+			if (i < this.depRels.size()) {
+				fw.append(this.depRels.get(i) + "\t");
+			}
+
+			else {
+				fw.append("--\t");
+
+			}
+
+			// NE
+			if (i < this.nes.size()) {
+				fw.append(this.nes.get(i) + "\t");
+			}
+
+			else {
+				fw.append("--\t");
+
+			}
+
+			// Coref
+			if (i < this.corefs.size()) {
+				fw.append(this.corefs.get(i) + "\t");
+			}
+
+			else {
+				fw.append("--\t");
+
+			}
+			fw.append("\n");
+		}
+	}
+}
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/ktf/MKDataFormat.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/ktf/MKDataFormat.java
new file mode 100644
index 0000000000000000000000000000000000000000..6d3879dcabcd5fec29ce12beee4350a575f71c18
--- /dev/null
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/ktf/MKDataFormat.java
@@ -0,0 +1,394 @@
+package de.uniwue.mk.kall.athen.projectExplorer.ktf;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.uima.cas.CAS;
+import org.apache.uima.cas.impl.XmiCasDeserializer;
+import org.apache.uima.cas.impl.XmiCasSerializer;
+import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.cas.text.AnnotationIndex;
+import org.xml.sax.SAXException;
+
+import de.uniwue.mkrug.kall.typesystemutil.Util_impl;
+
+
+
+public class MKDataFormat extends ADataFormat {
+
+  private CAS cas;
+
+  private Util_impl util;
+
+  public MKDataFormat(File inFile) {
+    super(inFile);
+
+    this.cas = (CAS) super.dataModel;
+    util = new Util_impl(cas);
+  }
+
+  public MKDataFormat() {
+
+  }
+
+  public MKDataFormat(CAS cas2) {
+    super.dataModel = cas2;
+    this.cas = cas2;
+    util = new Util_impl(cas2);
+  }
+
+  @Override
+  public Object deserialize(File in) {
+
+    CAS cas = Util_impl.createCas();
+
+    super.dataModel = cas;
+
+    try {
+      XmiCasDeserializer.deserialize(new FileInputStream(in), cas);
+    } catch (SAXException | IOException e) {
+      e.printStackTrace();
+    }
+    return cas;
+  }
+
+  @Override
+  public List<String> getSentences() {
+    return indexToList(cas.getAnnotationIndex(util.getSentenceType()));
+  }
+
+  @Override
+  public List<WordStruct> getWords() {
+
+    List<WordStruct> ws = new ArrayList<WordStruct>();
+
+    for (AnnotationFS tok : cas.getAnnotationIndex(util.getPOSType())) {
+
+      String parNr = "null";
+
+      AnnotationFS coveringParagraph = util.getCoveringParagraph(tok);
+
+      if (coveringParagraph != null) {
+        parNr = String.valueOf(util.getIndexOfTypeInDocument(coveringParagraph));
+      }
+
+      AnnotationFS coveringAnnotation = util.getCoveringAnnotation(tok, util.getChapterType());
+      String chapNr = "null";
+
+      if (coveringAnnotation != null) {
+        chapNr = String.valueOf(util.getIndexOfTypeInDocument(coveringAnnotation));
+
+        // check if it is a footNote
+
+        if (util.isFootNote(coveringAnnotation)) {
+
+          chapNr = chapNr + "_FOOTNOTE";
+
+        }
+      }
+
+      WordStruct wst = new WordStruct(tok.getCoveredText(), String.valueOf(util
+              .getIndexOfTypeInDocument(util.getCoveringSentence(tok))), String.valueOf(tok
+              .getBegin()), String.valueOf(tok.getEnd()), parNr, chapNr);
+
+      ws.add(wst);
+    }
+
+    return ws;
+  }
+
+  @Override
+  public List<String> getLemma() {
+
+    List<String> lemmas = new ArrayList<String>();
+
+    for (AnnotationFS token : cas.getAnnotationIndex(util.getPOSType())) {
+      lemmas.add(token.getFeatureValueAsString(util.getLemmaFeature()));
+    }
+    return lemmas;
+  }
+
+  @Override
+  public List<String> getDepRel() {
+    List<String> depRels = new ArrayList<String>();
+
+    for (AnnotationFS token : cas.getAnnotationIndex(util.getDependencyType())) {
+      depRels.add(token.getFeatureValueAsString(util.depRelFeature()));
+    }
+    return depRels;
+  }
+
+  @Override
+  public List<String> getHeadNr() {
+    List<String> depRels = new ArrayList<String>();
+
+    for (AnnotationFS token : cas.getAnnotationIndex(util.getDependencyType())) {
+      depRels.add(token.getFeatureValueAsString(util.getHeadWordFeature()));
+    }
+    return depRels;
+  }
+
+  @Override
+  public List<String> getMorphString() {
+    List<String> morphStrings = new ArrayList<String>();
+
+    for (AnnotationFS token : cas.getAnnotationIndex(util.getMorphType())) {
+      String gender = token.getFeatureValueAsString(util.getMorphGender());
+      String numerus = token.getFeatureValueAsString(util.getMorphNumerus());
+      String person = token.getFeatureValueAsString(util.getMorphPerson());
+
+      morphStrings.add(gender + "|" + numerus + "|" + person);
+    }
+    return morphStrings;
+  }
+
+  @Override
+  public List<String> getFineGrainedPOS() {
+    List<String> pos = new ArrayList<String>();
+
+    for (AnnotationFS token : cas.getAnnotationIndex(util.getPOSType())) {
+      pos.add(token.getFeatureValueAsString(util.getPOSTagFeature()));
+    }
+    return pos;
+  }
+
+  @Override
+  public List<String> getCoarseGrainedPOS() {
+    List<String> pos = new ArrayList<String>();
+
+    for (AnnotationFS token : cas.getAnnotationIndex(util.getRFType())) {
+      pos.add(token.getFeatureValueAsString(util.getRFTagFeature()).split("\\.")[0]);
+    }
+    return pos;
+  }
+
+  @Override
+  public List<String> getPDEPREL() {
+    List<String> pos = new ArrayList<String>();
+
+    for (AnnotationFS token : cas.getAnnotationIndex(util.getPOSType())) {
+      pos.add("-");
+    }
+    return pos;
+  }
+
+  @Override
+  public List<String> getNETag() {
+
+    List<String> neTags = new ArrayList<String>();
+
+    for (AnnotationFS token : cas.getAnnotationIndex(util.getPOSType())) {
+
+      neTags.add(getNeTagFromToken(token));
+
+    }
+
+    return neTags;
+  }
+
+  private String getNeTagFromToken(AnnotationFS token) {
+
+    boolean isNamedEntity = false;
+    boolean isNEBegin = false;
+    String neType = "";
+    for (AnnotationFS name : cas.getAnnotationIndex(util.getNamedEntityType())) {
+
+      if (name.getBegin() <= token.getBegin() && name.getEnd() >= token.getEnd()) {
+        isNamedEntity = true;
+
+        if (name.getBegin() == token.getBegin()) {
+          isNEBegin = true;
+        }
+
+        neType = name.getFeatureValueAsString(util.getNeFeatureType());
+
+        break;
+      }
+    }
+
+    if (isNamedEntity) {
+
+      if (isNEBegin == true) {
+
+        // get core or app
+
+        return "B-PER" + "_" + neType;
+      }
+
+      return "I-PER" + "_" + neType;
+
+    }
+
+    else {
+      return "O";
+    }
+
+  }
+
+  @Override
+  public List<String> getCorefIds() {
+    List<String> neIDs = new ArrayList<String>();
+
+    for (AnnotationFS token : cas.getAnnotationIndex(util.getPOSType())) {
+
+      neIDs.add(getNeIDFromToken(token));
+
+    }
+
+    return neIDs;
+  }
+
+  private String getNeIDFromToken(AnnotationFS token) {
+    boolean isNamedEntity = false;
+    boolean isNEBegin = false;
+    AnnotationFS coveredNe = null;
+    for (AnnotationFS name : cas.getAnnotationIndex(util.getNamedEntityType())) {
+
+      if (name.getBegin() <= token.getBegin() && name.getEnd() >= token.getEnd()) {
+        isNamedEntity = true;
+        coveredNe = name;
+
+        if (name.getBegin() == token.getBegin()) {
+          isNEBegin = true;
+        }
+        break;
+      }
+    }
+
+    if (isNamedEntity) {
+
+      return coveredNe.getFeatureValueAsString(util.getNEId());
+
+    }
+
+    else {
+      return "-";
+    }
+
+  }
+
+  /*
+   * use the fields and serialize into a file this is actually really hard to do 1. Create cas and
+   * set sofa data ( text) 2. Create all needed annotations 3. Serializie
+   */
+  @Override
+  public void serialize(File out) {
+
+    CAS casNew = Util_impl.createCas();
+
+    casNew.setDocumentText(getDocumentTextFromSentences());
+
+    addAnnotationsToCas(casNew);
+
+    try {
+      XmiCasSerializer.serialize(casNew, new FileOutputStream(out));
+    } catch (FileNotFoundException | SAXException e) {
+      // TODO Auto-generated catch block
+      e.printStackTrace();
+    }
+
+  }
+
+  private void addAnnotationsToCas(CAS casNew) {
+
+    addSentences(casNew);
+    addWords(casNew);
+    addRestOfAnnotations(casNew);
+
+  }
+
+  private void addRestOfAnnotations(CAS casNew) {
+    Util_impl util = new Util_impl(casNew);
+
+    int index = 0;
+    for (AnnotationFS token : casNew.getAnnotationIndex(util.getPOSType())) {
+
+      // set POSTag Feature and Lemma
+      String posTag = "-";
+      String lemma = "-";
+
+      if (this.lemma.size() > index) {
+        lemma = this.lemma.get(index);
+      }
+      if (this.finegrainedPOS.size() > index) {
+        lemma = this.finegrainedPOS.get(index);
+      }
+
+      token.setFeatureValueFromString(util.getPOSTagFeature(), posTag);
+      token.setFeatureValueFromString(util.getLemmaFeature(), lemma);
+
+      // set morph
+
+      // set dependency annotations
+
+      // set NE and coref annos
+
+      index++;
+    }
+
+  }
+
+  private void addWords(CAS casNew) {
+    // sentences are already in the document
+
+    Util_impl util = new Util_impl(casNew);
+
+    String tempDocText = casNew.getDocumentText();
+    for (int i = words.size() - 1; i > 0; i--) {
+      String word = words.get(i).getWord();
+
+      int index = tempDocText.lastIndexOf(word);
+
+      AnnotationFS fs = casNew.createAnnotation(util.getPOSType(), index, index + word.length());
+
+      casNew.addFsToIndexes(fs);
+
+      // update document
+      tempDocText = tempDocText.substring(0, index);
+
+    }
+
+  }
+
+  private void addSentences(CAS casNew) {
+
+    int beg = 0;
+
+    Util_impl util = new Util_impl(casNew);
+
+    for (String sent : sentences) {
+
+      AnnotationFS fs = casNew.createAnnotation(util.getSentenceType(), beg, beg + sent.length());
+
+      beg = beg + sent.length() + 1;
+
+      casNew.addFsToIndexes(fs);
+    }
+
+  }
+
+  private String getDocumentTextFromSentences() {
+
+    StringBuilder docText = new StringBuilder();
+    for (String sent : sentences) {
+
+      docText.append(sent).append("\n");
+
+    }
+    return docText.toString();
+  }
+
+  private List<String> indexToList(AnnotationIndex<AnnotationFS> annotationIndex) {
+    List<String> list = new ArrayList<String>();
+
+    for (AnnotationFS a : annotationIndex) {
+      list.add(a.getCoveredText());
+    }
+    return list;
+  }
+}
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/ktf/WordStruct.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/ktf/WordStruct.java
new file mode 100644
index 0000000000000000000000000000000000000000..fa9bd192cb521c82751282f01e4bf284f7145bb8
--- /dev/null
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/ktf/WordStruct.java
@@ -0,0 +1,73 @@
+package de.uniwue.mk.kall.athen.projectExplorer.ktf;
+
+public class WordStruct {
+
+  private String word;
+
+  private String sentId;
+
+  private String beg;
+
+  private String end;
+
+  private String paragraphId;
+
+  private String chapterId;
+
+  public WordStruct(String word, String sentId, String beg, String end, String paragraphId,
+          String chapterId) {
+    super();
+    this.word = word;
+    this.sentId = sentId;
+    this.beg = beg;
+    this.end = end;
+    this.paragraphId = paragraphId;
+    this.chapterId = chapterId;
+  }
+
+  public String getWord() {
+    return word;
+  }
+
+  public void setWord(String word) {
+    this.word = word;
+  }
+
+  public String getSentId() {
+    return sentId;
+  }
+
+  public void setSentId(String sentId) {
+    this.sentId = sentId;
+  }
+
+  public String getBeg() {
+    return beg;
+  }
+
+  public void setBeg(String beg) {
+    this.beg = beg;
+  }
+
+  public String getEnd() {
+    return end;
+  }
+
+  public void setEnd(String end) {
+    this.end = end;
+  }
+
+  public String getParagraphId() {
+    return paragraphId;
+  }
+
+  public void setParagraphId(String paragraphId) {
+    this.paragraphId = paragraphId;
+  }
+
+  public String getChapterId() {
+
+    return this.chapterId;
+  }
+
+}
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/part/ProjectExplorer.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/part/ProjectExplorer.java
index 4f6c67bae16efd020ac2e9d29c48734fbf290e1c..15189cd172015b10f3ed91c8e1ed5a90585301c2 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/part/ProjectExplorer.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.projectExplorer/src/de/uniwue/mk/kall/athen/projectExplorer/part/ProjectExplorer.java
@@ -16,6 +16,7 @@ import org.eclipse.swt.dnd.Transfer;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.TreeItem;
+import org.osgi.service.event.Event;
 import org.osgi.service.event.EventHandler;
 
 import de.uniwue.mk.kall.athen.appDelegation.ui.MasterPart;
@@ -81,6 +82,19 @@ public class ProjectExplorer {
 		MasterPart.subscribeForEvent(ProjectExplorer.class, IAnnotationEditorEvents.FILE_DELETED_ACTION_EVENT,
 				new ReloadProjectHandler(this, false));
 
+		MasterPart.subscribeForEvent(ProjectExplorer.class, IAnnotationEditorEvents.OPEN_DOCUMENT_REQUESTED,
+				new EventHandler() {
+
+					@Override
+					public void handleEvent(Event event) {
+						File documentFile = (File) event.getProperty(IEventBroker.DATA);
+						// TODO
+						System.out.println("Open Remaining");
+						new OpenRemainingAction(documentFile, MasterPart.getBroker()).run();
+
+					}
+				});
+
 	}
 
 	/*
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.selection.analyzer/src/de/uniwue/mk/kall/athen/selection/analyzer/ui/SelectionAnalyzerTreeContentProvider.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.selection.analyzer/src/de/uniwue/mk/kall/athen/selection/analyzer/ui/SelectionAnalyzerTreeContentProvider.java
index 0a195db50d4b0e5d662d6111e8c45c5cf8e99353..a05ef4a02e73f2a14bbfa44b3b8ac857b17d1eea 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.selection.analyzer/src/de/uniwue/mk/kall/athen/selection/analyzer/ui/SelectionAnalyzerTreeContentProvider.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.athen.selection.analyzer/src/de/uniwue/mk/kall/athen/selection/analyzer/ui/SelectionAnalyzerTreeContentProvider.java
@@ -4,7 +4,9 @@ import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 
+import org.apache.uima.cas.ArrayFS;
 import org.apache.uima.cas.Feature;
+import org.apache.uima.cas.FeatureStructure;
 import org.apache.uima.cas.Type;
 import org.apache.uima.cas.impl.ArrayFSImpl;
 import org.apache.uima.cas.text.AnnotationFS;
@@ -12,6 +14,9 @@ import org.apache.uima.cas.text.AnnotationIndex;
 import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.Viewer;
 
+
+
+
 public class SelectionAnalyzerTreeContentProvider implements ITreeContentProvider {
 
 	private SelectionAnalyzer analyzer;
@@ -75,7 +80,6 @@ public class SelectionAnalyzerTreeContentProvider implements ITreeContentProvide
 
 			List<FeatureValueWrapper> wrapperObjects = new ArrayList<FeatureValueWrapper>();
 			for (Feature f : features) {
-
 				if (f.getRange().isPrimitive()) {
 					wrapperObjects.add(new FeatureValueWrapper(f, anno.getFeatureValueAsString(f)));
 				}
@@ -90,6 +94,33 @@ public class SelectionAnalyzerTreeContentProvider implements ITreeContentProvide
 			return wrapperObjects.toArray(new FeatureValueWrapper[0]);
 
 		}
+		
+		// do not move it above AnnotationSF!!
+		else if (parentElement instanceof FeatureStructure) {
+			FeatureStructure anno = (FeatureStructure) parentElement;
+			
+
+			List<Feature> features = anno.getType().getFeatures();
+
+			// TODO add a wrapper type for the features so that you can access
+			// their values !!
+
+			List<FeatureValueWrapper> wrapperObjects = new ArrayList<FeatureValueWrapper>();
+			for (Feature f : features) {
+
+				if (f.getRange().isPrimitive()) {
+					wrapperObjects.add(new FeatureValueWrapper(f, anno.getFeatureValueAsString(f)));
+				}
+
+				else {
+					if (!f.getName().contains(":sofa")) {
+						wrapperObjects.add(new FeatureValueWrapper(f, anno.getFeatureValue(f)));
+					}
+				}
+			}
+			return wrapperObjects.toArray(new FeatureValueWrapper[0]);
+
+		}
 
 		else if (parentElement instanceof FeatureValueWrapper) {
 
@@ -99,7 +130,6 @@ public class SelectionAnalyzerTreeContentProvider implements ITreeContentProvide
 				return null;
 
 			else {
-
 				if (wrapper.value != null) {
 					if (wrapper.feature.getRange().toString().equals("uima.tcas.Annotation")) {
 						return new Object[] { (AnnotationFS) wrapper.value };
@@ -115,6 +145,19 @@ public class SelectionAnalyzerTreeContentProvider implements ITreeContentProvide
 							annos.add((AnnotationFS) arr.get(i));
 						}
 						return annos.toArray(new AnnotationFS[0]);
+					} else if (wrapper.feature.getRange().isArray()) {
+
+						if (wrapper.value instanceof ArrayFS) {
+							ArrayFS arr = (ArrayFS) wrapper.value;
+
+							return arr.toArray();
+						}
+					}
+					
+					else if(wrapper.value instanceof FeatureStructure){
+						FeatureStructure fs = (FeatureStructure) wrapper.value;
+						
+						return new FeatureStructure[]{fs};
 					}
 				}
 			}
@@ -154,6 +197,10 @@ public class SelectionAnalyzerTreeContentProvider implements ITreeContentProvide
 		if (element instanceof AnnotationFS) {
 			return true;
 		}
+		
+		else if (element instanceof FeatureStructure) {
+			return true;
+		}
 
 		else if (element instanceof FeatureValueWrapper) {
 
@@ -171,7 +218,10 @@ public class SelectionAnalyzerTreeContentProvider implements ITreeContentProvide
 					// TODO here need all the types to be added
 					else if (wrapper.feature.getRange().toString().equals("uima.tcas.Annotation[]")) {
 						return true;
-					}
+					} else if (wrapper.feature.getRange().isArray()) {
+						return true;
+					} else if (wrapper.value instanceof FeatureStructure)
+						return true;
 				}
 			}
 		}
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.coreferenceview/src/de/uniwue/mk/kall/coreferenceview/part/CorefView.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.coreferenceview/src/de/uniwue/mk/kall/coreferenceview/part/CorefView.java
index 235a43d21706a409157112afe8e906424233fd46..62dfbda2f7377b8e201b5741d70cf55d040ccff7 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.coreferenceview/src/de/uniwue/mk/kall/coreferenceview/part/CorefView.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.coreferenceview/src/de/uniwue/mk/kall/coreferenceview/part/CorefView.java
@@ -38,13 +38,11 @@ import org.eclipse.swt.widgets.Display;
 import org.osgi.service.event.Event;
 
 import de.uniwue.kalimachos.coref.paintingStrategies.BackgroundGCDrawingStrategy;
-import de.uniwue.kalimachos.coref.paintingStrategies.BracketDrawingStrategy;
+import de.uniwue.kalimachos.coref.paintingStrategies.BracketParagraphDrawingStrategy;
 import de.uniwue.mk.athen.textwidget.drawingstrategies.IAnnotationDrawingStrategy;
 import de.uniwue.mk.athen.textwidget.struct.AnnoStyle;
 import de.uniwue.mk.kall.athen.appDelegation.util.ApplicationPreferences;
 import de.uniwue.mk.kall.athen.appDelegation.util.ApplicationUtil;
-import de.uniwue.mk.kall.athen.part.editor.NameFilter;
-import de.uniwue.mk.kall.athen.part.editor.UnderlyingAnnotationFilter;
 import de.uniwue.mk.kall.athen.part.editor.annotations.ATHENEditorDrawingInfo;
 import de.uniwue.mk.kall.athen.part.editor.annotations.AnnotationProcessor;
 import de.uniwue.mk.kall.athen.part.editor.annotations.UIMAInfo;
@@ -54,10 +52,9 @@ import de.uniwue.mk.kall.athen.part.editor.subordinate.AEditorSubordinateViewPar
 import de.uniwue.mk.kall.athen.widget.editor.AnnotationEditorWidget;
 import de.uniwue.mk.kall.coreferenceview.ui.CoreMarkingDialog;
 import de.uniwue.mk.kall.coreferenceview.ui.CorefViewComposite;
-import de.uniwue.mk.kall.coreferenceview.ui.helper.ColViewerComparator;
-import de.uniwue.mk.kall.coreferenceview.ui.helper.IDFilter;
 import de.uniwue.mk.kall.drawingstrategies.generic.DrawingTypeStrategyFactory;
 import de.uniwue.mk.kall.drawingstrategies.generic.struct.EDrawingType;
+import de.uniwue.mk.kall.editorPainting.paintingstrategies.specialized.BorderSceneDrawingStrategy;
 import de.uniwue.mk.kall.editorPainting.paintingstrategies.specialized.DSSpeakerIDDrawingStrategy;
 import de.uniwue.mk.kall.editorPainting.paintingstrategies.specialized.NamedEntityDrawingStrategy;
 import de.uniwue.mk.kall.editorPainting.paintingstrategies.specialized.RelationDanielDrawingStrategy;
@@ -130,13 +127,16 @@ public class CorefView extends AEditorSubordinateViewPart {
 
 	@UIMAInfo(variableType = VariableType.FEATURE, accessingType = AccessingType.PREFERENCES, nameOrKey = ApplicationPreferences.COREFVIEW_NE_NETYPE, correspondingType = ApplicationPreferences.COREFVIEW_NE_TYPE, correspondingAccessingType = AccessingType.PREFERENCES)
 	private Feature featureNEType;
-	
-	@UIMAInfo(variableType=VariableType.FEATURE,nameOrKey="SystemID", correspondingType=TYPE_NAMED_ENTITY)
+
+	@UIMAInfo(variableType = VariableType.FEATURE, nameOrKey = "SystemID", correspondingType = TYPE_NAMED_ENTITY)
 	private Feature featureNESystemID;
-	
-	@UIMAInfo(variableType=VariableType.FEATURE,nameOrKey="ResolvedReference", correspondingType=TYPE_NAMED_ENTITY)
+
+	@UIMAInfo(variableType = VariableType.FEATURE, nameOrKey = "ResolvedReference", correspondingType = TYPE_NAMED_ENTITY)
 	private Feature featureNEResolvedReference;
 
+	@UIMAInfo(variableType = VariableType.FEATURE, nameOrKey = "IsImportant", correspondingType = TYPE_NAMED_ENTITY)
+	private Feature featureIsImportant;
+
 	// those should not be stored like this!!
 	private static final String APPELATIV_ABSTRAKTA = "AppA";
 	private static final String APPELATIV_TEIL_FIKT_WELT = "AppTdfW";
@@ -197,6 +197,7 @@ public class CorefView extends AEditorSubordinateViewPart {
 
 		// directspeech type TODO aufpassen !!
 		this.typeDS = editor.getCas().getTypeSystem().getType("de.uniwue.kalimachos.coref.type.DirectSpeech");
+		Type sceneType = editor.getCas().getTypeSystem().getType("de.uniwue.kallimachos.coref.type.Scene");
 
 		// Visibility
 
@@ -204,6 +205,7 @@ public class CorefView extends AEditorSubordinateViewPart {
 		editor.changeVisibility(typOverride, true);
 		editor.changeVisibility(typTemp, true);
 		editor.changeVisibility(relationType, true);
+		editor.changeVisibility(sceneType, true);
 
 		if (typeDS != null) {
 
@@ -221,10 +223,16 @@ public class CorefView extends AEditorSubordinateViewPart {
 			editor.changeLayer(typeDS, 0);
 		}
 
+		// Boxes at the border for a scene
+		StyleRange sRScene = new StyleRange();
+		sRScene.background = new Color(Display.getCurrent(), 233, 247, 74);
+		AnnoStyle styleScene = new AnnoStyle(new BorderSceneDrawingStrategy(), sRScene);
+		editor.changeStyle(sceneType, styleScene);
+
 		// paragraph
 		StyleRange rangeTypPar = new StyleRange();
 		rangeTypPar.background = new Color(Display.getCurrent(), 0, 100, 100);
-		AnnoStyle stylePar = new AnnoStyle(new BracketDrawingStrategy(rangeTypPar), rangeTypPar);
+		AnnoStyle stylePar = new AnnoStyle(new BracketParagraphDrawingStrategy(rangeTypPar), rangeTypPar);
 
 		editor.changeStyle(typeParagraph, stylePar);
 		editor.changeVisibility(typeParagraph, true);
@@ -247,9 +255,7 @@ public class CorefView extends AEditorSubordinateViewPart {
 		rangeTyp.background = new Color(overlay.getDisplay(), 255, 0, 0);
 		drawingStrategy = new NamedEntityDrawingStrategy(rangeTyp, idFeat.getShortName(), coreFeat.getShortName(),
 				pseudoFeat.getShortName(), numberFeat, genderFeat, coreRangeFeat.getShortName());
-		AnnoStyle style = new AnnoStyle(
-				drawingStrategy,
-				rangeTyp);
+		AnnoStyle style = new AnnoStyle(drawingStrategy, rangeTyp);
 
 		// TEMP
 		StyleRange rangeTemp = new StyleRange();
@@ -283,7 +289,6 @@ public class CorefView extends AEditorSubordinateViewPart {
 
 		// also change the modus
 		editor.setActiveMode(typNE);
-		
 
 		return true;
 
@@ -549,6 +554,80 @@ public class CorefView extends AEditorSubordinateViewPart {
 
 	}
 
+	@Override
+	public void onEditorKeyPressed(Event arg0) {
+		Character pressed = (Character) arg0.getProperty(IEventBroker.DATA);
+
+		if (pressed == 'h') {
+			List<AnnotationFS> currentSelectionOfType = editor.getCurrentSelectionOfType(typNE);
+
+			currentSelectionOfType.stream().forEach(ne -> toggleMainCharacter(ne));
+		}
+
+		else if (pressed == 'n') {
+			List<AnnotationFS> currentSelectionOfType = editor.getCurrentSelectionOfType(typNE);
+
+			if (!currentSelectionOfType.isEmpty()) {
+				// we jump from the first one to the next with the same id
+				AnnotationFS anno = currentSelectionOfType.get(0);
+				String id = anno.getFeatureValueAsString(idFeat);
+
+				FSIterator<AnnotationFS> iterator = editor.getCas().getAnnotationIndex(typNE).iterator();
+
+				iterator.moveTo(anno);
+				while (iterator.isValid() && iterator.hasNext()) {
+					iterator.moveToNext();
+					if (iterator.isValid()) {
+						AnnotationFS annoNext = iterator.get();
+
+						if (annoNext.getFeatureValueAsString(idFeat).equals(id)) {
+							editor.highlightRange(annoNext.getBegin(), annoNext.getEnd() - annoNext.getBegin(), true);
+							editor.setCaretOffset(annoNext.getBegin());
+							break;
+						}
+					}
+				}
+
+			}
+		}
+
+		if (pressed == 'p') {
+			List<AnnotationFS> currentSelectionOfType = editor.getCurrentSelectionOfType(typNE);
+
+			AnnotationFS anno = currentSelectionOfType.get(0);
+			String id = anno.getFeatureValueAsString(idFeat);
+
+			FSIterator<AnnotationFS> iterator = editor.getCas().getAnnotationIndex(typNE).iterator();
+
+			iterator.moveTo(anno);
+			while (iterator.isValid() && iterator.hasNext()) {
+				iterator.moveToPrevious();
+				if (iterator.isValid()) {
+					AnnotationFS annoPrevious = iterator.get();
+
+					if (annoPrevious.getFeatureValueAsString(idFeat).equals(id)) {
+						editor.highlightRange(annoPrevious.getBegin(), annoPrevious.getEnd() - annoPrevious.getBegin(),
+								true);
+						editor.setCaretOffset(annoPrevious.getBegin());
+						break;
+					}
+				}
+			}
+		}
+
+	}
+
+	private void toggleMainCharacter(AnnotationFS ne) {
+
+		String impValue = ne.getFeatureValueAsString(featureIsImportant);
+
+		if (impValue == null || impValue.equals("false")) {
+			ne.setFeatureValueFromString(featureIsImportant, "true");
+		} else {
+			ne.setFeatureValueFromString(featureIsImportant, "false");
+		}
+	}
+
 	@Override
 	public void onAnnotationRemoved(org.osgi.service.event.Event arg0) {
 		AnnotationFS removed = (AnnotationFS) arg0.getProperty(IEventBroker.DATA);
@@ -607,9 +686,10 @@ public class CorefView extends AEditorSubordinateViewPart {
 		}
 
 		AnnotationFS coveringNE = getCoveringNE(caretPos);
-		if (coveringNE == null){
+		if (coveringNE == null) {
 			drawingStrategy.setSelectedAnno(null);
-			return;}
+			return;
+		}
 
 		drawingStrategy.setSelectedAnno(coveringNE);
 		if (!lastSelection.contains(coveringNE)) {
@@ -687,7 +767,6 @@ public class CorefView extends AEditorSubordinateViewPart {
 				freqMap.put(anno.getCoveredText(), 1);
 			}
 		}
-		
 
 	}
 
@@ -866,7 +945,10 @@ public class CorefView extends AEditorSubordinateViewPart {
 	}
 
 	public String determineName(AnnotationFS anno) {
-		return anno.getFeatureValueAsString(nameFeat);
+		String name = anno.getFeatureValueAsString(nameFeat);
+
+		name = name == null ? anno.getCoveredText() : name;
+		return name;
 	}
 
 	public String determineFrequency(AnnotationFS p) {
@@ -1195,28 +1277,28 @@ public class CorefView extends AEditorSubordinateViewPart {
 
 		// create and add an empty relation
 		Point selection = editor.getWidget().getSelection();
-		
-		//snap to the nearest persons
-		int beg=-1;
+
+		// snap to the nearest persons
+		int beg = -1;
 		int end = -1;
-		int amount=0;
-		for(AnnotationFS a : editor.getCas().getAnnotationIndex(typNE)){
-			if(a.getBegin()>=selection.x && a.getEnd()<=selection.y){
+		int amount = 0;
+		for (AnnotationFS a : editor.getCas().getAnnotationIndex(typNE)) {
+			if (a.getBegin() >= selection.x && a.getEnd() <= selection.y) {
 				amount++;
-				if(beg==-1){
+				if (beg == -1) {
 					beg = a.getBegin();
 				}
-				if(end==-1){
+				if (end == -1) {
 					end = a.getEnd();
 				}
-				beg = a.getBegin()<=beg?a.getBegin():beg;
-				end = a.getEnd()>=end?a.getEnd():end;
+				beg = a.getBegin() <= beg ? a.getBegin() : beg;
+				end = a.getEnd() >= end ? a.getEnd() : end;
 			}
 		}
-		if(amount>=2){
-			//SNAP!
+		if (amount >= 2) {
+			// SNAP!
 			selection.x = beg;
-			selection.y =end;
+			selection.y = end;
 		}
 		AnnotationFS anno = editor.getCas().createAnnotation(relationType, selection.x, selection.y);
 		editor.addAnnotation(anno);
@@ -1261,6 +1343,5 @@ public class CorefView extends AEditorSubordinateViewPart {
 	public void setUserIndependentJumpFeature(boolean userIndependentJumpFeature) {
 		this.userIndependentJumpFeature = userIndependentJumpFeature;
 	}
-	
 
 }
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.coreferenceview/src/de/uniwue/mk/kall/coreferenceview/ui/CorefViewTableComposite.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.coreferenceview/src/de/uniwue/mk/kall/coreferenceview/ui/CorefViewTableComposite.java
index 0aa087e3e5c6162b0d6860cbd9f189d625fb9af2..2c3209913a9e93098b3ada0dc08756e72cefd541 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.coreferenceview/src/de/uniwue/mk/kall/coreferenceview/ui/CorefViewTableComposite.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.coreferenceview/src/de/uniwue/mk/kall/coreferenceview/ui/CorefViewTableComposite.java
@@ -231,11 +231,11 @@ public class CorefViewTableComposite extends Composite {
 		// those only have selection listener
 		buttonUseIDFilter.addListener(SWT.Selection, (Event e) -> {
 			idFilter.setFilterActive(buttonUseIDFilter.getSelection());
-			refreshTable();
+			part.renewPage();
 		});
 		buttonShowOnlyHandled.addListener(SWT.Selection, (Event e) -> {
 			ovFilter.setActive(buttonShowOnlyHandled.getSelection());
-			refreshTable();
+			part.renewPage();
 		});
 
 		// search text got a key listener
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/META-INF/MANIFEST.MF b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/META-INF/MANIFEST.MF
index a8a1204e13d79bdd117f923e4d10c1bb86b1e189..3ef8bba22d65495394dbc4ff6d3b292efc87aa0f 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/META-INF/MANIFEST.MF
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/META-INF/MANIFEST.MF
@@ -1,32 +1,32 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: EditorPainting
-Bundle-SymbolicName: de.uniwue.mk.kall.editorPainting
-Bundle-Version: 1.0.0.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.7,
- JavaSE-1.8
-Export-Package: de.uniwue.kalimachos.coref.paintingStrategies;
-  uses:="de.uniwue.kalimachos.coref.editor.drawingstructure,
-   org.eclipse.swt.graphics,
-   org.eclipse.swt.custom,
-   org.apache.uima.cas.text",
- de.uniwue.mk.kall.drawingstrategies.generic,
- de.uniwue.mk.kall.drawingstrategies.generic.struct,
- de.uniwue.mk.kall.editorPainting.paintingstrategies.specialized;
-  uses:="de.uniwue.kalimachos.coref.editor.drawingstructure,
-   org.eclipse.swt.graphics,
-   de.uniwue.kalimachos.coref.paintingStrategies,
-   org.eclipse.swt.custom,
-   org.apache.uima.cas,
-   org.apache.uima.cas.text",
- de.uniwue.mk.kall.editorPainting.util;
-  uses:="org.eclipse.swt.graphics,
-   de.uniwue.kalimachos.coref.paintingStrategies,
-   org.eclipse.swt.custom,
-   org.apache.uima.cas.text"
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.jface,
- org.eclipse.jface.text,
- de.uniwue.mk.athen.textwidget,
- de.uniwue.mkrug.kall.typesystemUtil;bundle-version="1.0.14"
-Bundle-ClassPath: .
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: EditorPainting
+Bundle-SymbolicName: de.uniwue.mk.kall.editorPainting
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7,
+ JavaSE-1.8
+Export-Package: de.uniwue.kalimachos.coref.paintingStrategies;
+  uses:="de.uniwue.kalimachos.coref.editor.drawingstructure,
+   org.eclipse.swt.graphics,
+   org.eclipse.swt.custom,
+   org.apache.uima.cas.text",
+ de.uniwue.mk.kall.drawingstrategies.generic,
+ de.uniwue.mk.kall.drawingstrategies.generic.struct,
+ de.uniwue.mk.kall.editorPainting.paintingstrategies.specialized;
+  uses:="de.uniwue.kalimachos.coref.editor.drawingstructure,
+   org.eclipse.swt.graphics,
+   de.uniwue.kalimachos.coref.paintingStrategies,
+   org.eclipse.swt.custom,
+   org.apache.uima.cas,
+   org.apache.uima.cas.text",
+ de.uniwue.mk.kall.editorPainting.util;
+  uses:="org.eclipse.swt.graphics,
+   de.uniwue.kalimachos.coref.paintingStrategies,
+   org.eclipse.swt.custom,
+   org.apache.uima.cas.text"
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.jface,
+ org.eclipse.jface.text,
+ de.uniwue.mk.athen.textwidget,
+ de.uniwue.mkrug.kall.typesystemUtil
+Bundle-ClassPath: .
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/kalimachos/coref/paintingStrategies/BracketParagraphDrawingStrategy.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/kalimachos/coref/paintingStrategies/BracketParagraphDrawingStrategy.java
new file mode 100644
index 0000000000000000000000000000000000000000..74f28c26232107f19ff136f47876fccec4ac94c8
--- /dev/null
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/kalimachos/coref/paintingStrategies/BracketParagraphDrawingStrategy.java
@@ -0,0 +1,97 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package de.uniwue.kalimachos.coref.paintingStrategies;
+
+import java.util.List;
+
+import org.apache.uima.cas.Feature;
+import org.apache.uima.cas.text.AnnotationFS;
+import org.eclipse.swt.custom.StyleRange;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.FontData;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Rectangle;
+
+import de.uniwue.mk.athen.textwidget.drawingstrategies.IAnnotationDrawingStrategy;
+import de.uniwue.mk.athen.textwidget.widget.ATHENEditorWidget;
+import de.uniwue.mk.kall.editorPainting.util.EditorDrawingUtil;
+
+/**
+ * Draws brackets arround an annotation.
+ */
+public class BracketParagraphDrawingStrategy implements IAnnotationDrawingStrategy {
+
+	private StyleRange styleRange;
+
+	public BracketParagraphDrawingStrategy(StyleRange styleRange) {
+
+		this.styleRange = styleRange;
+
+	}
+
+	@Override
+	public void drawAnnotation(AnnotationFS annotation, ATHENEditorWidget textWidget, GC gc) {
+
+		int length = annotation.getEnd() - annotation.getBegin();
+		int offset = annotation.getBegin();
+
+		if (length > 0) {
+
+			if (gc != null) {
+				gc.setForeground(styleRange.background);
+				EditorDrawingUtil.drawBracketAroundAnnotation(annotation, textWidget, gc, length, offset);
+
+				List<Rectangle> textBounds = EditorDrawingUtil.getTextBounds(annotation, textWidget);
+
+				// get the last one
+				if (!textBounds.isEmpty()) {
+					Rectangle lastRect = textBounds.get(textBounds.size() - 1);
+
+					// adjust the Font
+					Font initialFont = textWidget.getFont();
+					FontData[] fontData = initialFont.getFontData();
+					for (int i = 0; i < fontData.length; i++) {
+						fontData[i].setHeight(8);
+					}
+
+					Font font = new Font(gc.getDevice(), fontData);
+					gc.setFont(font);
+					// read the feature
+					Feature f = annotation.getType().getFeatureByBaseName("MetaInfo");
+					if (f != null) {
+						String val = annotation.getFeatureValueAsString(f);
+						if (val != null) {
+							gc.drawString(val, lastRect.x + lastRect.width + 15, lastRect.y - 15);
+						}
+					}
+					
+					font.dispose();
+				}
+			}
+
+		}
+
+	}
+
+	@Override
+	public int getPreferredLineHeight(AnnotationFS anno) {
+		return 0;
+	}
+}
\ No newline at end of file
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/kalimachos/coref/paintingStrategies/EPaintingStyles.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/kalimachos/coref/paintingStrategies/EPaintingStyles.java
index 99e30fc270d048d268501d5b091dfc010a7ca438..92ae8cf0756990b47c06abc21b9e3eb2785c4ad5 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/kalimachos/coref/paintingStrategies/EPaintingStyles.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/kalimachos/coref/paintingStrategies/EPaintingStyles.java
@@ -1,7 +1,7 @@
 package de.uniwue.kalimachos.coref.paintingStrategies;
 
 public enum EPaintingStyles {
-  BACKGROUND, BOX, BRACKET, ONE_FEATURE, MULTI_FEATURE, NAMEDENTITY, UNDERLINE;
+  BACKGROUND, BOX, BRACKET, UNDERLINE;
   
   
 
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/mk/kall/drawingstrategies/generic/BoxDrawingStrategy.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/mk/kall/drawingstrategies/generic/BoxDrawingStrategy.java
index dae01cec9ed46f3f1b0cc030f81f8e0663ddd5bc..e29f9f12c5f63f7288e9c766969835830e3fbe86 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/mk/kall/drawingstrategies/generic/BoxDrawingStrategy.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/mk/kall/drawingstrategies/generic/BoxDrawingStrategy.java
@@ -2,13 +2,10 @@ package de.uniwue.mk.kall.drawingstrategies.generic;
 
 import org.apache.uima.cas.Feature;
 import org.apache.uima.cas.text.AnnotationFS;
-import org.eclipse.swt.custom.StyleRange;
 import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.GC;
 import org.eclipse.swt.widgets.Display;
 
-import de.uniwue.mk.athen.textwidget.drawingstrategies.IAnnotationDrawingStrategy;
-import de.uniwue.mk.athen.textwidget.struct.TypeStyleDataStructure;
 import de.uniwue.mk.athen.textwidget.widget.ATHENEditorWidget;
 import de.uniwue.mk.kall.drawingstrategies.generic.struct.DrawingStruct;
 import de.uniwue.mk.kall.editorPainting.util.EditorDrawingUtil;
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/mk/kall/drawingstrategies/generic/GenericDrawingStrategy.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/mk/kall/drawingstrategies/generic/GenericDrawingStrategy.java
index 0f1ff1c0dfcab29231f27553c476f65586705413..ba1516549483df78debe979ace62ecd1af607102 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/mk/kall/drawingstrategies/generic/GenericDrawingStrategy.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/mk/kall/drawingstrategies/generic/GenericDrawingStrategy.java
@@ -1,6 +1,7 @@
 package de.uniwue.mk.kall.drawingstrategies.generic;
 
 import org.apache.uima.cas.text.AnnotationFS;
+import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.GC;
 
 import de.uniwue.mk.athen.textwidget.drawingstrategies.IAnnotationDrawingStrategy;
@@ -22,6 +23,12 @@ public class GenericDrawingStrategy implements IAnnotationDrawingStrategy{
 		
 		
 	}
+	
+	public void changeColor(Color bg, Color fg){
+		if(typeDrawingStruct!=null){
+			typeDrawingStruct.changeColor(bg,fg);
+		}
+	}
 
 	@Override
 	public int getPreferredLineHeight(AnnotationFS anno) {
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/mk/kall/drawingstrategies/generic/struct/FeatureDrawingStrategy.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/mk/kall/drawingstrategies/generic/struct/FeatureDrawingStrategy.java
index b7d4a0b4dc76530e513e2e4f2590b2fa24b7c87e..29d841b19a869647e89015ecff7bab5b3b5f9157 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/mk/kall/drawingstrategies/generic/struct/FeatureDrawingStrategy.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/mk/kall/drawingstrategies/generic/struct/FeatureDrawingStrategy.java
@@ -7,6 +7,7 @@ import javax.sound.midi.Synthesizer;
 
 import org.apache.uima.cas.Feature;
 import org.apache.uima.cas.text.AnnotationFS;
+import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.GC;
 
 import de.uniwue.mk.athen.textwidget.widget.ATHENEditorWidget;
@@ -86,6 +87,13 @@ public class FeatureDrawingStrategy {
 		
 	}
 
+	public void changeColor(Color bg, Color fg) {
+		if(defaultDrawingStrategy!=null){
+			defaultDrawingStrategy.changeColor(bg,fg);
+		}
+		
+	}
+
 	
 	
 
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/mk/kall/drawingstrategies/generic/struct/FeatureValueDrawingStategy.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/mk/kall/drawingstrategies/generic/struct/FeatureValueDrawingStategy.java
index 5dfaae5d4e7464199739d3cb489f5686c4ac906c..87a861e9039b863e14ef087c1cd2e7684a4e99a3 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/mk/kall/drawingstrategies/generic/struct/FeatureValueDrawingStategy.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/mk/kall/drawingstrategies/generic/struct/FeatureValueDrawingStategy.java
@@ -86,4 +86,17 @@ public class FeatureValueDrawingStategy {
 
 	}
 
+	public void changeColor(Color bg, Color fg) {
+
+		if (drawingStruct != null) {
+			if (fg != null) {
+				drawingStruct.setForeGroundColor(fg.getRGBA());
+			}
+			if (bg != null) {
+				drawingStruct.setBackGroundColor(bg.getRGBA());
+			}
+		}
+
+	}
+
 }
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/mk/kall/drawingstrategies/generic/struct/TypeDrawingStrategy.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/mk/kall/drawingstrategies/generic/struct/TypeDrawingStrategy.java
index ecd1281482b8144e462edb86c5822084ea8067a1..883badd36109e959bd86c1ed355f65165746af5d 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/mk/kall/drawingstrategies/generic/struct/TypeDrawingStrategy.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/mk/kall/drawingstrategies/generic/struct/TypeDrawingStrategy.java
@@ -5,6 +5,7 @@ import java.util.List;
 
 import org.apache.uima.cas.Type;
 import org.apache.uima.cas.text.AnnotationFS;
+import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.GC;
 
 import de.uniwue.mk.athen.textwidget.widget.ATHENEditorWidget;
@@ -18,7 +19,7 @@ public class TypeDrawingStrategy {
 	public TypeDrawingStrategy(Type type, FeatureDrawingStrategy spanDrawingStrategy,
 			FeatureDrawingStrategy... featureDrawingStructs) {
 
-		if (spanDrawingStruct == null && featureDrawingStructs == null)
+		if (spanDrawingStrategy == null && featureDrawingStructs == null)
 			throw new IllegalArgumentException("Can not draw this, since everything is null");
 
 		if (type == null) {
@@ -75,4 +76,11 @@ public class TypeDrawingStrategy {
 		
 	}
 
+	public void changeColor(Color bg, Color fg) {
+		if(spanDrawingStruct!=null){
+			spanDrawingStruct.changeColor(bg,fg);
+		}
+		
+	}
+
 }
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/mk/kall/editorPainting/paintingstrategies/specialized/NamedEntityDrawingStrategy.java b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/mk/kall/editorPainting/paintingstrategies/specialized/NamedEntityDrawingStrategy.java
index 7fc28a576494d3801077be46d4bd8c984e30371f..1d9f84ab5a53b37e0a86d177ae89ee3003ab3b94 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/mk/kall/editorPainting/paintingstrategies/specialized/NamedEntityDrawingStrategy.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mk.kall.editorPainting/src/de/uniwue/mk/kall/editorPainting/paintingstrategies/specialized/NamedEntityDrawingStrategy.java
@@ -105,7 +105,14 @@ public class NamedEntityDrawingStrategy implements IAnnotationDrawingStrategy {
 		gc.setFont(font);
 
 		// draw the span
+		Feature featIsImportant = anno.getType().getFeatureByBaseName("IsImportant");
+		String isImpValue = anno.getFeatureValueAsString(featIsImportant);
+		if(isImpValue!=null &&isImpValue.startsWith("true")){
+			gc.setLineWidth(2);
+		}
 		EditorDrawingUtil.drawBoxAroundAnnotation(anno, widget, gc);
+		
+		gc.setLineWidth(1);
 
 		// coref-ID
 		Rectangle lastRect = contours.get(contours.size() - 1);
@@ -127,7 +134,12 @@ public class NamedEntityDrawingStrategy implements IAnnotationDrawingStrategy {
 					else{
 						gc.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
 					}
-					gc.drawString(anno.getFeatureValueAsString(f), lastRect.x + lastRect.width - 1,
+					
+					Feature fMappedId = anno.getType().getFeatureByBaseName("MappedID");
+					if(anno.getFeatureValueAsString(fMappedId)!=null){
+						feat+=":"+anno.getFeatureValueAsString(fMappedId);
+					}
+					gc.drawString(feat, lastRect.x + lastRect.width - 1,
 							lastRect.y - FONTSIZE - 7);
 				}
 
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mkrug.kallimachos.annotation.editor/src/de/uniwue/mkrug/kallimachos/annotation/editor/ui/DSAnnotatingView.java b/de.uniwue.mk.athen/bundles/de.uniwue.mkrug.kallimachos.annotation.editor/src/de/uniwue/mkrug/kallimachos/annotation/editor/ui/DSAnnotatingView.java
index bd4adadd0914e8811633e3e193885ac4a0356dbc..264eb83a548cb78f7b41fe3307c06d0848970975 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mkrug.kallimachos.annotation.editor/src/de/uniwue/mkrug/kallimachos/annotation/editor/ui/DSAnnotatingView.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mkrug.kallimachos.annotation.editor/src/de/uniwue/mkrug/kallimachos/annotation/editor/ui/DSAnnotatingView.java
@@ -9,11 +9,11 @@ import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
 import javax.inject.Inject;
 
+import org.apache.uima.cas.ArrayFS;
 import org.apache.uima.cas.CAS;
-import org.apache.uima.cas.CASException;
 import org.apache.uima.cas.Feature;
+import org.apache.uima.cas.FeatureStructure;
 import org.apache.uima.cas.Type;
-import org.apache.uima.cas.impl.ArrayFSImpl;
 import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.cas.text.AnnotationIndex;
 import org.eclipse.e4.core.services.events.IEventBroker;
@@ -64,6 +64,7 @@ import de.uniwue.kalimachos.coref.paintingStrategies.BackgroundGCDrawingStrategy
 import de.uniwue.mk.athen.textwidget.drawingstrategies.IAnnotationDrawingStrategy;
 import de.uniwue.mk.athen.textwidget.struct.AnnoStyle;
 import de.uniwue.mk.kall.athen.appDelegation.util.ApplicationUtil;
+import de.uniwue.mk.kall.athen.part.editor.MainCharacterFilter;
 import de.uniwue.mk.kall.athen.part.editor.NameFilter;
 import de.uniwue.mk.kall.athen.part.editor.subordinate.AEditorSubordinateViewPart;
 import de.uniwue.mk.kall.athen.widget.editor.AnnotationEditorWidget;
@@ -93,7 +94,8 @@ public class DSAnnotatingView extends AEditorSubordinateViewPart {
 	private TableViewer viewer;
 
 	private NameFilter filter;
-	// private FrameFilterAttViewPersonTable frameFilter;
+	private MainCharacterFilter mainCharFilter;
+	private FrameFilterAttViewPersonTable frameFilter;
 
 	private List<AnnotationFS> annoListPersons;
 
@@ -117,14 +119,6 @@ public class DSAnnotatingView extends AEditorSubordinateViewPart {
 	@Inject
 	EModelService modelService;
 
-	public Button getJumpButton() {
-		return jumpButton;
-	}
-
-	public void setJumpButton(Button jumpButton) {
-		this.jumpButton = jumpButton;
-	}
-
 	private Type typOverride;
 	private Type neType;
 	private Type typ;
@@ -162,14 +156,14 @@ public class DSAnnotatingView extends AEditorSubordinateViewPart {
 
 	private MPart part;
 
-	Button jumpButton;
-
 	private Point lastClick = null;
 
 	private Button idButton;
 	private Label frameFilterLabel;
 	private Button frameFilterButton;
 
+	private Label importantPersonFilterLabel;
+	private Button importantPersonFilterButton;
 	private String text;
 
 	// initial it is selected
@@ -227,8 +221,8 @@ public class DSAnnotatingView extends AEditorSubordinateViewPart {
 
 		for (AnnotationFS ds : editor.getCas().getAnnotationIndex(typ)) {
 
-			ArrayFSImpl speakerArray = (ArrayFSImpl) ds.getFeatureValue(speakerArrayFeature);
-			ArrayFSImpl spokenToArray = (ArrayFSImpl) ds.getFeatureValue(spokenToArrayFeature);
+			ArrayFS speakerArray = (ArrayFS) ds.getFeatureValue(speakerArrayFeature);
+			ArrayFS spokenToArray = (ArrayFS) ds.getFeatureValue(spokenToArrayFeature);
 
 			if (speakerArray == null || speakerArray.size() == 0) {
 
@@ -237,7 +231,7 @@ public class DSAnnotatingView extends AEditorSubordinateViewPart {
 				AnnotationFS speaker = (AnnotationFS) ds.getFeatureValue(speakerFeature);
 
 				if (speaker != null) {
-					ArrayFSImpl arrayNew = (ArrayFSImpl) editor.getCas().createArrayFS(1);
+					ArrayFS arrayNew = (ArrayFS) editor.getCas().createArrayFS(1);
 
 					arrayNew.set(0, speaker);
 
@@ -253,7 +247,7 @@ public class DSAnnotatingView extends AEditorSubordinateViewPart {
 				AnnotationFS spokenTo = (AnnotationFS) ds.getFeatureValue(spokenToFeature);
 
 				if (spokenTo != null) {
-					ArrayFSImpl arrayNew = (ArrayFSImpl) editor.getCas().createArrayFS(1);
+					ArrayFS arrayNew = (ArrayFS) editor.getCas().createArrayFS(1);
 
 					arrayNew.set(0, spokenTo);
 
@@ -492,7 +486,8 @@ public class DSAnnotatingView extends AEditorSubordinateViewPart {
 
 				}
 
-				else if (selected != null && editor.getActualSelectedText().x <= selected.getBegin()
+				else if (selected != null && editor.getActualSelectedText() != null
+						&& editor.getActualSelectedText().x <= selected.getBegin()
 						&& editor.getActualSelectedText().y >= selected.getEnd()) {
 					Point selection = editor.getActualSelectedText();
 					AnnotationFS anno = cas.createAnnotation(typ, selection.x, selection.y);
@@ -516,7 +511,7 @@ public class DSAnnotatingView extends AEditorSubordinateViewPart {
 		neuEnt.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL));
 
 		Button noEntity = new Button(comp2, SWT.NONE);
-		noEntity.setText("No Direct Speech");
+		noEntity.setText("Delete Direct Speech");
 		noEntity.addSelectionListener(new SelectionListener() {
 
 			@Override
@@ -536,6 +531,13 @@ public class DSAnnotatingView extends AEditorSubordinateViewPart {
 				if (box.getSelection()) {
 
 					// we delete all
+					List<AnnotationFS> dsAnnos = new ArrayList<>();
+					for (AnnotationFS ds : editor.getCas().getAnnotationIndex(typ)) {
+						dsAnnos.add(ds);
+					}
+					for (AnnotationFS ds : dsAnnos) {
+						deleteAnnotation(ds);
+					}
 
 				}
 
@@ -582,11 +584,16 @@ public class DSAnnotatingView extends AEditorSubordinateViewPart {
 
 				if (selected != null) {
 
+					ArrayFS speakerArr = (ArrayFS) selected.getFeatureValue(speakerArrayFeature);
 					selected.setFeatureValue(speakerArrayFeature, null);
 					selected.setFeatureValue(speakerFeature, null);
 
 					editor.changeAnnotation(selected);
 
+					// remove the according temp types
+					for (int i = 0; i < speakerArr.size(); i++) {
+						removeTempType(speakerType, speakerArr.get(i));
+					}
 				}
 
 			}
@@ -618,9 +625,19 @@ public class DSAnnotatingView extends AEditorSubordinateViewPart {
 
 				if (selected != null) {
 
+					ArrayFS spokenToArr = (ArrayFS) selected.getFeatureValue(spokenToArrayFeature);
 					selected.setFeatureValue(spokenToArrayFeature, null);
 					selected.setFeatureValue(spokenToFeature, null);
 					editor.changeAnnotation(selected);
+
+					
+
+					// remove the according temp types
+					if (spokenToArr != null) {
+						for (int i = 0; i < spokenToArr.size(); i++) {
+							removeTempType(spokenToType, spokenToArr.get(i));
+						}
+					}
 				}
 
 			}
@@ -835,8 +852,8 @@ public class DSAnnotatingView extends AEditorSubordinateViewPart {
 
 				for (AnnotationFS context : editor.getCas().getAnnotationIndex(dsContextType)) {
 
-					if (context.getBegin() <= editor.getWidget().getSelection().x
-							&& context.getEnd() >= editor.getWidget().getSelection().y) {
+					if (context.getBegin() <= editor.getWidget().getCaretOffset()
+							&& context.getEnd() >= editor.getWidget().getCaretOffset()) {
 						selected = context;
 						break;
 					}
@@ -985,15 +1002,22 @@ public class DSAnnotatingView extends AEditorSubordinateViewPart {
 
 				if (selected != null) {
 
+					List<AnnotationFS> toRemove = new ArrayList<>();
 					for (AnnotationFS context : editor.getCas().getAnnotationIndex(dsContextType)) {
 
 						AnnotationFS featureValue = (AnnotationFS) context.getFeatureValue(dsContextDs);
 
 						if (featureValue != null && featureValue.getBegin() == selected.getBegin()) {
 							selected.setFeatureValue(dsContextDs, null);
-							editor.removeAnnotation(context);
+							toRemove.add(context);
+							// editor.removeAnnotation(context);
 						}
 					}
+
+					for (AnnotationFS a : toRemove) {
+						editor.removeAnnotation(a);
+						removeTempType(typeTempContextDS, a);
+					}
 				}
 
 			}
@@ -1015,13 +1039,6 @@ public class DSAnnotatingView extends AEditorSubordinateViewPart {
 		GridLayout lay = new GridLayout(2, false);
 		compp.setLayout(lay);
 
-		// jumplabel is always visible and only affects the attribute jump
-		Label noJumpLabel = new Label(compp, SWT.NONE);
-		noJumpLabel.setText("Jump to next?: ");
-		jumpButton = new Button(compp, SWT.CHECK);
-		jumpButton.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL));
-		jumpButton.setSelection(true);
-
 		// add togglebuttons
 
 		Composite compp2 = new Composite(compp, SWT.NULL);
@@ -1091,6 +1108,8 @@ public class DSAnnotatingView extends AEditorSubordinateViewPart {
 		// TODO adjust the filter for both tables !!
 		// filter
 		filter = new NameFilter();
+		mainCharFilter = new MainCharacterFilter();
+		mainCharFilter.setActive(false);
 
 		// id filter
 
@@ -1110,11 +1129,8 @@ public class DSAnnotatingView extends AEditorSubordinateViewPart {
 		frameFilterButton.addSelectionListener(new SelectionAdapter() {
 			@Override
 			public void widgetSelected(SelectionEvent e) {
-				try {
-					renewPage();
-				} catch (CASException e1) {
-					e1.printStackTrace();
-				}
+				renewPage();
+				updateFrameFilter(new Point(editor.getWidget().getBottomIndex(), editor.getWidget().getTopIndex()));
 			}
 		});
 
@@ -1192,7 +1208,7 @@ public class DSAnnotatingView extends AEditorSubordinateViewPart {
 				Point pSelect = editor.getActualSelectedText();
 
 				List<AnnotationFS> actualSelection = editor.getCurrentSelectionOfType(typ);
-				if (pSelect==null ||pSelect.y - pSelect.x == 0) {
+				if (pSelect == null || pSelect.y - pSelect.x == 0) {
 					// here we update the Features of the annotation
 
 					System.out.println("NullSpan " + actualSelection.size());
@@ -1229,7 +1245,6 @@ public class DSAnnotatingView extends AEditorSubordinateViewPart {
 
 				}
 
-				
 				if (actualSelection.size() > 0) {
 					editor.changeAnnotation(actualSelection.get(0));
 				}
@@ -1239,13 +1254,13 @@ public class DSAnnotatingView extends AEditorSubordinateViewPart {
 			private void updateSpeakerArrays(Feature selF, AnnotationFS ds, AnnotationFS selected) {
 
 				if (selF.getName().contains("SpokenTo")) {
-					ArrayFSImpl spokArray = (ArrayFSImpl) ds.getFeatureValue(spokenToArrayFeature);
+					ArrayFS spokArray = (ArrayFS) ds.getFeatureValue(spokenToArrayFeature);
 
 					int size = 1;
 					if (spokArray != null)
 						size = spokArray.size() + 1;
 
-					ArrayFSImpl arrayNew = (ArrayFSImpl) editor.getCas().createArrayFS(size);
+					ArrayFS arrayNew = (ArrayFS) editor.getCas().createArrayFS(size);
 
 					if (spokArray == null) {
 						arrayNew.set(0, selected);
@@ -1265,13 +1280,13 @@ public class DSAnnotatingView extends AEditorSubordinateViewPart {
 
 				// speaker
 				else {
-					ArrayFSImpl speakerArray = (ArrayFSImpl) ds.getFeatureValue(speakerArrayFeature);
+					ArrayFS speakerArray = (ArrayFS) ds.getFeatureValue(speakerArrayFeature);
 
 					int size = 1;
 					if (speakerArray != null)
 						size = speakerArray.size() + 1;
 
-					ArrayFSImpl arrayNew = (ArrayFSImpl) editor.getCas().createArrayFS(size);
+					ArrayFS arrayNew = (ArrayFS) editor.getCas().createArrayFS(size);
 
 					if (speakerArray == null) {
 						arrayNew.set(0, selected);
@@ -1351,15 +1366,18 @@ public class DSAnnotatingView extends AEditorSubordinateViewPart {
 
 		// filter
 		filter = new NameFilter();
+		mainCharFilter = new MainCharacterFilter();
+		mainCharFilter.setActive(false);
 		viewer.addFilter(filter);
+		viewer.addFilter(mainCharFilter);
 
 		// id filter
 
 		// frame filter
 		// frameFilter = new FrameFilterAttViewPersonTable();
 		// viewer.addFilter(frameFilter);
-		// frameFilter = new FrameFilterAttViewPersonTable();
-		// viewer.addFilter(frameFilter);
+		frameFilter = new FrameFilterAttViewPersonTable();
+		viewer.addFilter(frameFilter);
 
 		// colViewerComp = new ColViewerComparatorAttributeViewPersonTable(neId,
 		// this);
@@ -1372,7 +1390,7 @@ public class DSAnnotatingView extends AEditorSubordinateViewPart {
 		ColumnViewerToolTipSupport.enableFor(viewer, ToolTip.NO_RECREATE);
 	}
 
-	public void renewPage() throws CASException {
+	public void renewPage() {
 
 		annoListPersons = new ArrayList<AnnotationFS>();
 
@@ -1629,68 +1647,33 @@ public class DSAnnotatingView extends AEditorSubordinateViewPart {
 	public void onAnnotationAdded(org.osgi.service.event.Event e) {
 		AnnotationFS added = (AnnotationFS) e.getProperty(IEventBroker.DATA);
 
-		try {
-			renewPage();
-		} catch (CASException ev) {
-			ev.printStackTrace();
-		}
-
-		if (getJumpButton().getSelection()) {
-
-			// TODO dirty solution
-			AnnotationFS toHIghlight = getNextToHighLight(added);
-
-			if (toHIghlight != null) {
-				getEditor().highlightRange(toHIghlight.getBegin(), toHIghlight.getEnd() - toHIghlight.getBegin(), true);
-
-				getEditor().setSelection(toHIghlight);
-			}
-
-		}
+		renewPage();
 
 	}
 
-	private AnnotationFS getNextToHighLight(AnnotationFS added) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
 	@Override
 	public void onAnnotationRemoved(org.osgi.service.event.Event arg0) {
 		AnnotationFS removed = (AnnotationFS) arg0.getProperty(IEventBroker.DATA);
-		try {
-			renewPage();
-		} catch (CASException e) {
-			e.printStackTrace();
-		}
-
-		if (getJumpButton().getSelection()) {
-			AnnotationFS toHIghlight = getNextToHighLight(removed);
-
-			if (toHIghlight != null) {
-				getEditor().highlightRange(toHIghlight.getBegin(), toHIghlight.getEnd() - toHIghlight.getBegin(), true);
-
-				getEditor().setSelection(toHIghlight);
-			}
-		}
+		renewPage();
 
 	}
 
 	@Override
 	public void onAnnotationChanged(org.osgi.service.event.Event arg0) {
-		// TODO Auto-generated method stub
+		System.out.println("Anno changed!");
+		renewPage();
 
 	}
 
 	@Override
 	public void onAnnotationSelectionChanged(org.osgi.service.event.Event arg0) {
-		// TODO Auto-generated method stub
+		renewPage();
 
 	}
 
 	@Override
 	public void onEditorDoubleClicked(org.osgi.service.event.Event arg0) {
-		// TODO Auto-generated method stub
+		renewPage();
 
 	}
 
@@ -1698,6 +1681,11 @@ public class DSAnnotatingView extends AEditorSubordinateViewPart {
 	public void onEditorWasScrolled(org.osgi.service.event.Event arg0) {
 		Point visible = (Point) arg0.getProperty(IEventBroker.DATA);
 
+		updateFrameFilter(visible);
+
+	}
+
+	private void updateFrameFilter(Point visible) {
 		// change the annotations of the framefilter
 
 		List<AnnotationFS> visibleList = new ArrayList<AnnotationFS>();
@@ -1712,18 +1700,11 @@ public class DSAnnotatingView extends AEditorSubordinateViewPart {
 			}
 		}
 
-		// if (frameFilter != null) {
-		// frameFilter.setAnnotations(visibleList,
-		// frameFilterButton.getSelection());
-		// }
-
-		try {
-			renewPage();
-		} catch (CASException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
+		if (frameFilter != null) {
+			frameFilter.setAnnotations(visibleList, frameFilterButton.getSelection());
 		}
 
+		renewPage();
 	}
 
 	@Override
@@ -1836,7 +1817,7 @@ public class DSAnnotatingView extends AEditorSubordinateViewPart {
 				buttonUnknownSpokenTo.setSelection(false);
 			}
 			// get the speaker of that anno
-			ArrayFSImpl speakerNEArray = (ArrayFSImpl) coveringDS.getFeatureValue(speakerArrayFeature);
+			ArrayFS speakerNEArray = (ArrayFS) coveringDS.getFeatureValue(speakerArrayFeature);
 
 			if (speakerNEArray != null) {
 				for (int i = 0; i < speakerNEArray.size(); i++) {
@@ -1849,7 +1830,7 @@ public class DSAnnotatingView extends AEditorSubordinateViewPart {
 			}
 			// also add spokenToAnnotation if possible
 
-			ArrayFSImpl spokenToNEArray = (ArrayFSImpl) coveringDS.getFeatureValue(spokenToArrayFeature);
+			ArrayFS spokenToNEArray = (ArrayFS) coveringDS.getFeatureValue(spokenToArrayFeature);
 
 			if (spokenToNEArray != null) {
 				for (int i = 0; i < spokenToNEArray.size(); i++) {
@@ -1963,4 +1944,19 @@ public class DSAnnotatingView extends AEditorSubordinateViewPart {
 
 	}
 
+	private void removeTempType(Type toDeleteType, FeatureStructure featureStructure) {
+
+		if (featureStructure instanceof AnnotationFS) {
+			AnnotationFS anno = (AnnotationFS) featureStructure;
+			List<AnnotationFS> toDelete = new ArrayList<>();
+			for (AnnotationFS a : editor.getCas().getAnnotationIndex(toDeleteType)) {
+				if (a.getBegin() == anno.getBegin() && a.getEnd() == anno.getEnd()) {
+					toDelete.add(a);
+				}
+			}
+			editor.removeAnnotations(toDelete);
+		}
+
+	}
+
 }
\ No newline at end of file
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mkrug.kallimachos.annotation.editor/src/de/uniwue/mkrug/kallimachos/annotation/editor/ui/FrameFilterAttViewPersonTable.java b/de.uniwue.mk.athen/bundles/de.uniwue.mkrug.kallimachos.annotation.editor/src/de/uniwue/mkrug/kallimachos/annotation/editor/ui/FrameFilterAttViewPersonTable.java
new file mode 100644
index 0000000000000000000000000000000000000000..40d59052d2b064dfc55ee6abe326f75488117da2
--- /dev/null
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mkrug.kallimachos.annotation.editor/src/de/uniwue/mkrug/kallimachos/annotation/editor/ui/FrameFilterAttViewPersonTable.java
@@ -0,0 +1,52 @@
+package de.uniwue.mkrug.kallimachos.annotation.editor.ui;
+
+import java.util.HashSet;
+import java.util.List;
+
+import org.apache.uima.cas.text.AnnotationFS;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+
+public class FrameFilterAttViewPersonTable extends ViewerFilter {
+
+	/*
+	 * Filter that only displays the annotations that are currently visible in
+	 * the editor (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers
+	 * .Viewer, java.lang.Object, java.lang.Object)
+	 */
+
+	public FrameFilterAttViewPersonTable() {
+		onScreenSet = new HashSet<AnnotationFS>();
+	}
+
+	private boolean filterActive;
+	private HashSet<AnnotationFS> onScreenSet;
+
+	@Override
+	public boolean select(Viewer viewer, Object parentElement, Object element) {
+		AnnotationFS p = (AnnotationFS) element;
+		if (filterActive) {
+			if (onScreenSet.contains(p)) {
+				return true;
+			}
+
+			return false;
+		}
+
+		return true;
+	}
+
+	// should be called whenever the widget scrolls vertically
+	public void setAnnotations(List<AnnotationFS> annoList, boolean filterActive) {
+		// ensure that the value can be used for matching
+		onScreenSet.clear();
+		this.filterActive = filterActive;
+
+		onScreenSet.addAll(annoList);
+
+	}
+
+}
diff --git a/de.uniwue.mk.athen/bundles/de.uniwue.mkrug.kallimachos.annotation.editor/src/de/uniwue/mkrug/kallimachos/annotations/editor/dialogues/DocumentConversionDialog.java b/de.uniwue.mk.athen/bundles/de.uniwue.mkrug.kallimachos.annotation.editor/src/de/uniwue/mkrug/kallimachos/annotations/editor/dialogues/DocumentConversionDialog.java
index c1dcfc64e228f7e847796e665ef26ceb21375e54..5d6e65ec17c0f2445650840110eb32236a2a5ce6 100644
--- a/de.uniwue.mk.athen/bundles/de.uniwue.mkrug.kallimachos.annotation.editor/src/de/uniwue/mkrug/kallimachos/annotations/editor/dialogues/DocumentConversionDialog.java
+++ b/de.uniwue.mk.athen/bundles/de.uniwue.mkrug.kallimachos.annotation.editor/src/de/uniwue/mkrug/kallimachos/annotations/editor/dialogues/DocumentConversionDialog.java
@@ -1,234 +1,235 @@
-package de.uniwue.mkrug.kallimachos.annotations.editor.dialogues;
-
-import java.io.File;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.DirectoryDialog;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-
-import de.uniwue.mk.kall.athen.projectExplorer.conversion.ADocument;
-import de.uniwue.mk.kall.athen.projectExplorer.conversion.DocumentFormatUtil;
-import de.uniwue.mk.kall.athen.projectExplorer.conversion.EFormat;
-import de.uniwue.mk.kall.athen.projectExplorer.conversion.UnsupportedDocument;
-
-public class DocumentConversionDialog extends Dialog {
-	private Text txtFolderIn;
-	private Text txtFolderOut;
-	private Combo cbFormatIn;
-	private Combo cbFormatOut;
-
-
-	public DocumentConversionDialog(Shell parentShell) {
-		super(parentShell);
-	}
-
-
-	@Override
-	protected Control createDialogArea(Composite parent) {
-		Composite composite = new Composite(parent, SWT.NONE);
-
-		GridLayout layout = new GridLayout(3, false);
-		layout.horizontalSpacing = 15;
-		layout.verticalSpacing = 10;
-		layout.marginTop = 10;
-		layout.marginBottom = 10;
-		layout.marginLeft = 10;
-		layout.marginRight = 10;
-		composite.setLayout(layout);
-
-		/*
-		 * controls for folders
-		 */
-		Label lbFolderIn = new Label(composite, SWT.NONE);
-		lbFolderIn.setText("Input Folder:");
-
-		txtFolderIn = new Text(composite, SWT.BORDER);
-		GridData datatfi = new GridData();
-		datatfi.widthHint = 200;
-		datatfi.grabExcessHorizontalSpace = true;
-		txtFolderIn.setLayoutData(datatfi);
-
-		Button btFolderIn = new Button(composite, SWT.PUSH);
-		btFolderIn.setText("Browse...");
-
-		Label lbFolderOut = new Label(composite, SWT.NONE);
-		lbFolderOut.setText("Output Folder:");
-
-		txtFolderOut = new Text(composite, SWT.BORDER);
-		GridData datatfo = new GridData();
-		datatfo.widthHint = 200;
-		datatfo.grabExcessHorizontalSpace = true;
-		txtFolderOut.setLayoutData(datatfo);
-
-		Button btFolderOut = new Button(composite, SWT.PUSH);
-		btFolderOut.setText("Browse...");
-
-		/*
-		 * controls for formats
-		 */
-		Label lbFormatIn = new Label(composite, SWT.NONE);
-		lbFormatIn.setText("Input Format:");
-
-		cbFormatIn = new Combo(composite, SWT.READ_ONLY);
-		Set<String> collect = Arrays.asList(EFormat.values()).stream()
-				.filter(format -> !format.equals(EFormat.UNSUPPORTED_FORMAT))
-				.map(format -> format.toString()).collect(Collectors.toSet());
-		cbFormatIn.setItems(collect.toArray(new String[0]));
-		GridData datacfi = new GridData();
-		datacfi.widthHint = 180;
-		datacfi.grabExcessHorizontalSpace = true;
-		cbFormatIn.setLayoutData(datacfi);
-
-		// dummy element
-		new Label(composite, SWT.NONE);
-
-		Label lbFormatOut = new Label(composite, SWT.NONE);
-		lbFormatOut.setText("Output Format:");
-
-		cbFormatOut = new Combo(composite, SWT.READ_ONLY);
-		GridData datacfo = new GridData();
-		datacfo.widthHint = 180;
-		datacfo.grabExcessHorizontalSpace = true;
-		cbFormatOut.setLayoutData(datacfo);
-
-		// dummy element
-		new Label(composite, SWT.NONE);
-
-		/*
-		 * Selection listeners
-		 */
-		btFolderIn.addSelectionListener(new SelectionListener() {
-
-			@Override
-			public void widgetSelected(SelectionEvent e) {
-				DirectoryDialog dialog = new DirectoryDialog(parent.getShell(), SWT.OPEN);
-				dialog.setFilterPath(txtFolderIn.getText());
-				String reVal = dialog.open();
-				if (reVal != null) {
-					txtFolderIn.setText(reVal);
-				}
-			}
-
-			@Override
-			public void widgetDefaultSelected(SelectionEvent e) {
-			}
-
-		});
-
-		btFolderOut.addSelectionListener(new SelectionListener() {
-
-			@Override
-			public void widgetSelected(SelectionEvent e) {
-				DirectoryDialog dialog = new DirectoryDialog(parent.getShell(), SWT.OPEN);
-				dialog.setFilterPath(txtFolderOut.getText());
-				String reVal = dialog.open();
-				if (reVal != null) {
-					txtFolderOut.setText(reVal);
-				}
-			}
-
-			@Override
-			public void widgetDefaultSelected(SelectionEvent e) {
-			}
-
-		});
-
-		cbFormatIn.addSelectionListener(new SelectionListener() {
-
-			@Override
-			public void widgetSelected(SelectionEvent e) {
-				int selection = cbFormatIn.getSelectionIndex();
-				if (selection < 0) {
-					cbFormatOut.setItems(new String[0]);
-					return;
-				}
-				EFormat source = EFormat.valueOf(cbFormatIn.getItem(selection));
-				Collection<EFormat> targets = DocumentFormatUtil.getPossibleTargetFormats(source);
-				Set<String> set = targets.stream()
-						.filter(format -> !format.equals(EFormat.UNSUPPORTED_FORMAT))
-						.map(format -> format.toString()).collect(Collectors.toSet());
-				cbFormatOut.setItems(set.toArray(new String[0]));
-			}
-
-			@Override
-			public void widgetDefaultSelected(SelectionEvent e) {
-			}
-
-		});
-
-		return parent;
-	}
-
-	@Override
-	protected void okPressed() {
-		if (!inputIsValid()) {
-			return;
-		}
-		// get folders and formats from the controls
-		File sourceFolder = new File(txtFolderIn.getText());
-		File targetFolder = new File(txtFolderOut.getText());
-		EFormat sourceFormat = EFormat.valueOf(
-				cbFormatIn.getItem(cbFormatIn.getSelectionIndex()));
-		EFormat targetFormat = EFormat.valueOf(
-				cbFormatOut.getItem(cbFormatOut.getSelectionIndex()));
-
-		convertFiles(sourceFolder, targetFolder, sourceFormat, targetFormat);
-		super.okPressed();
-	}
-
-
-	private void convertFiles(File sourceFolder, File targetFolder, EFormat sourceFormat, 
-			EFormat targetFormat) {
-		int successfullConversions = 0;
-		for (File sourceFile : sourceFolder.listFiles()) {
-			// skip directories and files that have the wrong format
-			if (sourceFile.isDirectory() || 
-					!sourceFormat.equals(DocumentFormatUtil.determineFormat(sourceFile))) {
-				continue;
-			}
-			ADocument result = DocumentFormatUtil.convertDocument(sourceFile, 
-					sourceFormat, targetFormat);
-			if (result instanceof UnsupportedDocument) {
-				MessageDialog.openWarning(getShell(), "Conversion problem", 
-						sourceFile.getName() + " could not be converted.");
-				continue;
-			}
-			File targetFile = new File(targetFolder, sourceFile.getName());
-			result.serialize(targetFile);
-			successfullConversions++;
-		}
-		MessageDialog.openInformation(getShell(), "Conversion complete", 
-				successfullConversions + " files have been successfully converted.");
-	}
-
-	private boolean inputIsValid() {
-		File fileIn = new File(txtFolderIn.getText());
-		if (!fileIn.exists() || !fileIn.isDirectory()) {
-			return false;
-		}
-		File fileOut = new File(txtFolderOut.getText());
-		if (!fileOut.exists() || !fileOut.isDirectory()) {
-			return false;
-		}
-		if (cbFormatIn.getSelectionIndex() < 0 || cbFormatOut.getSelectionIndex() < 0) {
-			return false;
-		}
-		return true;
-	}
-}
+package de.uniwue.mkrug.kallimachos.annotations.editor.dialogues;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+
+import de.uniwue.mk.kall.athen.projectExplorer.conversion.ADocument;
+import de.uniwue.mk.kall.athen.projectExplorer.conversion.DocumentFormatUtil;
+import de.uniwue.mk.kall.athen.projectExplorer.conversion.EFormat;
+import de.uniwue.mk.kall.athen.projectExplorer.conversion.UnsupportedDocument;
+
+public class DocumentConversionDialog extends Dialog {
+	private Text txtFolderIn;
+	private Text txtFolderOut;
+	private Combo cbFormatIn;
+	private Combo cbFormatOut;
+
+
+	public DocumentConversionDialog(Shell parentShell) {
+		super(parentShell);
+	}
+
+
+	@Override
+	protected Control createDialogArea(Composite parent) {
+		Composite composite = new Composite(parent, SWT.NONE);
+
+		GridLayout layout = new GridLayout(3, false);
+		layout.horizontalSpacing = 15;
+		layout.verticalSpacing = 10;
+		layout.marginTop = 10;
+		layout.marginBottom = 10;
+		layout.marginLeft = 10;
+		layout.marginRight = 10;
+		composite.setLayout(layout);
+
+		/*
+		 * controls for folders
+		 */
+		Label lbFolderIn = new Label(composite, SWT.NONE);
+		lbFolderIn.setText("Input Folder:");
+
+		txtFolderIn = new Text(composite, SWT.BORDER);
+		GridData datatfi = new GridData();
+		datatfi.widthHint = 200;
+		datatfi.grabExcessHorizontalSpace = true;
+		txtFolderIn.setLayoutData(datatfi);
+
+		Button btFolderIn = new Button(composite, SWT.PUSH);
+		btFolderIn.setText("Browse...");
+
+		Label lbFolderOut = new Label(composite, SWT.NONE);
+		lbFolderOut.setText("Output Folder:");
+
+		txtFolderOut = new Text(composite, SWT.BORDER);
+		GridData datatfo = new GridData();
+		datatfo.widthHint = 200;
+		datatfo.grabExcessHorizontalSpace = true;
+		txtFolderOut.setLayoutData(datatfo);
+
+		Button btFolderOut = new Button(composite, SWT.PUSH);
+		btFolderOut.setText("Browse...");
+
+		/*
+		 * controls for formats
+		 */
+		Label lbFormatIn = new Label(composite, SWT.NONE);
+		lbFormatIn.setText("Input Format:");
+
+		cbFormatIn = new Combo(composite, SWT.READ_ONLY);
+		Set<String> collect = Arrays.asList(EFormat.values()).stream()
+				.filter(format -> !format.equals(EFormat.UNSUPPORTED_FORMAT))
+				.map(format -> format.toString()).collect(Collectors.toSet());
+		cbFormatIn.setItems(collect.toArray(new String[0]));
+		GridData datacfi = new GridData();
+		datacfi.widthHint = 180;
+		datacfi.grabExcessHorizontalSpace = true;
+		cbFormatIn.setLayoutData(datacfi);
+
+		// dummy element
+		new Label(composite, SWT.NONE);
+
+		Label lbFormatOut = new Label(composite, SWT.NONE);
+		lbFormatOut.setText("Output Format:");
+
+		cbFormatOut = new Combo(composite, SWT.READ_ONLY);
+		GridData datacfo = new GridData();
+		datacfo.widthHint = 180;
+		datacfo.grabExcessHorizontalSpace = true;
+		cbFormatOut.setLayoutData(datacfo);
+
+		// dummy element
+		new Label(composite, SWT.NONE);
+
+		/*
+		 * Selection listeners
+		 */
+		btFolderIn.addSelectionListener(new SelectionListener() {
+
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				DirectoryDialog dialog = new DirectoryDialog(parent.getShell(), SWT.OPEN);
+				dialog.setFilterPath(txtFolderIn.getText());
+				String reVal = dialog.open();
+				if (reVal != null) {
+					txtFolderIn.setText(reVal);
+				}
+			}
+
+			@Override
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+
+		});
+
+		btFolderOut.addSelectionListener(new SelectionListener() {
+
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				DirectoryDialog dialog = new DirectoryDialog(parent.getShell(), SWT.OPEN);
+				dialog.setFilterPath(txtFolderOut.getText());
+				String reVal = dialog.open();
+				if (reVal != null) {
+					txtFolderOut.setText(reVal);
+				}
+			}
+
+			@Override
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+
+		});
+
+		cbFormatIn.addSelectionListener(new SelectionListener() {
+
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				int selection = cbFormatIn.getSelectionIndex();
+				if (selection < 0) {
+					cbFormatOut.setItems(new String[0]);
+					return;
+				}
+				EFormat source = EFormat.valueOf(cbFormatIn.getItem(selection));
+				Collection<EFormat> targets = DocumentFormatUtil.getPossibleTargetFormats(source);
+				Set<String> set = targets.stream()
+						.filter(format -> !format.equals(EFormat.UNSUPPORTED_FORMAT))
+						.map(format -> format.toString()).collect(Collectors.toSet());
+				cbFormatOut.setItems(set.toArray(new String[0]));
+			}
+
+			@Override
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+
+		});
+
+		return parent;
+	}
+
+	@Override
+	protected void okPressed() {
+		if (!inputIsValid()) {
+			return;
+		}
+		// get folders and formats from the controls
+		File sourceFolder = new File(txtFolderIn.getText());
+		File targetFolder = new File(txtFolderOut.getText());
+		EFormat sourceFormat = EFormat.valueOf(
+				cbFormatIn.getItem(cbFormatIn.getSelectionIndex()));
+		EFormat targetFormat = EFormat.valueOf(
+				cbFormatOut.getItem(cbFormatOut.getSelectionIndex()));
+
+		convertFiles(sourceFolder, targetFolder, sourceFormat, targetFormat);
+		super.okPressed();
+	}
+
+
+	private void convertFiles(File sourceFolder, File targetFolder, EFormat sourceFormat, 
+			EFormat targetFormat) {
+		int successfullConversions = 0;
+		for (File sourceFile : sourceFolder.listFiles()) {
+			// skip directories and files that have the wrong format
+			if (sourceFile.isDirectory() || 
+					!sourceFormat.equals(DocumentFormatUtil.determineFormat(sourceFile))) {
+				continue;
+			}
+			ADocument result = DocumentFormatUtil.convertDocument(sourceFile, 
+					sourceFormat, targetFormat);
+			if (result instanceof UnsupportedDocument) {
+				MessageDialog.openWarning(getShell(), "Conversion problem", 
+						sourceFile.getName() + " could not be converted.");
+				continue;
+			}
+			File targetFile = new File(targetFolder, sourceFile.getName());
+		
+			result.serialize(targetFile);
+			successfullConversions++;
+		}
+		MessageDialog.openInformation(getShell(), "Conversion complete", 
+				successfullConversions + " files have been successfully converted.");
+	}
+
+	private boolean inputIsValid() {
+		File fileIn = new File(txtFolderIn.getText());
+		if (!fileIn.exists() || !fileIn.isDirectory()) {
+			return false;
+		}
+		File fileOut = new File(txtFolderOut.getText());
+		if (!fileOut.exists() || !fileOut.isDirectory()) {
+			return false;
+		}
+		if (cbFormatIn.getSelectionIndex() < 0 || cbFormatOut.getSelectionIndex() < 0) {
+			return false;
+		}
+		return true;
+	}
+}
diff --git a/de.uniwue.mk.athen/releng/de.uniwue.mk.athen.docu/CorefView.md b/de.uniwue.mk.athen/releng/de.uniwue.mk.athen.docu/CorefView.md
index 3cae683e1177607cb7a595b19c400309f9e20f3a..ff17d9b2637fdb951c92fe0d9dbf5a8074344309 100644
--- a/de.uniwue.mk.athen/releng/de.uniwue.mk.athen.docu/CorefView.md
+++ b/de.uniwue.mk.athen/releng/de.uniwue.mk.athen.docu/CorefView.md
@@ -1,113 +1,113 @@
-#ATHEN CorefView
-
-If you want to annotate named entity (NE) and coreference information, ATHEN offers the CorefView. This tutorial will show, how to use it.  
-First of all, switch to CorefView:
-
-<img src="pictures/switch_view.png" alt="switch view"/>
-
-##Opening a document in CorefView
-
-To open a document in CorefView, doubleclick the desired document on the left side of ATHEN (If you don't know how to import documents to ATHEN, please refer to the guide [ATHEN -Importing data](de.uniwue.mk.athen/releng/de.uniwue.mk.athen.docu/ATHEN_importData.md)):
-  
-<img src="pictures/open_document.png" alt="open document"/>
-
-Then your document will be opened in the editor. If you did not do any preprocessing, there won't be any annotations; you will only see a text.
-
-##Annotation
-
-###New Annotations
-
-To create an annotation, mark the respective string and click "New Entity" on the right side of CorefView. Your string will be colored yellow then. The number, that appears right above your string, is the string's ID (which will be explained later).  
-The string you marked, will appear on the list on the right side of CorefView:
-
-<img src="pictures/new_annotation_01.png" alt="first annotation"/>
-
-If you create more new entities, the list will be extended.  
-If you wrongly marked a string, singleclick it in the text or at the list and then click "No Entity" on the right upper side of CoreView. The yellow marking and the entry on the list will disappear then.
-
-###Coreference
-
-If some strings refer to the same entity, you may distribute the same IDs. There are two ways to do so. Either you mark the respective string (or single click on it, if it is already marked as NE) and doubleclick the desired entry in the list on the right. Or you mark the repective string (or single click on it, if it is already marked as NE) and doubleclick the desired word in the editor itself. The last method is better especially when your list on the right has grown up to a length searching would be very time-consuming.  
-Whatever method you choose, your new entity will get the same ID as the NE it is referred to. Moreover, the frequency ot the respective NE will be increased by 1 on the list right:
-
-<img src="pictures/new_annotation_02.png" alt="first coref"/>
-
-Go on annotating like this until you finished your document.
-
-###Attributs
-
-
-You can give many different attributs to your annotations. To give attributes, take care, that the ID filter and jump-to-next aren't activated (ID-filter and jump-to-next-function will be explained later).  
-There are five different attributes: "Type", "Uncertain?", "Numerus", "Gender", "Pseudo":
-
-<img src="pictures/attributes.png" alt="attributes"/>
-  
-Now you can give attributes to every single annotation. To do so, click on the repective annotation either in the list or in the text.  
-To change "Type" click Ctrl+T until the right type appears. There are four different types: AppTdfW, AppA, pron, Core. To mark a NE as "Core", you have to click Ctrl+K. Then a popup-window appears where you have to click on every word you want to mark as "Core". "Core"-NEs will be bordered red in the Editor afterwards.  
-To change "Uncertain?" click Ctrl+C.  
-To change "Numerus" click Ctrl+U.  
-To change "Gender" click Ctrl+G.  
-To change "Pseudo" click Crtl+P.  
-When you finished, your document might look like this:
-
-<img src="pictures/finished_document.png" alt="finished document"/>
-
-As seen in the picture, every annotation in the text gets small symbols to show different types. For example, NEs that are marked as "Pseudo" will get underlined; NEs that are marked as plural will get a plural symbol left above.
-
-##More functions
-
-####Is Entity
-
-Usually you only use this function if you're working with a prepocessed text which suggests annotations. If the tool's suggestion is right (and the ID, too!), you can click "Is Entity" to accept the suggestion.
-
-####ID-filter
-
-To activate the ID-filter, set a mark on the respective box at the right. Afterwards every ID in your list will be reduced to one single entry which makes it more clearly.
-
-<img src="pictures/ID_filter.png" alt="ID filter"/>
-
-####Show only handled
-
-To activate show-only-handled-function, set a mark on the repective box at the right. Now your list only shows annotations you did by yourself (and no prepocessing-tool).
-
-<img src="pictures/show_only_handled.png" alt="show only handled"/>
-
-####Draw just Core
-
-To activate draw-just-core-function, set a mark on the resprective box at the right. Now only "Core"-annotations are shown in the editor.
-
-<img src="pictures/draw_just_core.png" alt="draw just core"/>
-
-####Jump to next?
-
-To activate jump-to-next-function, set a mark on the respective box at the right. From now on, the marker jumps to the next annotation after you finished your previous annotation (this is usually helpful if you're working with preprocessed texts).
-
-<img src="pictures/jump_to_next.png" alt="jump to next"/>
-
-####Changing a name in the list
-
-To change a name on the list, singleclick the respective entry on the list. Then press Enter. A popup-window appears where you can write in the name you want to give to this NE.
-
-<img src="pictures/change_name.png" alt="change list name"/>
-
-####Combining annotations
-
-To combine two annotations, drag  one of the two respective annotations on the list and drop it to the other. Then these two annotations will get the same ID and there frequencies will be added up.
-
-<img src="pictures/combining_annotations.png" alt="combine two list entries"/>
-
-Attention! The two combined entities can't get separated afterwards!
-
-####Searching
-
-If you want to search something on your list, write the respective string into the "Search:"-description field.
-
-<img src="pictures/searching.png" alt="searching"/>
-
-###Saving
-
-To save your document you can either close ATHEN or change the view. If you are doing so, a popup-window appears that askes you wheater you want to save your changes or not.
-
-<img src="pictures/saving.png" alt="saving"/>
-
-
+# ATHEN CorefView
+
+If you want to annotate named entity (NE) and coreference information, ATHEN offers the CorefView. This tutorial will show, how to use it.  
+First of all, switch to CorefView:
+
+<img src="pictures/switch_view.png" alt="switch view"/>
+
+## Opening a document in CorefView
+
+To open a document in CorefView, doubleclick the desired document on the left side of ATHEN (If you don't know how to import documents to ATHEN, please refer to the guide [ATHEN -Importing data](de.uniwue.mk.athen/releng/de.uniwue.mk.athen.docu/ATHEN_importData.md)):
+  
+<img src="pictures/open_document.png" alt="open document"/>
+
+Then your document will be opened in the editor. If you did not do any preprocessing, there won't be any annotations; you will only see a text.
+
+## Annotation
+
+### New Annotations
+
+To create an annotation, mark the respective string and click "New Entity" on the right side of CorefView. Your string will be colored yellow then. The number, that appears right above your string, is the string's ID (which will be explained later).  
+The string you marked, will appear on the list on the right side of CorefView:
+
+<img src="pictures/new_annotation_01.png" alt="first annotation"/>
+
+If you create more new entities, the list will be extended.  
+If you wrongly marked a string, singleclick it in the text or at the list and then click "No Entity" on the right upper side of CoreView. The yellow marking and the entry on the list will disappear then.
+
+### Coreference
+
+If some strings refer to the same entity, you may distribute the same IDs. There are two ways to do so. Either you mark the respective string (or single click on it, if it is already marked as NE) and doubleclick the desired entry in the list on the right. Or you mark the repective string (or single click on it, if it is already marked as NE) and doubleclick the desired word in the editor itself. The last method is better especially when your list on the right has grown up to a length searching would be very time-consuming.  
+Whatever method you choose, your new entity will get the same ID as the NE it is referred to. Moreover, the frequency ot the respective NE will be increased by 1 on the list right:
+
+<img src="pictures/new_annotation_02.png" alt="first coref"/>
+
+Go on annotating like this until you finished your document.
+
+### Attributes
+
+
+You can give many different attributs to your annotations. To give attributes, take care, that the ID filter and jump-to-next aren't activated (ID-filter and jump-to-next-function will be explained later).  
+There are five different attributes: "Type", "Uncertain?", "Numerus", "Gender", "Pseudo":
+
+<img src="pictures/attributes.png" alt="attributes"/>
+  
+Now you can give attributes to every single annotation. To do so, click on the repective annotation either in the list or in the text.  
+To change "Type" click Ctrl+T until the right type appears. There are four different types: AppTdfW, AppA, pron, Core. To mark a NE as "Core", you have to click Ctrl+K. Then a popup-window appears where you have to click on every word you want to mark as "Core". "Core"-NEs will be bordered red in the Editor afterwards.  
+To change "Uncertain?" click Ctrl+C.  
+To change "Numerus" click Ctrl+U.  
+To change "Gender" click Ctrl+G.  
+To change "Pseudo" click Crtl+P.  
+When you finished, your document might look like this:
+
+<img src="pictures/finished_document.png" alt="finished document"/>
+
+As seen in the picture, every annotation in the text gets small symbols to show different types. For example, NEs that are marked as "Pseudo" will get underlined; NEs that are marked as plural will get a plural symbol left above.
+
+## More functions
+
+#### Is Entity
+
+Usually you only use this function if you're working with a prepocessed text which suggests annotations. If the tool's suggestion is right (and the ID, too!), you can click "Is Entity" to accept the suggestion.
+
+#### ID-filter
+
+To activate the ID-filter, set a mark on the respective box at the right. Afterwards every ID in your list will be reduced to one single entry which makes it more clearly.
+
+<img src="pictures/ID_filter.png" alt="ID filter"/>
+
+#### Show only handled
+
+To activate show-only-handled-function, set a mark on the repective box at the right. Now your list only shows annotations you did by yourself (and no prepocessing-tool).
+
+<img src="pictures/show_only_handled.png" alt="show only handled"/>
+
+#### Draw just Core
+
+To activate draw-just-core-function, set a mark on the resprective box at the right. Now only "Core"-annotations are shown in the editor.
+
+<img src="pictures/draw_just_core.png" alt="draw just core"/>
+
+#### Jump to next?
+
+To activate jump-to-next-function, set a mark on the respective box at the right. From now on, the marker jumps to the next annotation after you finished your previous annotation (this is usually helpful if you're working with preprocessed texts).
+
+<img src="pictures/jump_to_next.png" alt="jump to next"/>
+
+#### Changing a name in the list
+
+To change a name on the list, singleclick the respective entry on the list. Then press Enter. A popup-window appears where you can write in the name you want to give to this NE.
+
+<img src="pictures/change_name.png" alt="change list name"/>
+
+#### Combining annotations
+
+To combine two annotations, drag  one of the two respective annotations on the list and drop it to the other. Then these two annotations will get the same ID and there frequencies will be added up.
+
+<img src="pictures/combining_annotations.png" alt="combine two list entries"/>
+
+Attention! The two combined entities can't get separated afterwards!
+
+#### Searching
+
+If you want to search something on your list, write the respective string into the "Search:"-description field.
+
+<img src="pictures/searching.png" alt="searching"/>
+
+### Saving
+
+To save your document you can either close ATHEN or change the view. If you are doing so, a popup-window appears that askes you wheater you want to save your changes or not.
+
+<img src="pictures/saving.png" alt="saving"/>
+
+
diff --git a/de.uniwue.mk.athen/releng/de.uniwue.mk.athen.product/de.uniwue.mkrug.kallimachos.annotation.editor.product b/de.uniwue.mk.athen/releng/de.uniwue.mk.athen.product/de.uniwue.mkrug.kallimachos.annotation.editor.product
index fae18234a34f41bf3224713c27c718653dc973d1..6d06e482fe0f29e88be8c2a1f3e330863cb0f5b8 100644
--- a/de.uniwue.mk.athen/releng/de.uniwue.mk.athen.product/de.uniwue.mkrug.kallimachos.annotation.editor.product
+++ b/de.uniwue.mk.athen/releng/de.uniwue.mk.athen.product/de.uniwue.mkrug.kallimachos.annotation.editor.product
@@ -33,7 +33,6 @@
    <vm>
    </vm>
 
-
    <plugins>
       <plugin id="com.ibm.icu"/>
       <plugin id="de.uniwue.mk.kall.athen.annotationbrowserview"/>
@@ -321,9 +320,6 @@
    </plugins>
 
    <features>
-      <feature id="org.eclipse.emf.ecore"/>
-      <feature id="org.eclipse.emf.common"/>
-      <feature id="org.eclipse.fx.target.rcp4.feature"/>
       <feature id="org.eclipse.equinox.p2.rcp.feature"/>
       <feature id="org.eclipse.ecf.filetransfer.httpclient4.feature"/>
       <feature id="org.eclipse.ecf.filetransfer.httpclient4.ssl.feature"/>
@@ -335,12 +331,14 @@
       <feature id="org.eclipse.equinox.p2.extras.feature"/>
       <feature id="org.eclipse.platform"/>
       <feature id="org.eclipse.equinox.p2.user.ui"/>
-      <feature id="org.eclipse.help"/>
       <feature id="org.eclipse.rcp"/>
-      <feature id="org.eclipse.jdt"/>
       <feature id="org.eclipse.equinox.core.sdk"/>
       <feature id="org.eclipse.e4.rcp"/>
       <feature id="de.uniwue.mk.athen.feature"/>
+      <feature id="org.eclipse.emf.ecore"/>
+      <feature id="org.eclipse.help"/>
+      <feature id="org.eclipse.emf.common"/>
+      <feature id="org.eclipse.jdt"/>
    </features>
 
    <configurations>
diff --git a/de.uniwue.mk.athen/releng/de.uniwue.mk.athen.target/de.uniwue.mk.athen.target.target b/de.uniwue.mk.athen/releng/de.uniwue.mk.athen.target/de.uniwue.mk.athen.target.target
index 849780dcdc33926afd748a2ad01b35c4b9ff1e38..9bacb51b844429be2044de3afd63d75e9d9f61d2 100644
--- a/de.uniwue.mk.athen/releng/de.uniwue.mk.athen.target/de.uniwue.mk.athen.target.target
+++ b/de.uniwue.mk.athen/releng/de.uniwue.mk.athen.target/de.uniwue.mk.athen.target.target
@@ -1,27 +1,32 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde version="3.8"?><target name="de.uniwue.mk.athen.target" sequenceNumber="41">
+<?pde version="3.8"?><target name="de.uniwue.mk.athen.target" sequenceNumber="45">
 <locations>
 <location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
 <unit id="org.eclipse.fx.target.rcp4.feature.feature.group" version="2.0.0.201506240602"/>
 <repository location="http://download.eclipse.org/efxclipse/runtime-released/2.0.0/site"/>
 </location>
 <location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.platform.ide" version="4.6.0.I20160606-1100"/>
-<unit id="org.eclipse.equinox.sdk.feature.group" version="3.12.0.v20160606-1311"/>
-<unit id="org.eclipse.jdt.feature.group" version="3.12.0.v20160606-1100"/>
-<unit id="org.eclipse.pde.source.feature.group" version="3.12.0.v20160606-1100"/>
-<unit id="org.eclipse.pde.feature.group" version="3.12.0.v20160606-1100"/>
-<unit id="org.eclipse.jdt.source.feature.group" version="3.12.0.v20160606-1100"/>
-<unit id="org.eclipse.rcp.source.feature.group" version="4.6.0.v20160606-1342"/>
-<unit id="org.eclipse.platform.sdk" version="4.6.0.I20160606-1100"/>
-<unit id="org.eclipse.rcp.feature.group" version="4.6.0.v20160606-1342"/>
-<unit id="org.eclipse.sdk.ide" version="4.6.0.I20160606-1100"/>
-<unit id="org.eclipse.releng.tools.feature.group" version="3.9.0.v20160424-1559"/>
-<repository location="http://download.eclipse.org/eclipse/updates/4.6"/>
+<unit id="org.eclipse.equinox.sdk.feature.group" version="3.13.4.v20180322-2228"/>
+<unit id="org.eclipse.sdk.ide" version="4.7.3.M20180330-0640"/>
+<unit id="org.eclipse.swt.tools.feature.feature.group" version="3.106.0.v20170503-0851"/>
+<unit id="org.eclipse.sdk.tests.feature.group" version="4.7.3.v20180330-0919"/>
+<unit id="org.eclipse.rcp.source.feature.group" version="4.7.3.v20180330-0640"/>
+<unit id="org.eclipse.platform.sdk" version="4.7.3.M20180330-0640"/>
+<unit id="org.eclipse.pde.api.tools.ee.feature.feature.group" version="1.0.200.v20170515-0910"/>
+<unit id="org.eclipse.rcp.feature.group" version="4.7.3.v20180330-0640"/>
+<unit id="org.eclipse.osgi.compatibility.plugins.feature.feature.group" version="1.1.1.v20170811-1325"/>
+<unit id="org.eclipse.test.feature.group" version="3.7.200.v20170511-1043"/>
+<unit id="org.eclipse.e4.core.tools.feature.source.feature.group" version="4.7.0.v20170515-1617"/>
+<unit id="org.eclipse.pde.feature.group" version="3.13.4.v20180330-0640"/>
+<unit id="org.eclipse.releng.tools.feature.group" version="3.9.100.v20170516-0717"/>
+<unit id="org.eclipse.pde.source.feature.group" version="3.13.4.v20180330-0640"/>
+<unit id="org.eclipse.platform.ide" version="4.7.3.M20180330-0640"/>
+<unit id="org.eclipse.sdk.examples.source.feature.group" version="3.6.4.v20180330-0640"/>
+<repository location="http://download.eclipse.org/eclipse/updates/4.7"/>
 </location>
 <location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
 <unit id="org.apache.commons.lang" version="2.6.0"/>
-<unit id="de.uniwue.mkrug.kall.typesystemUtil" version="1.0.14"/>
+<unit id="de.uniwue.mkrug.kall.typesystemUtil" version="1.0.15"/>
 <unit id="org.apache.commons.io" version="2.1.0"/>
 <unit id="org.apache.commons.lang3" version="3.1.0"/>
 <unit id="org.jfree.jcommon" version="1.0.23"/>
diff --git a/de.uniwue.mk.athen/releng/p2-maven-plugin/pom.xml b/de.uniwue.mk.athen/releng/p2-maven-plugin/pom.xml
index be82a047e2346eb1e50dfe34083fa009c8d8cc5f..b1889786996c63f04db25cee0ea39065948320c2 100644
--- a/de.uniwue.mk.athen/releng/p2-maven-plugin/pom.xml
+++ b/de.uniwue.mk.athen/releng/p2-maven-plugin/pom.xml
@@ -55,6 +55,9 @@
 								<artifact>
 									<id>de.uniwue.mk.kall:de.uniwue.mkrug.kall.typesystemUtil:1.0.14</id>
 								</artifact>
+								<artifact>
+									<id>de.uniwue.mk.kall:de.uniwue.mkrug.kall.typesystemUtil:1.0.15</id>
+								</artifact>
 							</artifacts>
 						</configuration>
 					</execution>