Index: /branches/t3e-tools/t3q/src/org/etsi/t3q/T3Q.java
===================================================================
--- /branches/t3e-tools/t3q/src/org/etsi/t3q/T3Q.java	(revision 15)
+++ /branches/t3e-tools/t3q/src/org/etsi/t3q/T3Q.java	(revision 16)
@@ -247,5 +247,5 @@
 			
 			if (T3Q.activeProfile.isStatShowSummary()) {
-				System.out.println("Brief statistics summary of occurences in message classes:");
+				System.out.println("Brief statistics summary of occurrences in message classes:");
 				for (MessageClass m : MessageClass.values()) {
 					System.out.println("\t" + m.getDescription() + " : "
Index: /branches/t3e-tools/t3q/src/org/etsi/t3q/config/QualityCheckProfile.java
===================================================================
--- /branches/t3e-tools/t3q/src/org/etsi/t3q/config/QualityCheckProfile.java	(revision 15)
+++ /branches/t3e-tools/t3q/src/org/etsi/t3q/config/QualityCheckProfile.java	(revision 16)
@@ -72,4 +72,15 @@
 	private TTCN3FormatterParameters formattingParameters = new TTCN3FormatterParameters();
 
+	private RealtimeExtensionConfig realtimeExtensionConfig = new RealtimeExtensionConfig();
+	
+	public RealtimeExtensionConfig getRealtimeExtensionConfig() {
+		return realtimeExtensionConfig;
+	}
+
+	public void setRealtimeExtensionConfig(
+			RealtimeExtensionConfig realtimeExtensionConfig) {
+		this.realtimeExtensionConfig = realtimeExtensionConfig;
+	}
+
 	public String getLogFormatRegExp() {
 		return logFormatRegExp;
Index: /branches/t3e-tools/t3q/src/org/etsi/t3q/config/RealtimeExtensionConfig.java
===================================================================
--- /branches/t3e-tools/t3q/src/org/etsi/t3q/config/RealtimeExtensionConfig.java	(revision 16)
+++ /branches/t3e-tools/t3q/src/org/etsi/t3q/config/RealtimeExtensionConfig.java	(revision 16)
@@ -0,0 +1,14 @@
+package org.etsi.t3q.config;
+
+public class RealtimeExtensionConfig {
+	private boolean checkWaitStatementPrecededByLog = true;
+
+	public boolean isCheckWaitStatementPrecededByLog() {
+		return checkWaitStatementPrecededByLog;
+	}
+
+	public void setCheckWaitStatementPrecededByLog(
+			boolean checkWaitStatementPrecededByLog) {
+		this.checkWaitStatementPrecededByLog = checkWaitStatementPrecededByLog;
+	}
+}
Index: /branches/t3e-tools/t3q/src/org/etsi/t3q/exceptions/TTCN3ParserException.java
===================================================================
--- /branches/t3e-tools/t3q/src/org/etsi/t3q/exceptions/TTCN3ParserException.java	(revision 15)
+++ /branches/t3e-tools/t3q/src/org/etsi/t3q/exceptions/TTCN3ParserException.java	(revision 16)
@@ -7,4 +7,5 @@
 	public TTCN3ParserException(String message) {
 		super("TTCN-3 Parser Exception: " + message); //TODO: add tree dump
+		//TODO: add origins
 	}
 
Index: /branches/t3e-tools/t3q/src/org/etsi/t3q/visitor/AbstractVisitor.java
===================================================================
--- /branches/t3e-tools/t3q/src/org/etsi/t3q/visitor/AbstractVisitor.java	(revision 15)
+++ /branches/t3e-tools/t3q/src/org/etsi/t3q/visitor/AbstractVisitor.java	(revision 16)
@@ -770,4 +770,15 @@
     public ContinueStatus visitXOR(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
     public ContinueStatus visitXOR4B(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNowOperation(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitWaitStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTimestampSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitREALTIME(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNOW(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitWAIT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSTEPSIZE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTIMESTAMP(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCONT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPAR(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSEQ(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
     public ContinueStatus visitWS(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
     public ContinueStatus visitSL_COMMENT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
@@ -3106,4 +3117,37 @@
             case TTCN3ParserTokenTypes.XOR4B:
                             continueStatus=visitXOR4B(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NowOperation:
+                            continueStatus=visitNowOperation(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.WaitStatement:
+                            continueStatus=visitWaitStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TimestampSpec:
+                            continueStatus=visitTimestampSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.REALTIME:
+                            continueStatus=visitREALTIME(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NOW:
+                            continueStatus=visitNOW(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.WAIT:
+                            continueStatus=visitWAIT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.STEPSIZE:
+                            continueStatus=visitSTEPSIZE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TIMESTAMP:
+                            continueStatus=visitTIMESTAMP(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CONT:
+                            continueStatus=visitCONT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PAR:
+                            continueStatus=visitPAR(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SEQ:
+                            continueStatus=visitSEQ(node);
                             return continueStatus;
             case TTCN3ParserTokenTypes.WS:
Index: /branches/t3e-tools/t3q/src/org/etsi/t3q/visitor/QualityChecker.java
===================================================================
--- /branches/t3e-tools/t3q/src/org/etsi/t3q/visitor/QualityChecker.java	(revision 15)
+++ /branches/t3e-tools/t3q/src/org/etsi/t3q/visitor/QualityChecker.java	(revision 16)
@@ -2458,4 +2458,74 @@
 	}
 
+	
+	//TODO: temporary duplicate of the above
+	//- above needs refactoring
+	//- this needs to be separated in a realtime checker
+	public void checkWaitStatementPrecededByLog(LocationAST node) {
+		// TODO: no more function statement or defs
+		// TODO: fixed issue with statement blocks
+
+		// Fixed: currently based on SetLocalVerdict node,
+		// consider starting at the fail or inconc node instead, checking
+		// whether it is
+		// within a set verdict context and proceed from there
+		// fix: it is specific to the set verdict and not to inconc or fail
+		// alone
+
+		boolean problemOccured = false;
+		LocationAST parentNode = LocationAST.resolveParentsUntilType(node,
+				new int[] { TTCN3ParserTokenTypes.FunctionStatement });
+		if (parentNode == null) {
+			this.getLoggingInterface().logFix(node.getLine(),
+					node.getEndLine(),
+					MessageClass.LOGGING,
+					"Cannot resolve the parent node",
+					"5.4, " + MiscTools.getMethodName());
+			return;
+		}
+
+		int functionStatementOrDefsVisitedCount = visitor.getFunctionStatementOrDefNodes()
+															.size();
+		if (parentNode == visitor.getFunctionStatementOrDefNodes()
+									.get(functionStatementOrDefsVisitedCount - 1)) {
+
+			int i = functionStatementOrDefsVisitedCount - 2;
+			if (i >= 0) {
+				LocationAST next = null;
+				// skip semicolons
+				next = visitor.getFunctionStatementOrDefNodes()
+								.get(i)
+								.getNextSibling();
+
+				while ((next != null)
+						&& (next.getType() == TTCN3ParserTokenTypes.SemiColon)) {
+					next = next.getNextSibling();
+				}
+
+				if (next == parentNode) {
+					LocationAST resultNode = (LocationAST) ASTUtil.findChild(visitor.getFunctionStatementOrDefNodes()
+																					.get(i),
+							TTCN3ParserTokenTypes.LogStatement);
+					if (resultNode == null) {
+						problemOccured = true;
+					}
+				} else {
+					problemOccured = true;
+				}
+			} else {
+				problemOccured = true;
+			}
+		}
+
+		if (problemOccured) {
+			this.getLoggingInterface()
+				.logWarning(node.getLine(),
+						node.getEndLine(),
+						MessageClass.LOGGING,
+						"No log statement precedes a wait statement!",
+						"RT.X.X, " + MiscTools.getMethodName());
+		}
+	}
+	
 	// -------------------------------------------------------------------------------------------
 
Index: /branches/t3e-tools/t3q/src/org/etsi/t3q/visitor/T3QVisitor.java
===================================================================
--- /branches/t3e-tools/t3q/src/org/etsi/t3q/visitor/T3QVisitor.java	(revision 15)
+++ /branches/t3e-tools/t3q/src/org/etsi/t3q/visitor/T3QVisitor.java	(revision 16)
@@ -27,4 +27,19 @@
 		checker.stringLevelChecks(this.getFilename());
 	}
+	
+	//TODO: temporary addition
+	public ContinueStatus visitWaitStatement(LocationAST node) 
+			throws TTCN3BehaviorException {
+		if (T3Q.activeProfile.getRealtimeExtensionConfig().isCheckWaitStatementPrecededByLog()) {
+			checker.checkWaitStatementPrecededByLog(node);
+		}
+		return ContinueStatus.getInstance(true, true);
+	}
+	
+	
+	public ContinueStatus visitIdentifier(LocationAST node) 
+			throws TTCN3BehaviorException {
+		return ContinueStatus.getInstance(true, true);
+	}
 
 	public ContinueStatus visitTTCN3Module(LocationAST node)
@@ -33,5 +48,6 @@
 			checker.checkModuleSize(node);
 		}
-
+//		String output = "";
+//		System.out.println(LocationAST.dumpTree(node,1,output));
 		return ContinueStatus.getInstance(true, true);
 	}
