Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/outline/EbnfOutlineTreeProvider.xtend
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/outline/EbnfOutlineTreeProvider.xtend	(revision 65)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/outline/EbnfOutlineTreeProvider.xtend	(revision 66)
@@ -10,4 +10,4 @@
  */
 class EbnfOutlineTreeProvider extends org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider {
-	
+ 	
 }
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/quickfix/EbnfQuickfixProvider.xtend
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/quickfix/EbnfQuickfixProvider.xtend	(revision 65)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/quickfix/EbnfQuickfixProvider.xtend	(revision 66)
@@ -20,4 +20,13 @@
 import de.ugoe.cs.swe.bnftools.ebnf.EtsiBnf
 import java.util.ArrayList
+import org.eclipse.xtext.EcoreUtil2
+import de.ugoe.cs.swe.bnftools.ebnf.BnfEntry
+import org.eclipse.emf.ecore.util.EcoreUtil
+import org.eclipse.emf.common.util.EList
+import org.eclipse.xtext.resource.IResourceDescriptions
+import com.google.inject.Inject
+import de.ugoe.cs.swe.bnftools.ebnf.DefinitionList
+import de.ugoe.cs.swe.bnftools.ebnf.SingleDefinition
+import de.ugoe.cs.swe.bnftools.ebnf.util.EbnfAdapterFactory
 
 /**
@@ -28,56 +37,80 @@
 class EbnfQuickfixProvider extends org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider {
 
+	@Inject
+	IResourceDescriptions resourceDescriptions;
+
 	//*****************************************************************************************
-	//works
-	@Fix(EbnfValidator.ruleReferencedOneDescription)
-	def void fixInlineRuleReferencedOnce(Issue issue, IssueResolutionAcceptor acceptor) {
-		acceptor.accept(
-			issue,
-			"Inline the rule",
-			"Delete the rule and replace its single reference by the rule's right side",
-			"upcase.png"
-		) [ element, context |
-			var Rule rule = element as Rule;
-			
-			var IXtextDocument xtextDocument = context.getXtextDocument();
-			var ICompositeNode node = NodeModelUtils.findActualNodeFor(rule);
-			var String nodeText = node.text;
-			var int textLength = nodeText.length - 2;
-			var int offset = node.textRegion.offset;
-			//rename references
-			var ICompositeNode dList = NodeModelUtils.findActualNodeFor(rule.definitionList);
-			var String refText = "(" + dList.text + ")";
-			var int refLength = rule.name.length;
-			var List<RuleReference> references = EbnfAnalysisUtils.findReferences(rule);
-			//is the reference in the rule itself?
-			var boolean foundRule = false;
-			var EObject r = references.get(0) as EObject;
-			var Rule containingRule = null;
-			while (!foundRule) {
-				r = r.eContainer;
-				if (r instanceof Rule) {
-					containingRule = r as Rule;
-					foundRule = true;
-				}
-			}
-			if (!rule.equals(containingRule)) {
-				for (ruleRef : references) {
-					var ICompositeNode refNode = NodeModelUtils.findActualNodeFor(ruleRef);
-					var int refOffset = refNode.textRegion.offset;
-
-					xtextDocument.replace(refOffset, refLength, refText);
-					if (refOffset < offset) {
-						offset += refText.length - refLength;
+	//works but only in one file
+		@Fix(EbnfValidator.ruleReferencedOneDescription)
+		def void fixInlineRuleReferencedOnce(Issue issue, IssueResolutionAcceptor acceptor) {
+			acceptor.accept(
+				issue,
+				"Inline the rule",
+				"Delete the rule and replace its single reference by the rule's right side",
+				"upcase.png"
+			) [ element, context |
+				var Rule rule = element as Rule;
+				var IXtextDocument xtextDocument = context.getXtextDocument();
+				var ICompositeNode node = NodeModelUtils.findActualNodeFor(rule);
+				var String nodeText = node.text;
+				var int textLength = nodeText.length - 2;
+				var int offset = node.textRegion.offset;
+				//rename references
+				var ICompositeNode dList = NodeModelUtils.findActualNodeFor(rule.definitionList);
+				var String refText = "(" + dList.text + ")";
+				var int refLength = rule.name.length;
+				var List<RuleReference> references = EbnfAnalysisUtils.findReferences(rule);
+				//*********************************
+				//is the reference in the rule itself?
+				var boolean foundRule = false;
+				var EObject r = references.get(0) as EObject;
+				var Rule containingRule = null;
+				while (!foundRule) {
+					r = r.eContainer;
+					if (r instanceof Rule) {
+						containingRule = r as Rule;
+						foundRule = true;
 					}
 				}
-			}
-			// delete rule
-			xtextDocument.replace(offset, textLength, "");
-		]
-
-	}
+				if (!rule.equals(containingRule)) {
+	
+									for (ruleRef : references) {
+										var ICompositeNode refNode = NodeModelUtils.findActualNodeFor(ruleRef);
+										var int refOffset = refNode.textRegion.offset;
+					
+										xtextDocument.replace(refOffset, refLength, refText);
+										if (refOffset < offset) {
+											offset += refText.length - refLength;
+										}
+									}
+									
+				// delete rule
+				}
+				
+				xtextDocument.replace(offset, textLength, "");
+			]
+	
+		}
+	
+//	// this is not working by unknown reasons 
+//	@Fix(EbnfValidator.ruleReferencedOneDescription)
+//	def void fixInlineRuleReferencedOnce(Issue issue, IssueResolutionAcceptor acceptor) {
+//		acceptor.accept(
+//			issue,
+//			"Inline the rule",
+//			"Delete the rule and replace its single reference by the rule's right side",
+//			"upcase.png"
+//		) [ element, context |
+//			var Rule rule = element as Rule;
+//			var DefinitionList dlist = rule.definitionList;
+//			var List<Rule> rules=EbnfAnalysisUtils.getAllRules(rule.eContainer().eContainer() as EtsiBnf);
+//			var SingleDefinition sDef = rules.get(1).definitionList.singleDefinition.get(1);
+//			dlist.singleDefinition.add(sDef);
+//			rule.name="bla";
+//		]
+//
+//	}
 
 	//*****************************************************************************************
-	
 	//		@Fix(EbnfValidator.passthroughRuleDescription)
 	//	def void fixRemovePassthroughRule(Issue issue, IssueResolutionAcceptor acceptor) {
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/serializer/EbnfSyntacticSequencer.java
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/serializer/EbnfSyntacticSequencer.java	(revision 65)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/serializer/EbnfSyntacticSequencer.java	(revision 66)
@@ -76,13 +76,13 @@
 	 * Syntax:
 	 *     (
+	     '+' | 
+	     '[' | 
+	     ')' | 
 	     '{' | 
-	     '+' | 
-	     '}' | 
+	     ']' | 
+	     '|' | 
 	     '*' | 
-	     ')' | 
-	     '|' | 
-	     '[' | 
 	     '(' | 
-	     ']'
+	     '}'
 	 )*
 	 */
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/validation/AbstractEbnfValidator.java
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/validation/AbstractEbnfValidator.java	(revision 65)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/validation/AbstractEbnfValidator.java	(revision 66)
@@ -9,5 +9,5 @@
 import org.eclipse.xtext.validation.ComposedChecks;
 
-@ComposedChecks(validators= {org.eclipse.xtext.validation.ImportUriValidator.class, org.eclipse.xtext.validation.NamesAreUniqueValidator.class})
+@ComposedChecks(validators= {org.eclipse.xtext.validation.ImportUriValidator.class})
 public class AbstractEbnfValidator extends org.eclipse.xtext.validation.AbstractDeclarativeValidator {
 
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 65)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/GenerateEBNF.mwe2	(revision 66)
@@ -74,5 +74,5 @@
     		fragment = validation.ValidatorFragment auto-inject {
     		    composedCheck = "org.eclipse.xtext.validation.ImportUriValidator"
-    		    composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
+    		//    composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
     		}
     
@@ -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/validation/EbnfAnalysisUtils.java
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/validation/EbnfAnalysisUtils.java	(revision 65)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/validation/EbnfAnalysisUtils.java	(revision 66)
@@ -5,4 +5,8 @@
 
 import org.eclipse.xtext.EcoreUtil2;
+import org.eclipse.xtext.resource.IReferenceDescription;
+import org.eclipse.xtext.resource.IResourceDescription;
+import org.eclipse.xtext.resource.IResourceDescriptions;
+
 import de.ugoe.cs.swe.bnftools.ebnf.Atom;
 import de.ugoe.cs.swe.bnftools.ebnf.DefinitionList;
@@ -83,3 +87,26 @@
 		return rules;
 	}
+	
+	//----------------------------------------------------------------------------------------------------
+	static public List<Rule> findReferences(Rule rule, IResourceDescriptions resourceDescriptions) {
+		List<Rule> ruleReferences = new ArrayList<Rule>();
+		
+		final String ruleURIF = rule.eResource().getURIFragment(rule);
+		
+		for (IResourceDescription resourceDescription : resourceDescriptions
+				.getAllResourceDescriptions()) {
+			if (!resourceDescription.getURI().equals(rule.eResource().getURI()))
+				continue;
+			
+			for (IReferenceDescription referenceDescription : resourceDescription
+					.getReferenceDescriptions()) {
+				if (ruleURIF.equals(referenceDescription.getTargetEObjectUri()
+						.fragment())) {
+					ruleReferences.add((Rule) rule.eResource().getEObject(referenceDescription.getTargetEObjectUri().fragment()));
+				}
+
+			}
+		}
+		return ruleReferences;
+	}
 }
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 65)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/validation/EbnfValidator.xtend	(revision 66)
@@ -15,4 +15,6 @@
 import de.ugoe.cs.swe.bnftools.ebnf.SingleDefinition
 import java.util.ArrayList
+import com.google.inject.Inject
+import org.eclipse.xtext.resource.IResourceDescriptions
 
 //import java.util.HashMap
@@ -27,4 +29,9 @@
 class EbnfValidator extends AbstractEbnfValidator {
 
+
+	@Inject
+	IResourceDescriptions resourceDescriptions;
+	
+	
 	public static final String ruleReferencedOneDescription = "The rule is only referenced by one other rule";
 	public static final String passthroughRuleDescription = "The rule is a passthrough rule";
@@ -48,7 +55,7 @@
 			return;
 
-		var List<RuleReference> references = EbnfAnalysisUtils.findReferences(rule);
-
-		if (references.size() == 1 && rule.rulenumber != 1) {
+		var List<Rule> references = EbnfAnalysisUtils.findReferences(rule,resourceDescriptions);
+		var List<RuleReference> references1 = EbnfAnalysisUtils.findReferences(rule);
+		if (references.size+references1.size == 1 && rule.rulenumber != 1) {
 			warning(ruleReferencedOneDescription, EbnfPackage$Literals::RULE__NAME, ruleReferencedOneDescription,
 				rule.name);
@@ -172,6 +179,6 @@
 
 		var List<RuleReference> references = EbnfAnalysisUtils.findReferences(rule);
-
-		if ((references.size() == 0) && (rule.getRulenumber() != 1))
+		var List<Rule> references1 = EbnfAnalysisUtils.findReferences(rule,resourceDescriptions);
+		if ((references.size+references1.size == 0) && (rule.getRulenumber() != 1))
 			warning(unusedRuleDescription, EbnfPackage$Literals::RULE__NAME, unusedRuleDescription, rule.name);
 	}
@@ -214,7 +221,7 @@
 
 		var List<RuleReference> references = EbnfAnalysisUtils.findReferences(rule);
-
+		var List<Rule> references1 = EbnfAnalysisUtils.findReferences(rule,resourceDescriptions);
 		if (EbnfAnalysisUtils.isPassthroughRule(rule) && rule.rulenumber != 1) {
-			if (references.size() == 0) {
+			if (references.size+references1.size == 0) {
 				warning(unreferencedPassthroughRuleDescription, EbnfPackage$Literals::RULE__NAME);
 			} else {
