Index: TXM/trunk/org.txm.concordance.rcp/src/org/txm/concordance/rcp/editors/ConcordanceEditor.java
===================================================================
--- TXM/trunk/org.txm.concordance.rcp/src/org/txm/concordance/rcp/editors/ConcordanceEditor.java	(revision 3546)
+++ TXM/trunk/org.txm.concordance.rcp/src/org/txm/concordance/rcp/editors/ConcordanceEditor.java	(revision 3547)
@@ -949,7 +949,7 @@
 		else {
 			lines = new ArrayList<>();
 		}
-		
+				
 		viewerRight.setInput(lines);
 		viewerLeft.setInput(lines);
 		
Index: TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/transcriber/pager.groovy
===================================================================
--- TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/transcriber/pager.groovy	(revision 3546)
+++ TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/transcriber/pager.groovy	(revision 3547)
@@ -922,7 +922,7 @@
 		
 		writer.writeStartElement("span");
 		writer.writeAttribute("class", "spk");
-		bold = interviewers != null && interviewers.contains(spk)
+		bold = interviewers != null && spk =~ interviewers
 		spk = spk.replaceAll('^([^0-9]*)([0-9]+)$', '$1 $2');
 		if (overlapping) {
 			writer.writeCharacters("// ")
Index: TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/transcriber/compiler.groovy
===================================================================
--- TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/transcriber/compiler.groovy	(revision 3546)
+++ TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/transcriber/compiler.groovy	(revision 3547)
@@ -585,7 +585,7 @@
 							break;
 						case "w":
 						// concat spk id and ref
-							String isEnq = (interviewers != null && interviewers.contains(u_name))?"*":"";
+							String isEnq = (interviewers != null && u_name =~ interviewers?"*":"";
 							String ref = (u_name+", "+formatedTime+""+isEnq)
 							if (ADD_TEXTID_TO_REF) ref = textid+", "+ref
 							vForm +="\t"+u_name+"\t"+ref
@@ -615,7 +615,7 @@
 							vForm = vForm.replaceAll("\n", "").replaceAll("&", "&amp;").replaceAll("<", "&lt;");
 						
 							if (interviewers != null && !indexInterviewer) { // we must remove some words
-								if (!interviewers.contains(u_name)) { // keep what is now an interviewer
+								if (!(u_name =~ interviewers)) { // keep what is now an interviewer
 									output.write(vForm+"\t"+wordid+vAna+"\n");
 								}
 							} else {
@@ -733,11 +733,11 @@
 		//assert(parser != null);
 		for (int event = parser.next(); event != XMLStreamConstants.END_DOCUMENT; event = parser.next()) {
 			if (event == XMLStreamConstants.START_ELEMENT) {
-				localname = parser.getLocalName();
+				localname = parser.getLocalName()
 				
 				if (projectionsFromValues.containsKey(localname)) { // get projections values
 					for (String attr : projectionsFromValues[localname].keySet()) {
-						projectionsFromValues[localname][attr] = parser.getAttributeValue(null, attr);
+						projectionsFromValues[localname][attr] = parser.getAttributeValue(null, attr)
 					}
 				}
 				
@@ -746,7 +746,7 @@
 						output.write("<text project=\""+projectname+"\" base=\""+corpusname+"\"")
 						for (int i = 0 ; i < parser.getAttributeCount() ; i ++) {
 							
-							String value = parser.getAttributeValue(i).replace("\"", "&quot;");
+							String value = parser.getAttributeValue(i).replace("\"", "&quot;")
 							if (value.length() > MAXATTRIBUTEVALUELENGTH) {
 								//								value = value.substring(0, MAXATTRIBUTEVALUELENGTH-1)
 								println "WARNING: attribute value is too long ( > $MAXATTRIBUTEVALUELENGTH). The value will be truncated to: $value"
@@ -757,37 +757,37 @@
 										parser.getAttributeLocalName(i) != "audio_filename" &&
 										parser.getAttributeLocalName(i) != "version" &&
 										parser.getAttributeLocalName(i) != "version_date") {
-									output.write(" "+parser.getAttributeLocalName(i).replace("_","").toLowerCase()+"=\""+value+"\"");
+									output.write(" "+parser.getAttributeLocalName(i).replace("_","").toLowerCase()+"=\""+value+"\"")
 								}
 							} else {
-								output.write(" "+parser.getAttributeLocalName(i).replace("_","").toLowerCase()+"=\""+value+"\"");
+								output.write(" "+parser.getAttributeLocalName(i).replace("_","").toLowerCase()+"=\""+value+"\"")
 							}
 						}
 					
 						output.write ">\n"
 					
 						ArrayList list = new ArrayList<Pair<String, String>>()
-						trans.put("trans", list);
+						trans.put("trans", list)
 					
 						for (int i = 0 ; i < parser.getAttributeCount() ; i ++) {
-							list.add(new Pair(parser.getAttributeLocalName(i).replace("_","").toLowerCase(), parser.getAttributeValue(i)));
+							list.add(new Pair(parser.getAttributeLocalName(i).replace("_","").toLowerCase(), parser.getAttributeValue(i)))
 							if (parser.getAttributeLocalName(i).equals("interviewer-id-regex"))
-								interviewers = /${parser.getAttributeValue(i)}/;
+								interviewers = /${parser.getAttributeValue(i)}/
 						}
 						return
 					case "Topic":
-						String id = parser.getAttributeValue(null, "id");
+						String id = parser.getAttributeValue(null, "id")
 						if (id != null) {
 							ArrayList list = new ArrayList<Pair<String, String>>()
-							topics.put(id, list);
+							topics.put(id, list)
 						} else {
 							println "found tag $localname with no id"
 						}
 						break;
 					case "Speaker":
 					//case "Trans":
-						String id = parser.getAttributeValue(null, "id");
-						String name = parser.getAttributeValue(null, "name");
+						String id = parser.getAttributeValue(null, "id")
+						String name = parser.getAttributeValue(null, "name")
 						if (id != null && name != null) {
 							speakersname.put(id, name);
 						} else {
Index: TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/annotation/BuildWordPropTableMacro.groovy
===================================================================
--- TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/annotation/BuildWordPropTableMacro.groovy	(revision 3546)
+++ TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/annotation/BuildWordPropTableMacro.groovy	(revision 3547)
@@ -82,7 +82,7 @@
 println "- corpus: $corpus"
 println "- query: $query"
 println "- annotation properties: $properties"
-println "- references: $properties"
+println "- references: $references"
 println "- CSV file: $csvFile"
 
 csvFile = csvFile.getAbsoluteFile()
Index: TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/swt/dialog/QueryAssistDialog.java
===================================================================
--- TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/swt/dialog/QueryAssistDialog.java	(revision 3546)
+++ TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/swt/dialog/QueryAssistDialog.java	(revision 3547)
@@ -42,6 +42,8 @@
 import org.eclipse.swt.events.ControlEvent;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.FontData;
 import org.eclipse.swt.graphics.Rectangle;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
@@ -190,6 +192,35 @@
 			
 			addWordField();
 			
+			Button addwordButton = new Button(mainPanel, SWT.PUSH);
+			FontData[] fd = mainPanel.getFont().getFontData();
+			fd[0].setStyle(SWT.BOLD);
+			Font font = new Font(mainPanel.getFont().getDevice(), fd);
+			addwordButton.setFont(font);
+			addwordButton.setLayoutData(new GridData(GridData.CENTER, GridData.CENTER, false, false));
+			addwordButton.setText(TXMUIMessages.addAWord+" ⯯");
+			addwordButton.addSelectionListener(new SelectionListener() {
+				
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					if (nbwords > 0) addLinkField();
+					addWordField();
+					parent.layout(true);
+					mainPanel.layout(true);
+					wordcontainer.layout(true);
+					scrollComposite.layout(true);
+					mainPanel.update();
+					wordcontainer.update();
+					Rectangle r = scrollComposite.getClientArea();
+					scrollComposite.setMinSize(wordcontainer.computeSize(r.width, SWT.DEFAULT));
+					updateShell();
+				}
+				
+				@Override
+				public void widgetDefaultSelected(SelectionEvent e) {}
+			});
+			
+			
 			Composite withinComposite = new Composite(mainPanel, SWT.NONE);
 			withinComposite.setLayout(new GridLayout(3, false));
 			withinComposite.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false, 2, 1));
@@ -239,29 +270,6 @@
 				}
 			}
 			
-			Button addwordButton = new Button(mainPanel, SWT.PUSH);
-			addwordButton.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false));
-			addwordButton.setText(TXMUIMessages.addAWord);
-			addwordButton.addSelectionListener(new SelectionListener() {
-				
-				@Override
-				public void widgetSelected(SelectionEvent e) {
-					if (nbwords > 0) addLinkField();
-					addWordField();
-					parent.layout(true);
-					mainPanel.layout(true);
-					wordcontainer.layout(true);
-					scrollComposite.layout(true);
-					mainPanel.update();
-					wordcontainer.update();
-					Rectangle r = scrollComposite.getClientArea();
-					scrollComposite.setMinSize(wordcontainer.computeSize(r.width, SWT.DEFAULT));
-					updateShell();
-				}
-				
-				@Override
-				public void widgetDefaultSelected(SelectionEvent e) {}
-			});
 			
 			// Button removeWordButton = new Button(mainPanel, SWT.PUSH);
 			// removeWordButton.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false));
@@ -525,6 +533,8 @@
 		private int no;
 		
 		private Button allCriteriaButton;
+
+		private Label allCriteriaLabel;
 		
 		
 		/**
@@ -537,7 +547,7 @@
 		public WordField(Composite parent, int style, int no) {
 			super(parent, style);
 			this.no = no;
-			this.setLayout(new GridLayout(8, false));
+			this.setLayout(new GridLayout(9, false));
 			
 			titleL = new Label(this, SWT.NONE);
 			
@@ -582,9 +592,15 @@
 			propertiesFieldComposite.setLayoutData(propertiesvlayout);
 			propertiesFieldComposite.getLayout().numColumns = 2;
 			
+			allCriteriaLabel = new Label(this, SWT.NONE);
+			allCriteriaLabel.setText("  ");
+			
 			allCriteriaButton = new Button(this, SWT.CHECK);
 			allCriteriaButton.setToolTipText("All property tests are verified");
+			allCriteriaButton.setSelection(true);
 			
+			new Label(this, SWT.NONE).setText("@");
+			
 			targetButton = new Button(this, SWT.CHECK);
 			targetButton.setToolTipText("Check to target the word in the query");
 			targetButton.addSelectionListener(new SelectionListener() {
@@ -659,6 +675,12 @@
 		private void updateWidgets() {
 			
 			allCriteriaButton.setEnabled(propertyFields.size() > 1);
+			allCriteriaButton.setVisible(propertyFields.size() > 1);
+			if (allCriteriaButton.isEnabled()) {
+				allCriteriaLabel.setText("&&");
+			} else {
+				allCriteriaLabel.setText("  ");
+			}
 			// propertiesAllOrOne.setVisible(propertyFields.size() > 1);
 			// ((GridData)propertiesAllOrOne.getLayoutData()).exclude = propertyFields.size() < 2;
 			if (propertyFields.size() == 0) {
