Index: tmp/org.txm.annotation.rcp/src/org/txm/annotation/rcp/editor/AnnotationArea.java
===================================================================
--- tmp/org.txm.annotation.rcp/src/org/txm/annotation/rcp/editor/AnnotationArea.java	(revision 1917)
+++ tmp/org.txm.annotation.rcp/src/org/txm/annotation/rcp/editor/AnnotationArea.java	(revision 1918)
@@ -122,4 +122,6 @@
 	 * @return true if the corpus indexes & editions needs to be updated after saving annotation
 	 */
 	public abstract boolean needToUpdateIndexes();
+
+	public abstract boolean hasChanges();
 }
Index: tmp/org.txm.analec.rcp/src/org/txm/annotation/urs/toolbar/UnitToolbar.java
===================================================================
--- tmp/org.txm.analec.rcp/src/org/txm/annotation/urs/toolbar/UnitToolbar.java	(revision 1917)
+++ tmp/org.txm.analec.rcp/src/org/txm/annotation/urs/toolbar/UnitToolbar.java	(revision 1918)
@@ -1191,4 +1191,9 @@
 	public boolean needToUpdateIndexes() {
 		return false;
 	}
+	
+	@Override
+	public boolean hasChanges() {
+		return analecCorpus.isModifie();
+	}
 }
\ No newline at end of file
Index: tmp/org.txm.analec.rcp/src/org/txm/annotation/urs/toolbar/SchemaToolbar.java
===================================================================
--- tmp/org.txm.analec.rcp/src/org/txm/annotation/urs/toolbar/SchemaToolbar.java	(revision 1917)
+++ tmp/org.txm.analec.rcp/src/org/txm/annotation/urs/toolbar/SchemaToolbar.java	(revision 1918)
@@ -1004,4 +1004,9 @@
 	public boolean needToUpdateIndexes() {
 		return false;
 	}
+	
+	@Override
+	public boolean hasChanges() {
+		return analecCorpus.isModifie();
+	}
 }
\ No newline at end of file
Index: tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/SimpleKRAnnotation.java
===================================================================
--- tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/SimpleKRAnnotation.java	(revision 1917)
+++ tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/SimpleKRAnnotation.java	(revision 1918)
@@ -647,7 +647,7 @@
 
 	public void notifyStartOfRefresh() throws Exception {
 		List<Line> lines = concordance.getLines(concordance.getTopIndex(), concordance.getTopIndex()+concordance.getNLinePerPage());
-		annotations.getLines(lines);
+		annotations.computeLines(lines);
 	}
 
 	@Override
@@ -684,6 +684,22 @@
 	}
 
 	@Override
+	public boolean hasChanges() {
+		AnnotationManager am;
+		try {
+			am = KRAnnotationEngine.getAnnotationManager(corpus);
+			if (am != null && am.hasChanges()) {
+				return am.hasChanges();
+			} else {
+				return false;
+			}
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+			return false;
+		}
+	}
+	@Override
 	public void notifyEndOfRefresh() throws Exception {
 		// TODO Auto-generated method stub
 	}
Index: tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/KRAnnotation.java
===================================================================
--- tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/KRAnnotation.java	(revision 1917)
+++ tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/KRAnnotation.java	(revision 1918)
@@ -42,6 +42,7 @@
 import org.txm.annotation.kr.core.Annotation;
 import org.txm.annotation.kr.core.AnnotationManager;
 import org.txm.annotation.kr.core.KRAnnotationEngine;
+import org.txm.annotation.kr.core.repository.AnnotationEffect;
 import org.txm.annotation.kr.core.repository.AnnotationType;
 import org.txm.annotation.kr.core.repository.KnowledgeRepository;
 import org.txm.annotation.kr.core.repository.KnowledgeRepositoryManager;
@@ -214,9 +215,12 @@
 			currentKnowledgeRepository = kr;
 			Log.fine(" KR: "+kr); //$NON-NLS-1$
 			List<AnnotationType> krtypes = kr.getAllAnnotationTypes();
+			for (AnnotationType type : krtypes) {
+				 if (type.getEffect().equals(AnnotationEffect.SEGMENT)) {
+					 typesList.add(type);
+				 }
+			}
 
-			typesList.addAll(krtypes);
-
 			Log.fine(NLS.bind(KRAnnotationUIMessages.availableAnnotationTypesColonP0, typesList));
 			break;
 		}
@@ -578,6 +582,23 @@
 		return true;
 	}
 
+	@Override
+	public boolean hasChanges() {
+		AnnotationManager am;
+		try {
+			am = KRAnnotationEngine.getAnnotationManager(corpus);
+			if (am != null && am.hasChanges()) {
+				return am.hasChanges();
+			} else {
+				return false;
+			}
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+			return false;
+		}
+	}
+	
 	protected void affectAnnotationToSelection(ISelection selection) {
 
 		final IStructuredSelection lineSelection = (IStructuredSelection) selection;
@@ -911,7 +932,7 @@
 	@Override
 	public void notifyStartOfRefresh() throws Exception {
 		List<Line> lines = concordance.getLines(concordance.getTopIndex(), concordance.getTopIndex()+concordance.getNLinePerPage());
-		annotations.getLines(lines);
+		annotations.computeLines(lines);
 	}
 
 	@Override
Index: tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/WordAnnotationToolbar.java
===================================================================
--- tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/WordAnnotationToolbar.java	(revision 1917)
+++ tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/WordAnnotationToolbar.java	(revision 1918)
@@ -435,9 +435,12 @@
 
 		Log.fine("KR: "+currentKnowledgeRepository); //$NON-NLS-1$
 		List<AnnotationType> krtypes = currentKnowledgeRepository.getAllAnnotationTypes();
+		for (AnnotationType type : krtypes) {
+			if(type.getEffect().equals(AnnotationEffect.TOKEN)) {
+				typesList.add(type);
+			}
+		}
 
-		typesList.addAll(krtypes);
-
 		Log.fine(NLS.bind(KRAnnotationUIMessages.availableAnnotationTypesColonP0, typesList));
 
 		annotationArea = new GLComposite(parent, SWT.NONE, KRAnnotationUIMessages.concordanceAnnotationArea);
@@ -720,6 +723,23 @@
 			return false;
 		}
 	}
+	
+	@Override
+	public boolean hasChanges() {
+		AnnotationManager am;
+		try {
+			am = KRAnnotationEngine.getAnnotationManager(corpus);
+			if (am != null && am.hasChanges()) {
+				return am.hasChanges();
+			} else {
+				return false;
+			}
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+			return false;
+		}
+	}
 
 	@Override
 	public boolean notifyStartOfCompute() throws Exception {
@@ -745,7 +765,7 @@
 	@Override
 	public void notifyStartOfRefresh() throws Exception {
 		List<Line> lines = concordance.getLines(concordance.getTopIndex(), concordance.getTopIndex()+concordance.getNLinePerPage());
-		annotations.getLines(lines);
+		annotations.computeLines(lines);
 		
 		updateAnnotationWidgetStates();
 
Index: tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/ConcordanceAnnotations.java
===================================================================
--- tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/ConcordanceAnnotations.java	(revision 1917)
+++ tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/ConcordanceAnnotations.java	(revision 1918)
@@ -34,7 +34,7 @@
 	
 	private boolean overlapAnnotation;
 
-	private ArrayList<AnnotationLine> lines;
+	private HashMap<Line, AnnotationLine> lines;
 
 	private List<Line> concordanceLines;
 	public void setAnnotationOverlap(boolean overlap) {
@@ -44,20 +44,23 @@
 		return overlapAnnotation;
 	}
 	
-	public List<AnnotationLine> getLines(List<Line> concordanceLines) throws Exception {
+	public HashMap<Line, AnnotationLine> computeLines(List<Line> concordanceLines) throws Exception {
 
 		this.concordanceLines = concordanceLines;
 		
 		ArrayList<Match> matches = new ArrayList<Match>();
-		for (Line line : concordanceLines) matches.add(line.getMatch());
+		for (Line line : concordanceLines) {
+			matches.add(line.getMatch());
+		}
 		
 		List<Annotation> ann = getAnnotationForMatches(matches, overlapAnnotation);
 		
-		lines = new ArrayList<AnnotationLine>();
+		lines = new HashMap<Line, AnnotationLine>();
 		
-		for (Annotation a : ann) {
+		for (int i = 0 ; i < ann.size() ; i++) {
+			Annotation a = ann.get(i);
 			AnnotationLine aline = new AnnotationLine(a, getAnnotationTypedValue(a));
-			lines.add(aline);
+			lines.put(concordanceLines.get(i), aline);
 		}
 		
 		return lines; // TODO find a way to add with lazy method
@@ -212,10 +215,9 @@
 	 * @return the AnnotationLine pointed by 'i'. May return null if i is wrong.
 	 */
 	public AnnotationLine getAnnotationLine(Line line) {
-		if (concordanceLines == null) return null;
-		int i = concordanceLines.indexOf(line);
-		if (i < 0) return null;
-		return getAnnotationLine(i);
+		if (lines == null) return null;
+		if (!lines.containsKey(line)) return null;
+		return lines.get(line);
 	}
 	
 	/**
Index: tmp/org.txm.edition.rcp/plugin.xml
===================================================================
--- tmp/org.txm.edition.rcp/plugin.xml	(revision 1917)
+++ tmp/org.txm.edition.rcp/plugin.xml	(revision 1918)
@@ -113,7 +113,7 @@
             commandId="org.txm.edition.rcp.handlers.BackToText"
             contextId="org.eclipse.ui.contexts.window"
             schemeId="org.txm.rcp.scheme"
-            sequence="Enter">
+            sequence="M1+e">
       </key>
    </extension>
    <extension
