Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/EBNF.xtext
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/EBNF.xtext	(revision 63)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/EBNF.xtext	(revision 65)
@@ -53,4 +53,9 @@
  	('label:' label=ID)? ';'
 ;
+
+//Import: 'import' importedNamespace=FqnWithWildCard;
+//FqnWithWildCard: Fqn('.*')? ';';
+//Fqn:ID('.'ID)*;
+
 
 Rule:
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/GenerateEBNF.mwe2
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/GenerateEBNF.mwe2	(revision 63)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/GenerateEBNF.mwe2	(revision 65)
@@ -73,16 +73,16 @@
     		// Xtend-based API for validation
     		fragment = validation.ValidatorFragment auto-inject {
-    		//    composedCheck = "org.eclipse.xtext.validation.ImportUriValidator"
-    		//    composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
+    		    composedCheck = "org.eclipse.xtext.validation.ImportUriValidator"
+    		    composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
     		}
     
     		// old scoping and exporting API
-    		// fragment = scoping.ImportURIScopingFragment auto-inject {}
-    		// fragment = exporting.SimpleNamesFragment auto-inject {}
+    		 fragment = scoping.ImportURIScopingFragment auto-inject {}
+    		 fragment = exporting.SimpleNamesFragment auto-inject {}
     
     		// scoping and exporting API
-    		fragment = scoping.ImportNamespacesScopingFragment auto-inject {}
-    		fragment = exporting.QualifiedNamesFragment auto-inject {}
-    		fragment = builder.BuilderIntegrationFragment auto-inject {}
+//    		fragment = scoping.ImportNamespacesScopingFragment auto-inject {}
+//    		fragment = exporting.QualifiedNamesFragment auto-inject {}
+//    		fragment = builder.BuilderIntegrationFragment auto-inject {}
     
     		// generator API
@@ -115,5 +115,5 @@
     
     		// provides the necessary bindings for java types integration
-    		fragment = types.TypesGeneratorFragment auto-inject {}
+//    		fragment = types.TypesGeneratorFragment auto-inject {}
     
     		// generates the required bindings only if the grammar inherits from Xbase
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/formatting/EbnfFormatter.xtend
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/formatting/EbnfFormatter.xtend	(revision 63)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/formatting/EbnfFormatter.xtend	(revision 65)
@@ -9,4 +9,7 @@
 import org.eclipse.xtext.formatting.impl.AbstractDeclarativeFormatter
 import org.eclipse.xtext.formatting.impl.FormattingConfig
+import org.eclipse.emf.ecore.EObject
+import de.ugoe.cs.swe.bnftools.ebnf.Rule
+import de.ugoe.cs.swe.bnftools.ebnf.DefinitionList
 
 /**
@@ -29,11 +32,12 @@
 		c.setLinewrap(0, 1, 1).after(ML_COMMENTRule)
 
-		
 		var EbnfGrammarAccess f = getGrammarAccess as EbnfGrammarAccess;
 		c.setLinewrap.before(f.ruleRule);
 		c.setLinewrap.before(f.importRule);
 		c.setNoSpace.after(f.ruleAccess.rulenumberINTTerminalRuleCall_0_0_0)
-//		//c.setLinewrap.after(f.);
+
+		
 //		for (Keyword bar : f.findKeywords("|")) {
+//
 //			c.setSpace("\n\t\t").before(bar);
 //		}
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/generator/EbnfGenerator.xtend
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/generator/EbnfGenerator.xtend	(revision 63)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/generator/EbnfGenerator.xtend	(revision 65)
@@ -19,4 +19,5 @@
 import de.ugoe.cs.swe.bnftools.ebnf.RuleReference
 import de.ugoe.cs.swe.bnftools.ebnf.StringRule
+import java.io.File
 
 /**
@@ -30,5 +31,5 @@
 		for (e : resource.allContents.toIterable.filter(EtsiBnf)) {
 			if (e.bnfEntry.size!=0) {
-				fsa.generateFile(e.name + ".fo", e.compile)
+				 fsa.generateFile(e.name + ".fo", e.compile)
 			}
 		}
@@ -50,4 +51,7 @@
 		<fo:page-sequence  master-reference="A4">
 			<fo:flow flow-name="xsl-region-body" font-family="verdana">
+				
+				<fo:block span="all"  text-align="center" text-indent="1em" font-family="Arial" font-size="20pt" font-weight="bold" background-color="#EEEEEE" line-height="20mm">«bnf.name»</fo:block>
+						
 				«FOR bnfentry:bnf.bnfEntry»
 					«bnfentry.compile»
@@ -63,5 +67,5 @@
 	'''
 	
-	def compile(Rule rule)'''<fo:block><fo:inline id="«rule.name»"	color="purple">«IF rule.rulenumber!=0»«rule.rulenumber».\t«ENDIF»«rule.name»</fo:inline>	::=	«rule.definitionList.compile»</block>'''
+	def compile(Rule rule)'''<fo:block><fo:inline id="«rule.name»"	color="purple">«IF rule.rulenumber!=0»«rule.rulenumber».	«ENDIF»«rule.name»</fo:inline>	::=	«rule.definitionList.compile»</fo:block>'''
 	
 	def compile(DefinitionList dList)'''«FOR sDef:dList.singleDefinition»«sDef.compile»«IF !sDef.equals(dList.singleDefinition.last)» | «ENDIF»«ENDFOR»'''
@@ -80,7 +84,7 @@
 	«IF atom.atomRuleReference!= null»«atom.atomRuleReference.compile»«ENDIF»«IF atom.atomStringRule!= null»«atom.atomStringRule.compile»«ENDIF»'''
 	
-	def compile(RuleReference rRef)'''<fo:basic-link internal-destination="«rRef.ruleref.name»" text-decoration="underline" color="blue">«rRef.ruleref.name»</fo:basic-link>'''
+	def compile(RuleReference rRef)'''<fo:basic-link internal-destination="«rRef.ruleref.name»" text-decoration="underline" color="blue">«rRef.ruleref.name»</fo:basic-link>	'''
 	
-	def compile(StringRule sRule)'''«IF sRule.colon!=null»«sRule.colon»«ENDIF»«IF sRule.literal!=null»«sRule.literal»«ENDIF»'''
+	def compile(StringRule sRule)'''«IF sRule.colon!=null»«sRule.colon»«ENDIF»«IF sRule.literal!=null»«sRule.literal»	«ENDIF»'''
 	
 	
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/scoping/EbnfScopeProvider.xtend
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/scoping/EbnfScopeProvider.xtend	(revision 63)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/scoping/EbnfScopeProvider.xtend	(revision 65)
@@ -3,4 +3,8 @@
  */
 package de.ugoe.cs.swe.bnftools.scoping
+
+//import org.eclipse.xtext.naming.IQualifiedNameConverter
+//import com.google.inject.Inject
+//import org.eclipse.xtext.scoping.impl.ImportUriGlobalScopeProvider
 
 /**
@@ -13,3 +17,4 @@
 class EbnfScopeProvider extends org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider {
 
+
 }
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/validation/EbnfValidator.xtend
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/validation/EbnfValidator.xtend	(revision 63)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/validation/EbnfValidator.xtend	(revision 65)
@@ -14,8 +14,9 @@
 import de.ugoe.cs.swe.bnftools.ebnf.DefinitionList
 import de.ugoe.cs.swe.bnftools.ebnf.SingleDefinition
+import java.util.ArrayList
+
 //import java.util.HashMap
 //import java.util.Set
 //import java.util.HashSet
-
 //import org.eclipse.xtext.validation.Check
 /**
@@ -32,4 +33,5 @@
 	public static final String equalAlternativeDescription = "The rule contains equal alternatives";
 	public static final String duplicateRulesDescription = "The rule is a duplicate";
+
 	//public  static final String duplicateSubRulesDescription = "A part the of rule is a duplicate";
 	public static final String nonUniqueNameDescription = "The rule has the same Name as the Rule in Line ";
@@ -49,5 +51,6 @@
 
 		if (references.size() == 1 && rule.rulenumber != 1) {
-			warning(ruleReferencedOneDescription, EbnfPackage$Literals::RULE__NAME,ruleReferencedOneDescription,rule.name);
+			warning(ruleReferencedOneDescription, EbnfPackage$Literals::RULE__NAME, ruleReferencedOneDescription,
+				rule.name);
 		}
 	}
@@ -75,18 +78,67 @@
 
 		// run through all Rules
-		for (currentRule : allRules) {
-			if (currentRule != rule) {
-				var ICompositeNode currentRuleDefinitionList = NodeModelUtils.findActualNodeFor(
-					currentRule.getDefinitionList());
-				var String currentRuleRightHandSideText = currentRuleDefinitionList.text.trim().replaceAll("[ \t\n\r]",
-					"");
-
-				if (currentRuleRightHandSideText.equals(rightHandSideText)) {
-					var String description = duplicateRulesDescription + " with rule \"" + currentRule.getName() +
-						"\" (Line " + NodeModelUtils.findActualNodeFor(currentRule).getStartLine() + ")";
-					warning(description, EbnfPackage$Literals::RULE__NAME);
-				}
-			}
-		}
+						for (currentRule : allRules) {
+							if (currentRule != rule) {
+								var ICompositeNode currentRuleDefinitionList = NodeModelUtils.findActualNodeFor(
+									currentRule.getDefinitionList());
+								var String currentRuleRightHandSideText = currentRuleDefinitionList.text.trim().replaceAll("[ \t\n\r]",
+									"");
+				
+								if (currentRuleRightHandSideText.equals(rightHandSideText)) {
+									var String description = duplicateRulesDescription + " with rule \"" + currentRule.getName() +
+										"\" (Line " + NodeModelUtils.findActualNodeFor(currentRule).getStartLine() + ")";
+									warning(description, EbnfPackage$Literals::RULE__NAME);
+								}
+							}
+						}
+		
+//		//get all Single Definitions as Trimmed Strings
+//		var List<String> singleDefsAsString = new ArrayList<String>();
+//
+//		for (SingleDefinition s : (rule.definitionList).singleDefinition) {
+//			singleDefsAsString.add(NodeModelUtils.findActualNodeFor(s).text.trim().replaceAll("[ \t\n\r]", ""));
+//		}
+//
+//		// for every rule get the single definitions as Strings
+//		var int j = 0;
+//		while (j<allRules.size) {
+//			var currentRule=allRules.get(j);
+//			if (currentRule != rule) {
+//				var List<String> singleDefsAsString1 = new ArrayList<String>();
+//
+//				for (SingleDefinition s : ( currentRule.definitionList).singleDefinition) {
+//					singleDefsAsString1.add(NodeModelUtils.findActualNodeFor(s).text.trim().replaceAll("[ \t\n\r]", ""));
+//				}
+//
+//				//for every String SingleDefinition find a corresponding ind the current rule 
+//				if (singleDefsAsString.size == singleDefsAsString1.size) {
+//					var List<String> singleDefsAsStringCpy = singleDefsAsString.clone;
+//					var boolean equal = true;
+//					while (equal) {
+//						var String momentaryString = singleDefsAsStringCpy.get(0);
+//						var int i = 0;
+//						var boolean found = false;
+//						while (i < singleDefsAsString1.size && !found) {
+//							if (singleDefsAsString1.get(i).equals(momentaryString)) {
+//								singleDefsAsStringCpy.remove(0);
+//								singleDefsAsString1.remove(i);
+//								found = true
+//							}
+//							i++;
+//						}
+//						if (!found) {
+//							equal = false;
+//						}
+//						if (singleDefsAsStringCpy.empty) {
+//							var String description = duplicateRulesDescription + " with rule \"" + currentRule.getName() +
+//								"\" (Line " + NodeModelUtils.findActualNodeFor(currentRule).getStartLine() + ")";
+//							warning(description, EbnfPackage$Literals::RULE__NAME)
+//						}
+//					}
+//				}
+//
+//			}
+//			j++;
+//		}
 	}
 
@@ -122,5 +174,5 @@
 
 		if ((references.size() == 0) && (rule.getRulenumber() != 1))
-			warning(unusedRuleDescription, EbnfPackage$Literals::RULE__NAME,unusedRuleDescription,rule.name);
+			warning(unusedRuleDescription, EbnfPackage$Literals::RULE__NAME, unusedRuleDescription, rule.name);
 	}
 
@@ -144,5 +196,6 @@
 
 					if (d1.equals(d2))
-						warning(equalAlternativeDescription, EbnfPackage$Literals::RULE__NAME,equalAlternativeDescription);
+						warning(equalAlternativeDescription, EbnfPackage$Literals::RULE__NAME,
+							equalAlternativeDescription, rule.name);
 				}
 			}
@@ -162,16 +215,16 @@
 		var List<RuleReference> references = EbnfAnalysisUtils.findReferences(rule);
 
-		if (EbnfAnalysisUtils.isPassthroughRule(rule)) {
+		if (EbnfAnalysisUtils.isPassthroughRule(rule) && rule.rulenumber != 1) {
 			if (references.size() == 0) {
 				warning(unreferencedPassthroughRuleDescription, EbnfPackage$Literals::RULE__NAME);
 			} else {
-				warning(passthroughRuleDescription, EbnfPackage$Literals::RULE__NAME,passthroughRuleDescription);
+				warning(passthroughRuleDescription, EbnfPackage$Literals::RULE__NAME, passthroughRuleDescription,
+					rule.name);
 			}
 		}
 	}
 
-
-	// ----------------------------------------------------------------------------------------------------
-	/* Checks if a subrule is used more then once, e.g.:
+// ----------------------------------------------------------------------------------------------------
+/* Checks if a subrule is used more then once, e.g.:
 	 * a ::= (a b) e
 	 * b ::= (a b) d
