diff --git a/src/main/antlr/cosmas/c2ps_opPROX.g b/src/main/antlr/cosmas/c2ps_opPROX.g
index bb1fb18..a4ff2cb 100644
--- a/src/main/antlr/cosmas/c2ps_opPROX.g
+++ b/src/main/antlr/cosmas/c2ps_opPROX.g
@@ -57,9 +57,13 @@
 // but how to handle multiple values for those options?
 // 28.11.23/FB
 
-proxDist:	(m=proxMeasure|d=proxDirection|v=proxDistValue)+
+proxDist
+@init{ int countM=0;}
+	:
+		((m=proxMeasure {countM++;})|d=proxDirection|v=proxDistValue)+ {countM == 1}? 
 		      
-		->  {c2ps_opPROX.encodeDIST(DIST, DIR, $d.tree, $m.tree, $v.tree, $proxDist.text)};
+	->  {c2ps_opPROX.encodeDIST(DIST, DIR, $d.tree, $m.tree, $v.tree, $proxDist.text)};
+//	->  {c2ps_opPROX.checkDIST($proxDist.text) == true } ? {c2ps_opPROX.encodeDIST(DIST, DIR, $d.tree, $m.tree, $v.tree, $proxDist.text)};
 
 // new rule accepts only '+' and '-'; default tree for direction is 
 // set in c2ps_opPROX.encodeDIST() now.
@@ -74,8 +78,16 @@
 		-> {$m2.text != null}? ^(RANGE $m1  $m2)
 		->				       ^(RANGE VAL0 $m1);
 
+/* calling c2ps_opPROX.checkMeasure() as a check will not compile by ANTLR,
+   reason unknown! 01.12.23/FB
 proxMeasure
-	:	(meas='w'|meas='s'|meas='p'|meas='t') -> {c2ps_opPROX.checkMeasure($meas)} ;  // {c2ps_opPROX.checkMeasure($meas)} ? ^(MEAS $meas);
+	:	(meas='w'|meas='s'|meas='p'|meas='t') -> {c2ps_opPROX.checkMeasure($meas)} ? ^(MEAS $meas) ;  
+*/
+
+// mentioning >1 measures will be checked/rejected in c2ps_opPROX.encodeDIST(). 
+
+proxMeasure
+	:	(meas='w'|meas='s'|meas='p'|meas='t') -> ^(MEAS $meas) ;  
 
 proxDistMin
 	:	DISTVALUE;
diff --git a/src/main/java/de/ids_mannheim/korap/query/parse/cosmas/c2ps_opPROX.java b/src/main/java/de/ids_mannheim/korap/query/parse/cosmas/c2ps_opPROX.java
index 6458dd3..873f914 100644
--- a/src/main/java/de/ids_mannheim/korap/query/parse/cosmas/c2ps_opPROX.java
+++ b/src/main/java/de/ids_mannheim/korap/query/parse/cosmas/c2ps_opPROX.java
@@ -2,6 +2,8 @@
 
 import org.antlr.runtime.*;
 import org.antlr.runtime.tree.*;
+import de.ids_mannheim.korap.query.serialize.util.Antlr3DescriptiveErrorListener;
+import de.ids_mannheim.korap.query.serialize.util.StatusCodes;
 
 /*
  * parses Opts of PROX: /w3:4,s0,min or %w3:4,s0,min.
@@ -19,15 +21,29 @@
 	 * 28.11.23/FB
 	 */
 	
-	public static Object encodeDIST(int typeDIST, int typeDIR, Object ctDir, Object ctMeas, Object ctVal, String text)
+	public static Object encodeDIST(int typeDIST, int typeDIR, Object ctDir, Object ctMeas, Object ctVal, String text) throws RecognitionException 
 	{
+		boolean multiple = false;
 		CommonTree tree1 = (CommonTree)ctDir;
 		CommonTree tree2 = (CommonTree)ctMeas;
 		CommonTree tree3 = (CommonTree)ctVal;
 		
-
+		addError(StatusCodes.MALFORMED_QUERY,
+                "Could not parse query. Please make sure it is well-formed.");
+		
 		System.err.printf("Debug: encodeDIST: scanned input='%s'.\n", text);
 		
+		if( multiple == true )
+			{
+			String mess = String.format("line 0:%d '%s' expecting only 1 of 'wsp'!\n",
+									23, text);
+			//de.ids_mannheim.korap.query.serialize.Antlr3AbstractQueryProcessor.reportError(mess);
+			//reportError(mess);
+			RecognitionException re = new RecognitionException();
+			throw re;
+			}
+			
+		
 		System.err.printf("Debug: encodeDIST: ctDir='%s': %d ctMeas='%s': %d ctVal='%s': %d.\n",
 				tree1 != null ? tree1.toStringTree() : "null",
 				tree1 != null ? tree1.getChildCount() : 0,
@@ -62,6 +78,12 @@
 		return tree;
 	} // encodeDIST
 	
+	public static boolean checkDIST(String input)
+	
+	{
+		return true;
+	}
+	
 	public static Tree check (String input, int index) {
         ANTLRStringStream ss = new ANTLRStringStream(input);
         c2ps_opPROXLexer lex = new c2ps_opPROXLexer(ss);
@@ -88,6 +110,12 @@
         return tree;
     }
 
+	public static boolean checkFalse()
+	{
+	
+	return false; // testwise	
+	}
+	
 	public static boolean checkMeasure( Object measure)
 	{
 		System.err.printf("Debug: checkMeasure: measure = %s.\n",
