diff --git a/README b/README
index 422e4bd..adebf9a 100644
--- a/README
+++ b/README
@@ -5,10 +5,11 @@
 Building from the Source Distribution
 -------------------------------------
 
-We use Maven 3.0 or later for building; download this if needed, 
+We use Maven 3.0 and Java 8 or later for building; download this if needed, 
 and set the environment variable MAVEN_OPTS to -Xmx800m -XX:MaxPerSize=256m.
 
 Then do the build by going into the UIMA Ruta directory, and issuing the command
+   
    mvn clean install
    
 This builds everything except the ...source-release.zip file. If you want that,
@@ -48,23 +49,3 @@
   </typeSystemExcludes>
 </configuration>
 
--------------------------------------
-
-If you use the uimaFIT JCasGenPomFriendly in Maven and want to use UIMA Ruta 
-as a standalone annotator you have to exclude the generated UIMA Ruta basic 
-type files from the build, e.g., by adding:
-
-
-<plugin>
-  <groupId>org.apache.maven.plugins</groupId>
-  <artifactId>maven-compiler-plugin</artifactId>
-  <version>3.0</version>
-  <configuration>
-    <excludes>
-      <exclude>org/apache/uima/ruta/type/*.java</exclude>
-    </excludes>
-  </configuration>
-</plugin> 
-
-
-
diff --git a/RELEASE_NOTES.html b/RELEASE_NOTES.html
index 96c3627..5e07b31 100644
--- a/RELEASE_NOTES.html
+++ b/RELEASE_NOTES.html
@@ -50,11 +50,12 @@
 <p>
   <p>UIMA Ruta Language and Analysis Engine:</p>
   <ul>
+  	<li>Requires Java 8</li>
     <li>New language feature: label expressions at actions for directly assigning/reusing newly created annotations. Example: Document{-> a:T1, CREATE(T2, "ref" = a)};</li>
     <li>New language feature: new type of rule element for completely optional match which does not require an existing annotation and therefore also works at the boundary of a window/document. Example: NUM _{-PARTOF(CW)};</li>
     <li>Type lists can be used as matching condition.</li>
     <li>Initial default value of string and annotations variables is now null.</li>
-    <li>Comparison of annotation and annotation list are now supported..</li>
+    <li>Comparison of annotation and annotation list are now supported.</li>
     <li>New configuration parameter 'inferenceVisitors'.</li>
     <li>New configuration parameter 'maxRuleMatches'.</li>
     <li>New configuration parameter 'maxRuleElementMatches'.</li>
diff --git a/example-projects/ExtensionsExample/.buildpath b/example-projects/ExtensionsExample/.buildpath
deleted file mode 100644
index a4d0028..0000000
--- a/example-projects/ExtensionsExample/.buildpath
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<buildpath>
-	<buildpathentry kind="src" path="script">
-		<attributes>
-			<attribute name="ruta" value="script"/>
-		</attributes>
-	</buildpathentry>
-	<buildpathentry kind="src" path="descriptor">
-		<attributes>
-			<attribute name="ruta" value="descriptor"/>
-		</attributes>
-	</buildpathentry>
-	<buildpathentry kind="src" path="resources">
-		<attributes>
-			<attribute name="ruta" value="resources"/>
-		</attributes>
-	</buildpathentry>
-</buildpath>
diff --git a/example-projects/ExtensionsExample/.project b/example-projects/ExtensionsExample/.project
deleted file mode 100644
index fe336aa..0000000
--- a/example-projects/ExtensionsExample/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>ExtensionsExample</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.dltk.core.scriptbuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.apache.uima.ruta.ide.nature</nature>
-	</natures>
-</projectDescription>
diff --git a/example-projects/ExtensionsExample/LICENSE b/example-projects/ExtensionsExample/LICENSE
deleted file mode 100644
index 75b5248..0000000
--- a/example-projects/ExtensionsExample/LICENSE
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/example-projects/ExtensionsExample/NOTICE b/example-projects/ExtensionsExample/NOTICE
deleted file mode 100644
index e8ee256..0000000
--- a/example-projects/ExtensionsExample/NOTICE
+++ /dev/null
@@ -1,6 +0,0 @@
-Apache UIMA Ruta extensions example project
-Copyright 2006, 2014 The Apache Software Foundation
-
-This product includes content developed at
-The Apache Software Foundation (http://www.apache.org/).
-
diff --git a/example-projects/ExtensionsExample/descriptor/BasicEngine.xml b/example-projects/ExtensionsExample/descriptor/BasicEngine.xml
deleted file mode 100644
index 30e8014..0000000
--- a/example-projects/ExtensionsExample/descriptor/BasicEngine.xml
+++ /dev/null
@@ -1,279 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-  <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-  <primitive>true</primitive>
-  <annotatorImplementationName>org.apache.uima.ruta.engine.RutaEngine</annotatorImplementationName>
-  <analysisEngineMetaData>
-    <name>BasicEngine</name>
-    <description/>
-    <version>1.0</version>
-    <vendor/>
-    <configurationParameters searchStrategy="language_fallback">
-      <configurationParameter>
-        <name>seeders</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>debug</name>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>additionalScripts</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>profile</name>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>debugWithMatches</name>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>statistics</name>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>additionalEngines</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>additionalExtensions</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>debugOnlyFor</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>scriptEncoding</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>additionalEngineLoaders</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>resourcePaths</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>defaultFilteredTypes</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>mainScript</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>scriptPaths</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>descriptorPaths</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>removeBasics</name>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>dynamicAnchoring</name>
-        <description>Activates dynamic anchoring (possible speed up).</description>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>greedyRuleElement</name>
-        <description>Activates greedy anchoring for rule elements.</description>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>greedyRule</name>
-        <description>Activates greedy anchoring for complete rules.</description>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>lowMemoryProfile</name>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>createdBy</name>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>simpleGreedyForComposed</name>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>additionalUimafitEngines</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>strictImports</name>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>varNames</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>varValues</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>rules</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-    </configurationParameters>
-    <configurationParameterSettings>
-      <nameValuePair>
-        <name>debug</name>
-        <value>
-          <boolean>false</boolean>
-        </value>
-      </nameValuePair>
-      <nameValuePair>
-        <name>profile</name>
-        <value>
-          <boolean>false</boolean>
-        </value>
-      </nameValuePair>
-      <nameValuePair>
-        <name>debugWithMatches</name>
-        <value>
-          <boolean>true</boolean>
-        </value>
-      </nameValuePair>
-      <nameValuePair>
-        <name>defaultFilteredTypes</name>
-        <value>
-          <array>
-            <string>org.apache.uima.ruta.type.SPACE</string>
-            <string>org.apache.uima.ruta.type.BREAK</string>
-            <string>org.apache.uima.ruta.type.MARKUP</string>
-          </array>
-        </value>
-      </nameValuePair>
-      <nameValuePair>
-        <name>removeBasics</name>
-        <value>
-          <boolean>false</boolean>
-        </value>
-      </nameValuePair>
-      <nameValuePair>
-        <name>seeders</name>
-        <value>
-          <array>
-            <string>org.apache.uima.ruta.seed.DefaultSeeder</string>
-          </array>
-        </value>
-      </nameValuePair>
-      <nameValuePair>
-        <name>createdBy</name>
-        <value>
-          <boolean>false</boolean>
-        </value>
-      </nameValuePair>
-    </configurationParameterSettings>
-    <typeSystemDescription>
-      <imports>
-        <import location="BasicTypeSystem.xml"/>
-      </imports>
-    </typeSystemDescription>
-    <typePriorities>
-      <priorityList>
-        <type>org.apache.uima.ruta.type.RutaFrame</type>
-        <type>uima.tcas.Annotation</type>
-        <type>org.apache.uima.ruta.type.RutaBasic</type>
-      </priorityList>
-    </typePriorities>
-    <fsIndexCollection/>
-    <capabilities>
-      <capability>
-        <inputs/>
-        <outputs/>
-        <languagesSupported/>
-      </capability>
-    </capabilities>
-    <operationalProperties>
-      <modifiesCas>true</modifiesCas>
-      <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-      <outputsNewCASes>true</outputsNewCASes>
-    </operationalProperties>
-  </analysisEngineMetaData>
-  <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/ExtensionsExample/descriptor/BasicTypeSystem.xml b/example-projects/ExtensionsExample/descriptor/BasicTypeSystem.xml
deleted file mode 100644
index 6db10ba..0000000
--- a/example-projects/ExtensionsExample/descriptor/BasicTypeSystem.xml
+++ /dev/null
@@ -1,146 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier">
-  <name>BasicTypeSystem</name>
-  <description/>
-  <version>1.0</version>
-  <vendor/>
-  <imports>
-    <import location="InternalTypeSystem.xml"/>
-  </imports>
-  <types>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.ALL</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.TokenSeed</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.ANY</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.ALL</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.MARKUP</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.ALL</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.CW</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.W</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.W</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.ANY</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.SW</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.W</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.PM</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.ANY</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.CAP</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.W</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.COLON</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.PM</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.PERIOD</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.SENTENCEEND</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.SENTENCEEND</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.PM</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.QUESTION</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.SENTENCEEND</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.COMMA</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.PM</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.EXCLAMATION</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.SENTENCEEND</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.SEMICOLON</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.PM</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.WS</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.ANY</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.NUM</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.ANY</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.SPECIAL</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.ANY</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.NBSP</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.SPACE</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.AMP</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.ANY</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.SPACE</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.WS</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.BREAK</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.WS</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.TokenSeed</name>
-      <description/>
-      <supertypeName>uima.tcas.Annotation</supertypeName>
-    </typeDescription>
-  </types>
-</typeSystemDescription>
diff --git a/example-projects/ExtensionsExample/descriptor/InternalTypeSystem.xml b/example-projects/ExtensionsExample/descriptor/InternalTypeSystem.xml
deleted file mode 100644
index e0e207c..0000000
--- a/example-projects/ExtensionsExample/descriptor/InternalTypeSystem.xml
+++ /dev/null
@@ -1,350 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-
-<typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier">
-  <name>InternalTypeSystem</name>
-  <description/>
-  <version>1.0</version>
-  <vendor/>
-  <types>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.RutaBasic</name>
-      <description/>
-      <supertypeName>uima.tcas.Annotation</supertypeName>
-      <features>
-        <featureDescription>
-          <name>replacement</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-      </features>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.RutaOptional</name>
-      <description/>
-      <supertypeName>uima.tcas.Annotation</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.RutaAnnotation</name>
-      <description/>
-      <supertypeName>uima.tcas.Annotation</supertypeName>
-      <features>
-        <featureDescription>
-          <name>score</name>
-          <description/>
-          <rangeTypeName>uima.cas.Double</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>annotation</name>
-          <description/>
-          <rangeTypeName>uima.tcas.Annotation</rangeTypeName>
-        </featureDescription>
-      </features>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.DebugRuleApply</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.DebugScriptApply</supertypeName>
-      <features>
-        <featureDescription>
-          <name>applied</name>
-          <description/>
-          <rangeTypeName>uima.cas.Integer</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>tried</name>
-          <description/>
-          <rangeTypeName>uima.cas.Integer</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>rules</name>
-          <description/>
-          <rangeTypeName>uima.cas.FSArray</rangeTypeName>
-          <elementType>org.apache.uima.ruta.type.DebugRuleMatch</elementType>
-        </featureDescription>
-        <featureDescription>
-          <name>id</name>
-          <description/>
-          <rangeTypeName>uima.cas.Integer</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>script</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-      </features>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.DebugRuleMatch</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.ProfiledAnnotation</supertypeName>
-      <features>
-        <featureDescription>
-          <name>elements</name>
-          <description/>
-          <rangeTypeName>uima.cas.FSArray</rangeTypeName>
-          <elementType>org.apache.uima.ruta.type.DebugRuleElementMatches</elementType>
-        </featureDescription>
-        <featureDescription>
-          <name>matched</name>
-          <description/>
-          <rangeTypeName>uima.cas.Boolean</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>delegates</name>
-          <description/>
-          <rangeTypeName>uima.cas.FSArray</rangeTypeName>
-          <elementType>org.apache.uima.ruta.type.DebugScriptApply</elementType>
-        </featureDescription>
-      </features>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.DebugScriptApply</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.ProfiledAnnotation</supertypeName>
-      <features>
-        <featureDescription>
-          <name>element</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-      </features>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.DebugBlockApply</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.DebugRuleApply</supertypeName>
-      <features>
-        <featureDescription>
-          <name>innerApply</name>
-          <description/>
-          <rangeTypeName>uima.cas.FSArray</rangeTypeName>
-          <elementType>org.apache.uima.ruta.type.DebugScriptApply</elementType>
-        </featureDescription>
-      </features>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.DebugRuleElementMatch</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.ProfiledAnnotation</supertypeName>
-      <features>
-        <featureDescription>
-          <name>baseCondition</name>
-          <description/>
-          <rangeTypeName>org.apache.uima.ruta.type.DebugEvaluatedCondition</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>conditions</name>
-          <description/>
-          <rangeTypeName>uima.cas.FSArray</rangeTypeName>
-          <elementType>org.apache.uima.ruta.type.DebugEvaluatedCondition</elementType>
-        </featureDescription>
-        <featureDescription>
-          <name>elements</name>
-          <description/>
-          <rangeTypeName>uima.cas.FSArray</rangeTypeName>
-          <elementType>org.apache.uima.ruta.type.DebugRuleElementMatches</elementType>
-          <multipleReferencesAllowed>false</multipleReferencesAllowed>
-        </featureDescription>
-      </features>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.DebugRuleElementMatches</name>
-      <description/>
-      <supertypeName>uima.cas.TOP</supertypeName>
-      <features>
-        <featureDescription>
-          <name>matches</name>
-          <description/>
-          <rangeTypeName>uima.cas.FSArray</rangeTypeName>
-          <elementType>org.apache.uima.ruta.type.DebugRuleElementMatch</elementType>
-        </featureDescription>
-        <featureDescription>
-          <name>element</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>ruleAnchor</name>
-          <description/>
-          <rangeTypeName>uima.cas.Boolean</rangeTypeName>
-        </featureDescription>
-      </features>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.RutaColoring</name>
-      <description/>
-      <supertypeName>uima.tcas.Annotation</supertypeName>
-      <features>
-        <featureDescription>
-          <name>bgColor</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>targetType</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>fgColor</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>selected</name>
-          <description/>
-          <rangeTypeName>uima.cas.Boolean</rangeTypeName>
-        </featureDescription>
-      </features>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.DebugEvaluatedCondition</name>
-      <description/>
-      <supertypeName>uima.cas.TOP</supertypeName>
-      <features>
-        <featureDescription>
-          <name>element</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>value</name>
-          <description/>
-          <rangeTypeName>uima.cas.Boolean</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>conditions</name>
-          <description/>
-          <rangeTypeName>uima.cas.FSArray</rangeTypeName>
-          <elementType>org.apache.uima.ruta.type.DebugEvaluatedCondition</elementType>
-        </featureDescription>
-      </features>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.DebugMatchedRuleMatch</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.DebugRuleMatch</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.DebugFailedRuleMatch</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.DebugRuleMatch</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.FalsePositive</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.EvalAnnotation</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.EvalAnnotation</name>
-      <description/>
-      <supertypeName>uima.tcas.Annotation</supertypeName>
-      <features>
-        <featureDescription>
-          <name>original</name>
-          <description/>
-          <rangeTypeName>uima.tcas.Annotation</rangeTypeName>
-        </featureDescription>
-      </features>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.FalseNegative</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.EvalAnnotation</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.ProfiledAnnotation</name>
-      <description/>
-      <supertypeName>uima.tcas.Annotation</supertypeName>
-      <features>
-        <featureDescription>
-          <name>time</name>
-          <description/>
-          <rangeTypeName>uima.cas.Long</rangeTypeName>
-        </featureDescription>
-      </features>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.RutaFrame</name>
-      <description/>
-      <supertypeName>uima.tcas.Annotation</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.Statistics</name>
-      <description/>
-      <supertypeName>uima.cas.TOP</supertypeName>
-      <features>
-        <featureDescription>
-          <name>name</name>
-          <description/>
-          <rangeTypeName>uima.cas.StringArray</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>total</name>
-          <description/>
-          <rangeTypeName>uima.cas.DoubleArray</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>amount</name>
-          <description/>
-          <rangeTypeName>uima.cas.IntegerArray</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>part</name>
-          <description/>
-          <rangeTypeName>uima.cas.DoubleArray</rangeTypeName>
-        </featureDescription>
-      </features>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.TruePositive</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.EvalAnnotation</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.DebugCreatedBy</name>
-      <description/>
-      <supertypeName>uima.cas.TOP</supertypeName>
-      <features>
-        <featureDescription>
-          <name>rule</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>annotation</name>
-          <description/>
-          <rangeTypeName>uima.tcas.Annotation</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>script</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>id</name>
-          <description/>
-          <rangeTypeName>uima.cas.Integer</rangeTypeName>
-        </featureDescription>
-      </features>
-    </typeDescription>
-  </types>
-</typeSystemDescription>
diff --git a/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleActionEngine.xml b/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleActionEngine.xml
deleted file mode 100644
index 6fd594e..0000000
--- a/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleActionEngine.xml
+++ /dev/null
@@ -1,335 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-    <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-    <primitive>true</primitive>
-    <annotatorImplementationName>org.apache.uima.ruta.engine.RutaEngine</annotatorImplementationName>
-    <analysisEngineMetaData>
-        <name>BasicEngine</name>
-        <description/>
-        <version>1.0</version>
-        <vendor/>
-        <configurationParameters searchStrategy="language_fallback">
-            <configurationParameter>
-                <name>seeders</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debug</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalScripts</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>profile</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debugWithMatches</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>statistics</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalEngines</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalExtensions</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debugOnlyFor</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>scriptEncoding</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalEngineLoaders</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>resourcePaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>defaultFilteredTypes</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>mainScript</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>scriptPaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>descriptorPaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>removeBasics</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>dynamicAnchoring</name>
-                <description>Activates dynamic anchoring (possible speed up).</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>greedyRuleElement</name>
-                <description>Activates greedy anchoring for rule elements.</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>greedyRule</name>
-                <description>Activates greedy anchoring for complete rules.</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>lowMemoryProfile</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>createdBy</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>simpleGreedyForComposed</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalUimafitEngines</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>strictImports</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>varNames</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>varValues</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>rules</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-        </configurationParameters>
-        <configurationParameterSettings>
-            <nameValuePair>
-                <name>debug</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>profile</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>debugWithMatches</name>
-                <value>
-                    <boolean>true</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>defaultFilteredTypes</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.type.SPACE</string>
-                        <string>org.apache.uima.ruta.type.BREAK</string>
-                        <string>org.apache.uima.ruta.type.MARKUP</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>removeBasics</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>seeders</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.seed.DefaultSeeder</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>createdBy</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>mainScript</name>
-                <value>
-                    <string>ExampleAction</string>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>scriptPaths</name>
-                <value>
-                    <array>
-                        <string>D:/work/ws-tutorial/ExtensionsExample/script</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>descriptorPaths</name>
-                <value>
-                    <array>
-                        <string>D:/work/ws-tutorial/ExtensionsExample/descriptor</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>resourcePaths</name>
-                <value>
-                    <array>
-                        <string>D:\work\ws-tutorial\ExtensionsExample\resources</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalScripts</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalEngines</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalUimafitEngines</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalExtensions</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleConditionExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleActionExtension</string>
-                        <string>org.apache.uima.ruta.string.bool.BooleanOperationsExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleBooleanFunctionExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleNumberFunctionExtension</string>
-                        <string>org.apache.uima.ruta.string.StringOperationsExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleStringFunctionExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleTypeFunctionExtension</string>
-                        <string>org.apache.uima.ruta.block.OnlyFirstBlockExtension</string>
-                        <string>org.apache.uima.ruta.block.OnlyOnceBlockExtension</string>
-                        <string>org.apache.uima.ruta.block.fst.FSTBlockExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleBlockExtension</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalEngineLoaders</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-        </configurationParameterSettings>
-        <typeSystemDescription>
-            <imports>
-                <import location="ExampleActionTypeSystem.xml"/>
-            </imports>
-        </typeSystemDescription>
-        <typePriorities>
-            <priorityList>
-                <type>org.apache.uima.ruta.type.RutaFrame</type>
-                <type>uima.tcas.Annotation</type>
-                <type>org.apache.uima.ruta.type.RutaBasic</type>
-            </priorityList>
-        </typePriorities>
-        <fsIndexCollection/>
-        <capabilities>
-            <capability>
-                <inputs/>
-                <outputs/>
-                <languagesSupported/>
-            </capability>
-        </capabilities>
-        <operationalProperties>
-            <modifiesCas>true</modifiesCas>
-            <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-            <outputsNewCASes>true</outputsNewCASes>
-        </operationalProperties>
-    </analysisEngineMetaData>
-    <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleActionTypeSystem.xml b/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleActionTypeSystem.xml
deleted file mode 100644
index 9c06143..0000000
--- a/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleActionTypeSystem.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier">
-    <name>ExampleActionTypeSystem</name>
-    <imports>
-        <import location="..\..\..\BasicTypeSystem.xml"/>
-    </imports>
-</typeSystemDescription>
diff --git a/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleBlockEngine.xml b/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleBlockEngine.xml
deleted file mode 100644
index 9f71d25..0000000
--- a/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleBlockEngine.xml
+++ /dev/null
@@ -1,350 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-    <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-    <primitive>true</primitive>
-    <annotatorImplementationName>org.apache.uima.ruta.engine.RutaEngine</annotatorImplementationName>
-    <analysisEngineMetaData>
-        <name>BasicEngine</name>
-        <description/>
-        <version>1.0</version>
-        <vendor/>
-        <configurationParameters searchStrategy="language_fallback">
-            <configurationParameter>
-                <name>seeders</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debug</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalScripts</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>profile</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debugWithMatches</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>statistics</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalEngines</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalExtensions</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debugOnlyFor</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>scriptEncoding</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalEngineLoaders</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>resourcePaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>defaultFilteredTypes</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>mainScript</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>scriptPaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>descriptorPaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>removeBasics</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>dynamicAnchoring</name>
-                <description>Activates dynamic anchoring (possible speed up).</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>greedyRuleElement</name>
-                <description>Activates greedy anchoring for rule elements.</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>greedyRule</name>
-                <description>Activates greedy anchoring for complete rules.</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>lowMemoryProfile</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>createdBy</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>simpleGreedyForComposed</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalUimafitEngines</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>strictImports</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>varNames</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>varValues</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>rules</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-        </configurationParameters>
-        <configurationParameterSettings>
-            <nameValuePair>
-                <name>debug</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>profile</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>debugWithMatches</name>
-                <value>
-                    <boolean>true</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>defaultFilteredTypes</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.type.SPACE</string>
-                        <string>org.apache.uima.ruta.type.BREAK</string>
-                        <string>org.apache.uima.ruta.type.MARKUP</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>removeBasics</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>seeders</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.seed.DefaultSeeder</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>createdBy</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>mainScript</name>
-                <value>
-                    <string>ExampleBlock</string>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>scriptPaths</name>
-                <value>
-                    <array>
-                        <string>D:/work/ws-tutorial/ExtensionsExample/script</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>descriptorPaths</name>
-                <value>
-                    <array>
-                        <string>D:/work/ws-tutorial/ExtensionsExample/descriptor</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>resourcePaths</name>
-                <value>
-                    <array>
-                        <string>D:\work\ws-tutorial\ExtensionsExample\resources</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalScripts</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalEngines</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalUimafitEngines</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalExtensions</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleConditionExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleActionExtension</string>
-                        <string>org.apache.uima.ruta.string.bool.BooleanOperationsExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleBooleanFunctionExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleNumberFunctionExtension</string>
-                        <string>org.apache.uima.ruta.string.StringOperationsExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleStringFunctionExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleTypeFunctionExtension</string>
-                        <string>org.apache.uima.ruta.block.OnlyFirstBlockExtension</string>
-                        <string>org.apache.uima.ruta.block.OnlyOnceBlockExtension</string>
-                        <string>org.apache.uima.ruta.block.fst.FSTBlockExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleBlockExtension</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalEngineLoaders</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-        </configurationParameterSettings>
-        <typeSystemDescription>
-            <imports>
-                <import location="ExampleBlockTypeSystem.xml"/>
-            </imports>
-        </typeSystemDescription>
-        <typePriorities>
-            <priorityList>
-                <type>org.apache.uima.ruta.type.RutaFrame</type>
-                <type>uima.tcas.Annotation</type>
-                <type>org.apache.uima.ruta.type.RutaBasic</type>
-            </priorityList>
-        </typePriorities>
-        <fsIndexCollection/>
-        <capabilities>
-            <capability>
-                <inputs/>
-                <outputs/>
-                <languagesSupported/>
-            </capability>
-            <capability>
-                <inputs>
-                    <type>uima.ruta.example.ExampleBlock.T1</type>
-                    <type>uima.ruta.example.ExampleBlock.T2</type>
-                    <type>uima.ruta.example.ExampleBlock.T3</type>
-                    <type>uima.ruta.example.ExampleBlock.T4</type>
-                </inputs>
-                <outputs>
-                    <type>uima.ruta.example.ExampleBlock.T1</type>
-                    <type>uima.ruta.example.ExampleBlock.T2</type>
-                    <type>uima.ruta.example.ExampleBlock.T3</type>
-                    <type>uima.ruta.example.ExampleBlock.T4</type>
-                </outputs>
-                <languagesSupported/>
-            </capability>
-        </capabilities>
-        <operationalProperties>
-            <modifiesCas>true</modifiesCas>
-            <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-            <outputsNewCASes>true</outputsNewCASes>
-        </operationalProperties>
-    </analysisEngineMetaData>
-    <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleBlockTypeSystem.xml b/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleBlockTypeSystem.xml
deleted file mode 100644
index 3cff4b7..0000000
--- a/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleBlockTypeSystem.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier">
-    <name>ExampleBlockTypeSystem</name>
-    <imports>
-        <import location="..\..\..\BasicTypeSystem.xml"/>
-    </imports>
-    <types>
-        <typeDescription>
-            <name>uima.ruta.example.ExampleBlock.T1</name>
-            <description>Type defined in uima.ruta.example.ExampleBlock</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-        <typeDescription>
-            <name>uima.ruta.example.ExampleBlock.T2</name>
-            <description>Type defined in uima.ruta.example.ExampleBlock</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-        <typeDescription>
-            <name>uima.ruta.example.ExampleBlock.T3</name>
-            <description>Type defined in uima.ruta.example.ExampleBlock</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-        <typeDescription>
-            <name>uima.ruta.example.ExampleBlock.T4</name>
-            <description>Type defined in uima.ruta.example.ExampleBlock</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-    </types>
-</typeSystemDescription>
diff --git a/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleBooleanFunctionEngine.xml b/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleBooleanFunctionEngine.xml
deleted file mode 100644
index 5db5bae..0000000
--- a/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleBooleanFunctionEngine.xml
+++ /dev/null
@@ -1,348 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-    <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-    <primitive>true</primitive>
-    <annotatorImplementationName>org.apache.uima.ruta.engine.RutaEngine</annotatorImplementationName>
-    <analysisEngineMetaData>
-        <name>BasicEngine</name>
-        <description/>
-        <version>1.0</version>
-        <vendor/>
-        <configurationParameters searchStrategy="language_fallback">
-            <configurationParameter>
-                <name>seeders</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debug</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalScripts</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>profile</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debugWithMatches</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>statistics</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalEngines</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalExtensions</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debugOnlyFor</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>scriptEncoding</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalEngineLoaders</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>resourcePaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>defaultFilteredTypes</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>mainScript</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>scriptPaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>descriptorPaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>removeBasics</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>dynamicAnchoring</name>
-                <description>Activates dynamic anchoring (possible speed up).</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>greedyRuleElement</name>
-                <description>Activates greedy anchoring for rule elements.</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>greedyRule</name>
-                <description>Activates greedy anchoring for complete rules.</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>lowMemoryProfile</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>createdBy</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>simpleGreedyForComposed</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalUimafitEngines</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>strictImports</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>varNames</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>varValues</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>rules</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-        </configurationParameters>
-        <configurationParameterSettings>
-            <nameValuePair>
-                <name>debug</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>profile</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>debugWithMatches</name>
-                <value>
-                    <boolean>true</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>defaultFilteredTypes</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.type.SPACE</string>
-                        <string>org.apache.uima.ruta.type.BREAK</string>
-                        <string>org.apache.uima.ruta.type.MARKUP</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>removeBasics</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>seeders</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.seed.DefaultSeeder</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>createdBy</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>mainScript</name>
-                <value>
-                    <string>ExampleBooleanFunction</string>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>scriptPaths</name>
-                <value>
-                    <array>
-                        <string>D:/work/ws-tutorial/ExtensionsExample/script</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>descriptorPaths</name>
-                <value>
-                    <array>
-                        <string>D:/work/ws-tutorial/ExtensionsExample/descriptor</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>resourcePaths</name>
-                <value>
-                    <array>
-                        <string>D:\work\ws-tutorial\ExtensionsExample\resources</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalScripts</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalEngines</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalUimafitEngines</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalExtensions</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleConditionExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleActionExtension</string>
-                        <string>org.apache.uima.ruta.string.bool.BooleanOperationsExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleBooleanFunctionExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleNumberFunctionExtension</string>
-                        <string>org.apache.uima.ruta.string.StringOperationsExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleStringFunctionExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleTypeFunctionExtension</string>
-                        <string>org.apache.uima.ruta.block.OnlyFirstBlockExtension</string>
-                        <string>org.apache.uima.ruta.block.OnlyOnceBlockExtension</string>
-                        <string>org.apache.uima.ruta.block.fst.FSTBlockExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleBlockExtension</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalEngineLoaders</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-        </configurationParameterSettings>
-        <typeSystemDescription>
-            <imports>
-                <import location="ExampleBooleanFunctionTypeSystem.xml"/>
-            </imports>
-        </typeSystemDescription>
-        <typePriorities>
-            <priorityList>
-                <type>org.apache.uima.ruta.type.RutaFrame</type>
-                <type>uima.tcas.Annotation</type>
-                <type>org.apache.uima.ruta.type.RutaBasic</type>
-            </priorityList>
-        </typePriorities>
-        <fsIndexCollection/>
-        <capabilities>
-            <capability>
-                <inputs/>
-                <outputs/>
-                <languagesSupported/>
-            </capability>
-            <capability>
-                <inputs>
-                    <type>uima.ruta.example.ExampleBooleanFunction.T1</type>
-                    <type>uima.ruta.example.ExampleBooleanFunction.T2</type>
-                    <type>uima.ruta.example.ExampleBooleanFunction.T3</type>
-                </inputs>
-                <outputs>
-                    <type>uima.ruta.example.ExampleBooleanFunction.T1</type>
-                    <type>uima.ruta.example.ExampleBooleanFunction.T2</type>
-                    <type>uima.ruta.example.ExampleBooleanFunction.T3</type>
-                </outputs>
-                <languagesSupported/>
-            </capability>
-        </capabilities>
-        <operationalProperties>
-            <modifiesCas>true</modifiesCas>
-            <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-            <outputsNewCASes>true</outputsNewCASes>
-        </operationalProperties>
-    </analysisEngineMetaData>
-    <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleBooleanFunctionTypeSystem.xml b/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleBooleanFunctionTypeSystem.xml
deleted file mode 100644
index 086bd9d..0000000
--- a/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleBooleanFunctionTypeSystem.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier">
-    <name>ExampleBooleanFunctionTypeSystem</name>
-    <imports>
-        <import location="..\..\..\BasicTypeSystem.xml"/>
-    </imports>
-    <types>
-        <typeDescription>
-            <name>uima.ruta.example.ExampleBooleanFunction.T3</name>
-            <description>Type defined in uima.ruta.example.ExampleBooleanFunction</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-        <typeDescription>
-            <name>uima.ruta.example.ExampleBooleanFunction.T2</name>
-            <description>Type defined in uima.ruta.example.ExampleBooleanFunction</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-        <typeDescription>
-            <name>uima.ruta.example.ExampleBooleanFunction.T1</name>
-            <description>Type defined in uima.ruta.example.ExampleBooleanFunction</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-    </types>
-</typeSystemDescription>
diff --git a/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleConditionEngine.xml b/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleConditionEngine.xml
deleted file mode 100644
index b14cb75..0000000
--- a/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleConditionEngine.xml
+++ /dev/null
@@ -1,344 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-    <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-    <primitive>true</primitive>
-    <annotatorImplementationName>org.apache.uima.ruta.engine.RutaEngine</annotatorImplementationName>
-    <analysisEngineMetaData>
-        <name>BasicEngine</name>
-        <description/>
-        <version>1.0</version>
-        <vendor/>
-        <configurationParameters searchStrategy="language_fallback">
-            <configurationParameter>
-                <name>seeders</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debug</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalScripts</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>profile</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debugWithMatches</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>statistics</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalEngines</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalExtensions</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debugOnlyFor</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>scriptEncoding</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalEngineLoaders</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>resourcePaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>defaultFilteredTypes</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>mainScript</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>scriptPaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>descriptorPaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>removeBasics</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>dynamicAnchoring</name>
-                <description>Activates dynamic anchoring (possible speed up).</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>greedyRuleElement</name>
-                <description>Activates greedy anchoring for rule elements.</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>greedyRule</name>
-                <description>Activates greedy anchoring for complete rules.</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>lowMemoryProfile</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>createdBy</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>simpleGreedyForComposed</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalUimafitEngines</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>strictImports</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>varNames</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>varValues</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>rules</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-        </configurationParameters>
-        <configurationParameterSettings>
-            <nameValuePair>
-                <name>debug</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>profile</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>debugWithMatches</name>
-                <value>
-                    <boolean>true</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>defaultFilteredTypes</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.type.SPACE</string>
-                        <string>org.apache.uima.ruta.type.BREAK</string>
-                        <string>org.apache.uima.ruta.type.MARKUP</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>removeBasics</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>seeders</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.seed.DefaultSeeder</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>createdBy</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>mainScript</name>
-                <value>
-                    <string>ExampleCondition</string>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>scriptPaths</name>
-                <value>
-                    <array>
-                        <string>D:/work/ws-tutorial/ExtensionsExample/script</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>descriptorPaths</name>
-                <value>
-                    <array>
-                        <string>D:/work/ws-tutorial/ExtensionsExample/descriptor</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>resourcePaths</name>
-                <value>
-                    <array>
-                        <string>D:\work\ws-tutorial\ExtensionsExample\resources</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalScripts</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalEngines</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalUimafitEngines</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalExtensions</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleConditionExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleActionExtension</string>
-                        <string>org.apache.uima.ruta.string.bool.BooleanOperationsExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleBooleanFunctionExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleNumberFunctionExtension</string>
-                        <string>org.apache.uima.ruta.string.StringOperationsExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleStringFunctionExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleTypeFunctionExtension</string>
-                        <string>org.apache.uima.ruta.block.OnlyFirstBlockExtension</string>
-                        <string>org.apache.uima.ruta.block.OnlyOnceBlockExtension</string>
-                        <string>org.apache.uima.ruta.block.fst.FSTBlockExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleBlockExtension</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalEngineLoaders</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-        </configurationParameterSettings>
-        <typeSystemDescription>
-            <imports>
-                <import location="ExampleConditionTypeSystem.xml"/>
-            </imports>
-        </typeSystemDescription>
-        <typePriorities>
-            <priorityList>
-                <type>org.apache.uima.ruta.type.RutaFrame</type>
-                <type>uima.tcas.Annotation</type>
-                <type>org.apache.uima.ruta.type.RutaBasic</type>
-            </priorityList>
-        </typePriorities>
-        <fsIndexCollection/>
-        <capabilities>
-            <capability>
-                <inputs/>
-                <outputs/>
-                <languagesSupported/>
-            </capability>
-            <capability>
-                <inputs>
-                    <type>uima.ruta.example.ExampleCondition.T1</type>
-                </inputs>
-                <outputs>
-                    <type>uima.ruta.example.ExampleCondition.T1</type>
-                </outputs>
-                <languagesSupported/>
-            </capability>
-        </capabilities>
-        <operationalProperties>
-            <modifiesCas>true</modifiesCas>
-            <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-            <outputsNewCASes>true</outputsNewCASes>
-        </operationalProperties>
-    </analysisEngineMetaData>
-    <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleConditionTypeSystem.xml b/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleConditionTypeSystem.xml
deleted file mode 100644
index c486c1b..0000000
--- a/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleConditionTypeSystem.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier">
-    <name>ExampleConditionTypeSystem</name>
-    <imports>
-        <import location="..\..\..\BasicTypeSystem.xml"/>
-    </imports>
-    <types>
-        <typeDescription>
-            <name>uima.ruta.example.ExampleCondition.T1</name>
-            <description>Type defined in uima.ruta.example.ExampleCondition</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-    </types>
-</typeSystemDescription>
diff --git a/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleNumberFunctionEngine.xml b/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleNumberFunctionEngine.xml
deleted file mode 100644
index ca34f6a..0000000
--- a/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleNumberFunctionEngine.xml
+++ /dev/null
@@ -1,348 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-    <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-    <primitive>true</primitive>
-    <annotatorImplementationName>org.apache.uima.ruta.engine.RutaEngine</annotatorImplementationName>
-    <analysisEngineMetaData>
-        <name>BasicEngine</name>
-        <description/>
-        <version>1.0</version>
-        <vendor/>
-        <configurationParameters searchStrategy="language_fallback">
-            <configurationParameter>
-                <name>seeders</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debug</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalScripts</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>profile</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debugWithMatches</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>statistics</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalEngines</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalExtensions</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debugOnlyFor</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>scriptEncoding</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalEngineLoaders</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>resourcePaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>defaultFilteredTypes</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>mainScript</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>scriptPaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>descriptorPaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>removeBasics</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>dynamicAnchoring</name>
-                <description>Activates dynamic anchoring (possible speed up).</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>greedyRuleElement</name>
-                <description>Activates greedy anchoring for rule elements.</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>greedyRule</name>
-                <description>Activates greedy anchoring for complete rules.</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>lowMemoryProfile</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>createdBy</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>simpleGreedyForComposed</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalUimafitEngines</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>strictImports</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>varNames</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>varValues</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>rules</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-        </configurationParameters>
-        <configurationParameterSettings>
-            <nameValuePair>
-                <name>debug</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>profile</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>debugWithMatches</name>
-                <value>
-                    <boolean>true</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>defaultFilteredTypes</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.type.SPACE</string>
-                        <string>org.apache.uima.ruta.type.BREAK</string>
-                        <string>org.apache.uima.ruta.type.MARKUP</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>removeBasics</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>seeders</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.seed.DefaultSeeder</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>createdBy</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>mainScript</name>
-                <value>
-                    <string>ExampleNumberFunction</string>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>scriptPaths</name>
-                <value>
-                    <array>
-                        <string>D:/work/ws-tutorial/ExtensionsExample/script</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>descriptorPaths</name>
-                <value>
-                    <array>
-                        <string>D:/work/ws-tutorial/ExtensionsExample/descriptor</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>resourcePaths</name>
-                <value>
-                    <array>
-                        <string>D:\work\ws-tutorial\ExtensionsExample\resources</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalScripts</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalEngines</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalUimafitEngines</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalExtensions</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleConditionExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleActionExtension</string>
-                        <string>org.apache.uima.ruta.string.bool.BooleanOperationsExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleBooleanFunctionExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleNumberFunctionExtension</string>
-                        <string>org.apache.uima.ruta.string.StringOperationsExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleStringFunctionExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleTypeFunctionExtension</string>
-                        <string>org.apache.uima.ruta.block.OnlyFirstBlockExtension</string>
-                        <string>org.apache.uima.ruta.block.OnlyOnceBlockExtension</string>
-                        <string>org.apache.uima.ruta.block.fst.FSTBlockExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleBlockExtension</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalEngineLoaders</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-        </configurationParameterSettings>
-        <typeSystemDescription>
-            <imports>
-                <import location="ExampleNumberFunctionTypeSystem.xml"/>
-            </imports>
-        </typeSystemDescription>
-        <typePriorities>
-            <priorityList>
-                <type>org.apache.uima.ruta.type.RutaFrame</type>
-                <type>uima.tcas.Annotation</type>
-                <type>org.apache.uima.ruta.type.RutaBasic</type>
-            </priorityList>
-        </typePriorities>
-        <fsIndexCollection/>
-        <capabilities>
-            <capability>
-                <inputs/>
-                <outputs/>
-                <languagesSupported/>
-            </capability>
-            <capability>
-                <inputs>
-                    <type>uima.ruta.example.ExampleNumberFunction.T1</type>
-                    <type>uima.ruta.example.ExampleNumberFunction.T2</type>
-                    <type>uima.ruta.example.ExampleNumberFunction.T3</type>
-                </inputs>
-                <outputs>
-                    <type>uima.ruta.example.ExampleNumberFunction.T1</type>
-                    <type>uima.ruta.example.ExampleNumberFunction.T2</type>
-                    <type>uima.ruta.example.ExampleNumberFunction.T3</type>
-                </outputs>
-                <languagesSupported/>
-            </capability>
-        </capabilities>
-        <operationalProperties>
-            <modifiesCas>true</modifiesCas>
-            <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-            <outputsNewCASes>true</outputsNewCASes>
-        </operationalProperties>
-    </analysisEngineMetaData>
-    <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleNumberFunctionTypeSystem.xml b/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleNumberFunctionTypeSystem.xml
deleted file mode 100644
index 5ba29d9..0000000
--- a/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleNumberFunctionTypeSystem.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier">
-    <name>ExampleNumberFunctionTypeSystem</name>
-    <imports>
-        <import location="..\..\..\BasicTypeSystem.xml"/>
-    </imports>
-    <types>
-        <typeDescription>
-            <name>uima.ruta.example.ExampleNumberFunction.T2</name>
-            <description>Type defined in uima.ruta.example.ExampleNumberFunction</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-        <typeDescription>
-            <name>uima.ruta.example.ExampleNumberFunction.T3</name>
-            <description>Type defined in uima.ruta.example.ExampleNumberFunction</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-        <typeDescription>
-            <name>uima.ruta.example.ExampleNumberFunction.T1</name>
-            <description>Type defined in uima.ruta.example.ExampleNumberFunction</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-    </types>
-</typeSystemDescription>
diff --git a/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleStringFunctionEngine.xml b/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleStringFunctionEngine.xml
deleted file mode 100644
index 1cecb6c..0000000
--- a/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleStringFunctionEngine.xml
+++ /dev/null
@@ -1,348 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-    <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-    <primitive>true</primitive>
-    <annotatorImplementationName>org.apache.uima.ruta.engine.RutaEngine</annotatorImplementationName>
-    <analysisEngineMetaData>
-        <name>BasicEngine</name>
-        <description/>
-        <version>1.0</version>
-        <vendor/>
-        <configurationParameters searchStrategy="language_fallback">
-            <configurationParameter>
-                <name>seeders</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debug</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalScripts</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>profile</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debugWithMatches</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>statistics</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalEngines</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalExtensions</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debugOnlyFor</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>scriptEncoding</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalEngineLoaders</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>resourcePaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>defaultFilteredTypes</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>mainScript</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>scriptPaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>descriptorPaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>removeBasics</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>dynamicAnchoring</name>
-                <description>Activates dynamic anchoring (possible speed up).</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>greedyRuleElement</name>
-                <description>Activates greedy anchoring for rule elements.</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>greedyRule</name>
-                <description>Activates greedy anchoring for complete rules.</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>lowMemoryProfile</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>createdBy</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>simpleGreedyForComposed</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalUimafitEngines</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>strictImports</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>varNames</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>varValues</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>rules</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-        </configurationParameters>
-        <configurationParameterSettings>
-            <nameValuePair>
-                <name>debug</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>profile</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>debugWithMatches</name>
-                <value>
-                    <boolean>true</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>defaultFilteredTypes</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.type.SPACE</string>
-                        <string>org.apache.uima.ruta.type.BREAK</string>
-                        <string>org.apache.uima.ruta.type.MARKUP</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>removeBasics</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>seeders</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.seed.DefaultSeeder</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>createdBy</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>mainScript</name>
-                <value>
-                    <string>ExampleStringFunction</string>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>scriptPaths</name>
-                <value>
-                    <array>
-                        <string>D:/work/ws-tutorial/ExtensionsExample/script</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>descriptorPaths</name>
-                <value>
-                    <array>
-                        <string>D:/work/ws-tutorial/ExtensionsExample/descriptor</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>resourcePaths</name>
-                <value>
-                    <array>
-                        <string>D:\work\ws-tutorial\ExtensionsExample\resources</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalScripts</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalEngines</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalUimafitEngines</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalExtensions</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleConditionExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleActionExtension</string>
-                        <string>org.apache.uima.ruta.string.bool.BooleanOperationsExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleBooleanFunctionExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleNumberFunctionExtension</string>
-                        <string>org.apache.uima.ruta.string.StringOperationsExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleStringFunctionExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleTypeFunctionExtension</string>
-                        <string>org.apache.uima.ruta.block.OnlyFirstBlockExtension</string>
-                        <string>org.apache.uima.ruta.block.OnlyOnceBlockExtension</string>
-                        <string>org.apache.uima.ruta.block.fst.FSTBlockExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleBlockExtension</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalEngineLoaders</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-        </configurationParameterSettings>
-        <typeSystemDescription>
-            <imports>
-                <import location="ExampleStringFunctionTypeSystem.xml"/>
-            </imports>
-        </typeSystemDescription>
-        <typePriorities>
-            <priorityList>
-                <type>org.apache.uima.ruta.type.RutaFrame</type>
-                <type>uima.tcas.Annotation</type>
-                <type>org.apache.uima.ruta.type.RutaBasic</type>
-            </priorityList>
-        </typePriorities>
-        <fsIndexCollection/>
-        <capabilities>
-            <capability>
-                <inputs/>
-                <outputs/>
-                <languagesSupported/>
-            </capability>
-            <capability>
-                <inputs>
-                    <type>uima.ruta.example.ExampleStringFunction.T1</type>
-                    <type>uima.ruta.example.ExampleStringFunction.T2</type>
-                    <type>uima.ruta.example.ExampleStringFunction.T3</type>
-                </inputs>
-                <outputs>
-                    <type>uima.ruta.example.ExampleStringFunction.T1</type>
-                    <type>uima.ruta.example.ExampleStringFunction.T2</type>
-                    <type>uima.ruta.example.ExampleStringFunction.T3</type>
-                </outputs>
-                <languagesSupported/>
-            </capability>
-        </capabilities>
-        <operationalProperties>
-            <modifiesCas>true</modifiesCas>
-            <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-            <outputsNewCASes>true</outputsNewCASes>
-        </operationalProperties>
-    </analysisEngineMetaData>
-    <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleStringFunctionTypeSystem.xml b/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleStringFunctionTypeSystem.xml
deleted file mode 100644
index 19823ba..0000000
--- a/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleStringFunctionTypeSystem.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier">
-    <name>ExampleStringFunctionTypeSystem</name>
-    <imports>
-        <import location="..\..\..\BasicTypeSystem.xml"/>
-    </imports>
-    <types>
-        <typeDescription>
-            <name>uima.ruta.example.ExampleStringFunction.T1</name>
-            <description>Type defined in uima.ruta.example.ExampleStringFunction</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-        <typeDescription>
-            <name>uima.ruta.example.ExampleStringFunction.T2</name>
-            <description>Type defined in uima.ruta.example.ExampleStringFunction</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-        <typeDescription>
-            <name>uima.ruta.example.ExampleStringFunction.T3</name>
-            <description>Type defined in uima.ruta.example.ExampleStringFunction</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-    </types>
-</typeSystemDescription>
diff --git a/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleTypeFunctionEngine.xml b/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleTypeFunctionEngine.xml
deleted file mode 100644
index b4ac4a3..0000000
--- a/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleTypeFunctionEngine.xml
+++ /dev/null
@@ -1,348 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-    <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-    <primitive>true</primitive>
-    <annotatorImplementationName>org.apache.uima.ruta.engine.RutaEngine</annotatorImplementationName>
-    <analysisEngineMetaData>
-        <name>BasicEngine</name>
-        <description/>
-        <version>1.0</version>
-        <vendor/>
-        <configurationParameters searchStrategy="language_fallback">
-            <configurationParameter>
-                <name>seeders</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debug</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalScripts</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>profile</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debugWithMatches</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>statistics</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalEngines</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalExtensions</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debugOnlyFor</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>scriptEncoding</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalEngineLoaders</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>resourcePaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>defaultFilteredTypes</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>mainScript</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>scriptPaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>descriptorPaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>removeBasics</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>dynamicAnchoring</name>
-                <description>Activates dynamic anchoring (possible speed up).</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>greedyRuleElement</name>
-                <description>Activates greedy anchoring for rule elements.</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>greedyRule</name>
-                <description>Activates greedy anchoring for complete rules.</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>lowMemoryProfile</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>createdBy</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>simpleGreedyForComposed</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalUimafitEngines</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>strictImports</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>varNames</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>varValues</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>rules</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-        </configurationParameters>
-        <configurationParameterSettings>
-            <nameValuePair>
-                <name>debug</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>profile</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>debugWithMatches</name>
-                <value>
-                    <boolean>true</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>defaultFilteredTypes</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.type.SPACE</string>
-                        <string>org.apache.uima.ruta.type.BREAK</string>
-                        <string>org.apache.uima.ruta.type.MARKUP</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>removeBasics</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>seeders</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.seed.DefaultSeeder</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>createdBy</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>mainScript</name>
-                <value>
-                    <string>ExampleTypeFunction</string>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>scriptPaths</name>
-                <value>
-                    <array>
-                        <string>D:/work/ws-tutorial/ExtensionsExample/script</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>descriptorPaths</name>
-                <value>
-                    <array>
-                        <string>D:/work/ws-tutorial/ExtensionsExample/descriptor</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>resourcePaths</name>
-                <value>
-                    <array>
-                        <string>D:\work\ws-tutorial\ExtensionsExample\resources</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalScripts</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalEngines</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalUimafitEngines</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalExtensions</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleConditionExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleActionExtension</string>
-                        <string>org.apache.uima.ruta.string.bool.BooleanOperationsExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleBooleanFunctionExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleNumberFunctionExtension</string>
-                        <string>org.apache.uima.ruta.string.StringOperationsExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleStringFunctionExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleTypeFunctionExtension</string>
-                        <string>org.apache.uima.ruta.block.OnlyFirstBlockExtension</string>
-                        <string>org.apache.uima.ruta.block.OnlyOnceBlockExtension</string>
-                        <string>org.apache.uima.ruta.block.fst.FSTBlockExtension</string>
-                        <string>org.apache.uima.ruta.example.extensions.ExampleBlockExtension</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalEngineLoaders</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-        </configurationParameterSettings>
-        <typeSystemDescription>
-            <imports>
-                <import location="ExampleTypeFunctionTypeSystem.xml"/>
-            </imports>
-        </typeSystemDescription>
-        <typePriorities>
-            <priorityList>
-                <type>org.apache.uima.ruta.type.RutaFrame</type>
-                <type>uima.tcas.Annotation</type>
-                <type>org.apache.uima.ruta.type.RutaBasic</type>
-            </priorityList>
-        </typePriorities>
-        <fsIndexCollection/>
-        <capabilities>
-            <capability>
-                <inputs/>
-                <outputs/>
-                <languagesSupported/>
-            </capability>
-            <capability>
-                <inputs>
-                    <type>uima.ruta.example.ExampleTypeFunction.T1</type>
-                    <type>uima.ruta.example.ExampleTypeFunction.T2</type>
-                    <type>uima.ruta.example.ExampleTypeFunction.T3</type>
-                </inputs>
-                <outputs>
-                    <type>uima.ruta.example.ExampleTypeFunction.T1</type>
-                    <type>uima.ruta.example.ExampleTypeFunction.T2</type>
-                    <type>uima.ruta.example.ExampleTypeFunction.T3</type>
-                </outputs>
-                <languagesSupported/>
-            </capability>
-        </capabilities>
-        <operationalProperties>
-            <modifiesCas>true</modifiesCas>
-            <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-            <outputsNewCASes>true</outputsNewCASes>
-        </operationalProperties>
-    </analysisEngineMetaData>
-    <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleTypeFunctionTypeSystem.xml b/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleTypeFunctionTypeSystem.xml
deleted file mode 100644
index 89bab03..0000000
--- a/example-projects/ExtensionsExample/descriptor/uima/ruta/example/ExampleTypeFunctionTypeSystem.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier">
-    <name>ExampleTypeFunctionTypeSystem</name>
-    <imports>
-        <import location="..\..\..\BasicTypeSystem.xml"/>
-    </imports>
-    <types>
-        <typeDescription>
-            <name>uima.ruta.example.ExampleTypeFunction.T1</name>
-            <description>Type defined in uima.ruta.example.ExampleTypeFunction</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-        <typeDescription>
-            <name>uima.ruta.example.ExampleTypeFunction.T2</name>
-            <description>Type defined in uima.ruta.example.ExampleTypeFunction</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-        <typeDescription>
-            <name>uima.ruta.example.ExampleTypeFunction.T3</name>
-            <description>Type defined in uima.ruta.example.ExampleTypeFunction</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-    </types>
-</typeSystemDescription>
diff --git a/example-projects/ExtensionsExample/descriptor/utils/AnnotationWriter.xml b/example-projects/ExtensionsExample/descriptor/utils/AnnotationWriter.xml
deleted file mode 100644
index 64ada39..0000000
--- a/example-projects/ExtensionsExample/descriptor/utils/AnnotationWriter.xml
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-  <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-  <primitive>true</primitive>
-  <annotatorImplementationName>org.apache.uima.ruta.engine.AnnotationWriter</annotatorImplementationName>
-  <analysisEngineMetaData>
-    <name>ReferenceSectionWriterDescriptor</name>
-    <description/>
-    <version>1.0</version>
-    <vendor/>
-    <configurationParameters>
-      <configurationParameter>
-        <name>Output</name>
-        <description>Location where the annotation is stored</description>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>true</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>Encoding</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>Type</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>true</mandatory>
-      </configurationParameter>
-    </configurationParameters>
-    <configurationParameterSettings>
-      <nameValuePair>
-        <name>Output</name>
-        <value>
-          <string>/../output/</string>
-        </value>
-      </nameValuePair>
-      <nameValuePair>
-        <name>Type</name>
-        <value>
-          <string>uima.tcas.DocumentAnnotation</string>
-        </value>
-      </nameValuePair>
-      <nameValuePair>
-        <name>Encoding</name>
-        <value>
-          <string>UTF-8</string>
-        </value>
-      </nameValuePair>
-    </configurationParameterSettings>
-    <typeSystemDescription/>
-    <typePriorities/>
-    <fsIndexCollection/>
-    <capabilities>
-      <capability>
-        <inputs/>
-        <outputs/>
-        <languagesSupported/>
-      </capability>
-    </capabilities>
-    <operationalProperties>
-      <modifiesCas>true</modifiesCas>
-      <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-      <outputsNewCASes>false</outputsNewCASes>
-    </operationalProperties>
-  </analysisEngineMetaData>
-  <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/ExtensionsExample/descriptor/utils/Cutter.xml b/example-projects/ExtensionsExample/descriptor/utils/Cutter.xml
deleted file mode 100644
index a0543b7..0000000
--- a/example-projects/ExtensionsExample/descriptor/utils/Cutter.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-  <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-  <primitive>true</primitive>
-  <annotatorImplementationName>org.apache.uima.ruta.engine.RutaCutter</annotatorImplementationName>
-  <analysisEngineMetaData>
-    <name>XMLConverter</name>
-    <description/>
-    <version>1.0</version>
-    <vendor/>
-    <configurationParameters>
-      <configurationParameter>
-        <name>outputView</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>inputView</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>keep</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-    </configurationParameters>
-    <configurationParameterSettings/>
-    <typeSystemDescription/>
-    <typePriorities/>
-    <fsIndexCollection/>
-    <capabilities>
-      <capability>
-        <inputs/>
-        <outputs/>
-        <languagesSupported/>
-      </capability>
-    </capabilities>
-    <operationalProperties>
-      <modifiesCas>true</modifiesCas>
-      <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-      <outputsNewCASes>false</outputsNewCASes>
-    </operationalProperties>
-  </analysisEngineMetaData>
-  <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/ExtensionsExample/descriptor/utils/HtmlAnnotator.xml b/example-projects/ExtensionsExample/descriptor/utils/HtmlAnnotator.xml
deleted file mode 100644
index 1acac59..0000000
--- a/example-projects/ExtensionsExample/descriptor/utils/HtmlAnnotator.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-  <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-  <primitive>true</primitive>
-  <annotatorImplementationName>org.apache.uima.ruta.engine.HtmlAnnotator</annotatorImplementationName>
-  <analysisEngineMetaData>
-    <name>PlainTextAnnotator</name>
-    <description/>
-    <version>1.0</version>
-    <vendor/>
-    <configurationParameters>
-      <configurationParameter>
-        <name>onlyContent</name>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-    </configurationParameters>
-    <configurationParameterSettings>
-      <nameValuePair>
-        <name>onlyContent</name>
-        <value>
-          <boolean>true</boolean>
-        </value>
-      </nameValuePair>
-    </configurationParameterSettings>
-    <typeSystemDescription>
-      <imports>
-        <import location="HtmlTypeSystem.xml"/>
-      </imports>
-    </typeSystemDescription>
-    <typePriorities/>
-    <fsIndexCollection/>
-    <capabilities>
-      <capability>
-        <inputs/>
-        <outputs/>
-        <languagesSupported/>
-      </capability>
-    </capabilities>
-    <operationalProperties>
-      <modifiesCas>true</modifiesCas>
-      <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-      <outputsNewCASes>false</outputsNewCASes>
-    </operationalProperties>
-  </analysisEngineMetaData>
-  <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/ExtensionsExample/descriptor/utils/HtmlConverter.xml b/example-projects/ExtensionsExample/descriptor/utils/HtmlConverter.xml
deleted file mode 100644
index d493e4d..0000000
--- a/example-projects/ExtensionsExample/descriptor/utils/HtmlConverter.xml
+++ /dev/null
@@ -1,124 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-  <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-  <primitive>true</primitive>
-  <annotatorImplementationName>org.apache.uima.ruta.engine.HtmlConverter</annotatorImplementationName>
-  <analysisEngineMetaData>
-    <name>XMLConverter</name>
-    <description/>
-    <version>1.0</version>
-    <vendor/>
-    <configurationParameters>
-      <configurationParameter>
-        <name>outputView</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>newlineInducingTags</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>newlineInducingTagRegExp</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>replaceLinebreaks</name>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>linebreakReplacement</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>inputView</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>conversionPolicy</name>
-        <description>Either heuristic, explicit, or none.
-Defaults to heuristic.</description>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>conversionPatterns</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>conversionReplacements</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-    <configurationParameter>
-        <name>skipWhitespaces</name>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-    <configurationParameter>
-        <name>processAll</name>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-    </configurationParameters>
-    <configurationParameterSettings>
-      <nameValuePair>
-        <name>skipWhitespaces</name>
-        <value>
-          <boolean>true</boolean>
-        </value>
-      </nameValuePair>
-    </configurationParameterSettings>
-    <typeSystemDescription/>
-    <typePriorities/>
-    <fsIndexCollection/>
-    <capabilities>
-      <capability>
-        <inputs/>
-        <outputs/>
-        <languagesSupported/>
-      </capability>
-    </capabilities>
-    <operationalProperties>
-      <modifiesCas>true</modifiesCas>
-      <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-      <outputsNewCASes>false</outputsNewCASes>
-    </operationalProperties>
-  </analysisEngineMetaData>
-  <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/ExtensionsExample/descriptor/utils/HtmlTypeSystem.xml b/example-projects/ExtensionsExample/descriptor/utils/HtmlTypeSystem.xml
deleted file mode 100644
index f5fb687..0000000
--- a/example-projects/ExtensionsExample/descriptor/utils/HtmlTypeSystem.xml
+++ /dev/null
@@ -1,259 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-
-<typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier">
-  <name>typeSystemDescriptor</name>
-  <description/>
-  <version>1.0</version>
-  <vendor/>
-  <types>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.TAG</name>
-      <description></description>
-      <supertypeName>uima.tcas.Annotation</supertypeName>
-      <features>
-        <featureDescription>
-          <name>name</name>
-          <description></description>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>expandedOffsets</name>
-          <description></description>
-          <rangeTypeName>uima.cas.Boolean</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>attributeName</name>
-          <description></description>
-          <rangeTypeName>uima.cas.StringArray</rangeTypeName>
-          <multipleReferencesAllowed>false</multipleReferencesAllowed>
-        </featureDescription>
-        <featureDescription>
-          <name>attributeValue</name>
-          <description/>
-          <rangeTypeName>uima.cas.StringArray</rangeTypeName>
-          <multipleReferencesAllowed>false</multipleReferencesAllowed>
-        </featureDescription>
-      </features>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.B</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.H1</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.H2</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.H3</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.H4</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.H5</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.H6</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.COMMENT</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.TITLE</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.I</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.U</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.BIG</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.SMALL</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.FONT</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.A</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.HEAD</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.HTML</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.BODY</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.EM</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.TABLE</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.DIV</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.SPAN</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.UL</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.OL</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.P</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.LI</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.TBODY</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.TD</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.TR</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.TH</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.IMG</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.STYLE</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.SCRIPT</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.LINK</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.INPUT</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.FORM</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.META</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.BR</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.REMARK</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-      <features>
-        <featureDescription>
-          <name>comment</name>
-          <description></description>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-      </features>
-    </typeDescription>
-  </types>
-</typeSystemDescription>
diff --git a/example-projects/ExtensionsExample/descriptor/utils/Modifier.xml b/example-projects/ExtensionsExample/descriptor/utils/Modifier.xml
deleted file mode 100644
index a5a251e..0000000
--- a/example-projects/ExtensionsExample/descriptor/utils/Modifier.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-  <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-  <primitive>true</primitive>
-  <annotatorImplementationName>org.apache.uima.ruta.engine.RutaModifier</annotatorImplementationName>
-  <analysisEngineMetaData>
-    <name>Modifier</name>
-    <description/>
-    <version>1.0</version>
-    <vendor/>
-    <configurationParameters>
-      <configurationParameter>
-        <name>styleMap</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>descriptorPaths</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>outputLocation</name>
-        <description></description>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>outputView</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-    </configurationParameters>
-    <configurationParameterSettings>
-      <nameValuePair>
-        <name>outputView</name>
-        <value>
-          <string>modified</string>
-        </value>
-      </nameValuePair>
-    </configurationParameterSettings>
-    <typeSystemDescription/>
-    <typePriorities/>
-    <fsIndexCollection/>
-    <capabilities>
-      <capability>
-        <inputs/>
-        <outputs/>
-        <outputSofas>
-          <sofaName>modified</sofaName>
-        </outputSofas>
-        <languagesSupported/>
-      </capability>
-    </capabilities>
-    <operationalProperties>
-      <modifiesCas>true</modifiesCas>
-      <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-      <outputsNewCASes>false</outputsNewCASes>
-    </operationalProperties>
-  </analysisEngineMetaData>
-  <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/ExtensionsExample/descriptor/utils/PlainTextAnnotator.xml b/example-projects/ExtensionsExample/descriptor/utils/PlainTextAnnotator.xml
deleted file mode 100644
index 77a0a55..0000000
--- a/example-projects/ExtensionsExample/descriptor/utils/PlainTextAnnotator.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-  <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-  <primitive>true</primitive>
-  <annotatorImplementationName>org.apache.uima.ruta.engine.PlainTextAnnotator</annotatorImplementationName>
-  <analysisEngineMetaData>
-    <name>PlainTextAnnotator</name>
-    <description/>
-    <version>1.0</version>
-    <vendor/>
-    <configurationParameters/>
-    <configurationParameterSettings/>
-    <typeSystemDescription>
-      <imports>
-        <import location="PlainTextTypeSystem.xml"/>
-      </imports>
-    </typeSystemDescription>
-    <typePriorities/>
-    <fsIndexCollection/>
-    <capabilities>
-      <capability>
-        <inputs/>
-        <outputs/>
-        <languagesSupported/>
-      </capability>
-    </capabilities>
-    <operationalProperties>
-      <modifiesCas>true</modifiesCas>
-      <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-      <outputsNewCASes>false</outputsNewCASes>
-    </operationalProperties>
-  </analysisEngineMetaData>
-  <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/ExtensionsExample/descriptor/utils/PlainTextTypeSystem.xml b/example-projects/ExtensionsExample/descriptor/utils/PlainTextTypeSystem.xml
deleted file mode 100644
index 7081c20..0000000
--- a/example-projects/ExtensionsExample/descriptor/utils/PlainTextTypeSystem.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier">
-  <name>PlainTextTypeSystem</name>
-  <description/>
-  <version>1.0</version>
-  <vendor/>
-  <types>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.Line</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.AnyLine</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.Paragraph</name>
-      <description/>
-      <supertypeName>uima.tcas.Annotation</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.WSLine</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.EmptyLine</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.EmptyLine</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.AnyLine</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.AnyLine</name>
-      <description/>
-      <supertypeName>uima.tcas.Annotation</supertypeName>
-    </typeDescription>
-  </types>
-</typeSystemDescription>
diff --git a/example-projects/ExtensionsExample/descriptor/utils/SourceDocumentInformation.xml b/example-projects/ExtensionsExample/descriptor/utils/SourceDocumentInformation.xml
deleted file mode 100644
index 8322d25..0000000
--- a/example-projects/ExtensionsExample/descriptor/utils/SourceDocumentInformation.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-   
-<typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier">
-	<name>org.apache.uima.examples.SourceDocumentInformation</name>
-	<description>Defines a type for storing information about the original source document from which the current CAS was initialized</description>
-	<version>1.0</version>
-	<vendor>The Apache Software Foundation</vendor>
-	<types>
-		<typeDescription>
-			<name>org.apache.uima.examples.SourceDocumentInformation</name>
-			<description>Stores detailed information about the original source document from which the current CAS was initialized. All information (like size) refers to the source document and not to the document in the CAS which may be converted and filtered by a CAS Initializer. For example this information will be written to the Semantic Search index so that the original document contents can be retrieved by queries.</description>
-			<supertypeName>uima.tcas.Annotation</supertypeName>
-			<features>
-				<featureDescription>
-					<name>uri</name>
-					<description>URI of document. (For example, file:///MyDirectory/myFile.txt for a simple file or http://incubator.apache.org/uima/index.html for content from a web source.)</description>
-					<rangeTypeName>uima.cas.String</rangeTypeName>
-				</featureDescription>
-				<featureDescription>
-					<name>offsetInSource</name>
-					<description>Byte offset of the start of document content within original source file or other input source. Only used if the CAS document was retrieved from an source where one physical source file contained several conceptual documents. Zero otherwise.</description>
-					<rangeTypeName>uima.cas.Integer</rangeTypeName>
-				</featureDescription>
-				<featureDescription>
-					<name>documentSize</name>
-					<description>Size of original document in bytes before processing by CAS Initializer. Either absolute file size of size within file or other source.</description>
-					<rangeTypeName>uima.cas.Integer</rangeTypeName>
-				</featureDescription>
-				<featureDescription>
-				  <name>lastSegment</name>
-				  <description>For a CAS that represents a segment of a larger source document, this flag indicates whether this CAS is the final segment of the source document.  This is useful for downstream components that want to take some action after having seen all of the segments of a particular source document. </description>
-			      <rangeTypeName>uima.cas.Boolean</rangeTypeName>
-			    </featureDescription>				
-			</features>
-		</typeDescription>
-	</types>
-</typeSystemDescription>
diff --git a/example-projects/ExtensionsExample/descriptor/utils/StyleMapCreator.xml b/example-projects/ExtensionsExample/descriptor/utils/StyleMapCreator.xml
deleted file mode 100644
index 8e150de..0000000
--- a/example-projects/ExtensionsExample/descriptor/utils/StyleMapCreator.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-  <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-  <primitive>true</primitive>
-  <annotatorImplementationName>org.apache.uima.ruta.engine.StyleMapCreator</annotatorImplementationName>
-  <analysisEngineMetaData>
-    <name>ReferenceSectionWriterDescriptor</name>
-    <description/>
-    <version>1.0</version>
-    <vendor/>
-    <configurationParameters>
-      <configurationParameter>
-        <name>descriptorPaths</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>styleMap</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-    </configurationParameters>
-    <configurationParameterSettings/>
-    <typeSystemDescription/>
-    <typePriorities/>
-    <fsIndexCollection/>
-    <capabilities>
-      <capability>
-        <inputs/>
-        <outputs/>
-        <languagesSupported/>
-      </capability>
-    </capabilities>
-    <operationalProperties>
-      <modifiesCas>true</modifiesCas>
-      <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-      <outputsNewCASes>false</outputsNewCASes>
-    </operationalProperties>
-  </analysisEngineMetaData>
-  <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/ExtensionsExample/descriptor/utils/ViewWriter.xml b/example-projects/ExtensionsExample/descriptor/utils/ViewWriter.xml
deleted file mode 100644
index 2b3b472..0000000
--- a/example-projects/ExtensionsExample/descriptor/utils/ViewWriter.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-  <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-  <primitive>true</primitive>
-  <annotatorImplementationName>org.apache.uima.ruta.engine.ViewWriter</annotatorImplementationName>
-  <analysisEngineMetaData>
-    <name>XMLConverter</name>
-    <description/>
-    <version>1.0</version>
-    <vendor/>
-    <configurationParameters>
-      <configurationParameter>
-        <name>outputView</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>inputView</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>output</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-    </configurationParameters>
-    <configurationParameterSettings/>
-    <typeSystemDescription/>
-    <typePriorities/>
-    <fsIndexCollection/>
-    <capabilities>
-      <capability>
-        <inputs/>
-        <outputs/>
-        <languagesSupported/>
-      </capability>
-    </capabilities>
-    <operationalProperties>
-      <modifiesCas>true</modifiesCas>
-      <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-      <outputsNewCASes>true</outputsNewCASes>
-    </operationalProperties>
-  </analysisEngineMetaData>
-  <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/ExtensionsExample/descriptor/utils/XMIWriter.xml b/example-projects/ExtensionsExample/descriptor/utils/XMIWriter.xml
deleted file mode 100644
index 3a935cf..0000000
--- a/example-projects/ExtensionsExample/descriptor/utils/XMIWriter.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-  <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-  <primitive>true</primitive>
-  <annotatorImplementationName>org.apache.uima.ruta.engine.XMIWriter</annotatorImplementationName>
-  <analysisEngineMetaData>
-    <name>ReferenceSectionWriterDescriptor</name>
-    <description/>
-    <version>1.0</version>
-    <vendor/>
-    <configurationParameters>
-      <configurationParameter>
-        <name>Output</name>
-        <description>Location where the xmi is stored</description>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>true</mandatory>
-      </configurationParameter>
-    </configurationParameters>
-    <configurationParameterSettings>
-      <nameValuePair>
-        <name>Output</name>
-        <value>
-          <string>/../output/</string>
-        </value>
-      </nameValuePair>
-    </configurationParameterSettings>
-    <typeSystemDescription/>
-    <typePriorities/>
-    <fsIndexCollection/>
-    <capabilities>
-      <capability>
-        <inputs/>
-        <outputs/>
-        <languagesSupported/>
-      </capability>
-    </capabilities>
-    <operationalProperties>
-      <modifiesCas>true</modifiesCas>
-      <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-      <outputsNewCASes>false</outputsNewCASes>
-    </operationalProperties>
-  </analysisEngineMetaData>
-  <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/ExtensionsExample/input/test.txt b/example-projects/ExtensionsExample/input/test.txt
deleted file mode 100644
index 0a92e4b..0000000
--- a/example-projects/ExtensionsExample/input/test.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a test.
-1900/12/24 and 24.4.1982
-CW
-org.apache.uima.ruta.type.NUM
\ No newline at end of file
diff --git a/example-projects/ExtensionsExample/output/test.txt.xmi b/example-projects/ExtensionsExample/output/test.txt.xmi
deleted file mode 100644
index 4d3c4cc..0000000
--- a/example-projects/ExtensionsExample/output/test.txt.xmi
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><xmi:XMI xmlns:cas="http:///uima/cas.ecore" xmlns:ExampleBlock="http:///uima/ruta/example/ExampleBlock.ecore" xmlns:type="http:///org/apache/uima/ruta/type.ecore" xmlns:xmi="http://www.omg.org/XMI" xmlns:tcas="http:///uima/tcas.ecore" xmi:version="2.0"><cas:NULL xmi:id="0"/><cas:Sofa xmi:id="1" sofaNum="1" sofaID="_InitialView" mimeType="text" sofaString="This is a test.&#13;&#10;1900/12/24 and 24.4.1982&#13;&#10;CW&#13;&#10;org.apache.uima.ruta.type.NUM"/><tcas:DocumentAnnotation xmi:id="8" sofa="1" begin="0" end="76" language="x-unspecified"/><type:CW xmi:id="13" sofa="1" begin="0" end="4"/><type:SPACE xmi:id="17" sofa="1" begin="4" end="5"/><type:SPACE xmi:id="25" sofa="1" begin="7" end="8"/><type:SPACE xmi:id="33" sofa="1" begin="9" end="10"/><type:SPACE xmi:id="73" sofa="1" begin="27" end="28"/><type:SPACE xmi:id="81" sofa="1" begin="31" end="32"/><type:SW xmi:id="21" sofa="1" begin="5" end="7"/><type:SW xmi:id="29" sofa="1" begin="8" end="9"/><type:SW xmi:id="37" sofa="1" begin="10" end="14"/><type:SW xmi:id="77" sofa="1" begin="28" end="31"/><type:SW xmi:id="125" sofa="1" begin="47" end="50"/><type:SW xmi:id="133" sofa="1" begin="51" end="57"/><type:SW xmi:id="141" sofa="1" begin="58" end="62"/><type:SW xmi:id="149" sofa="1" begin="63" end="67"/><type:SW xmi:id="157" sofa="1" begin="68" end="72"/><type:PERIOD xmi:id="41" sofa="1" begin="14" end="15"/><type:PERIOD xmi:id="89" sofa="1" begin="34" end="35"/><type:PERIOD xmi:id="97" sofa="1" begin="36" end="37"/><type:PERIOD xmi:id="129" sofa="1" begin="50" end="51"/><type:PERIOD xmi:id="137" sofa="1" begin="57" end="58"/><type:PERIOD xmi:id="145" sofa="1" begin="62" end="63"/><type:PERIOD xmi:id="153" sofa="1" begin="67" end="68"/><type:PERIOD xmi:id="161" sofa="1" begin="72" end="73"/><type:BREAK xmi:id="45" sofa="1" begin="15" end="16"/><type:BREAK xmi:id="49" sofa="1" begin="16" end="17"/><type:BREAK xmi:id="105" sofa="1" begin="41" end="42"/><type:BREAK xmi:id="109" sofa="1" begin="42" end="43"/><type:BREAK xmi:id="117" sofa="1" begin="45" end="46"/><type:BREAK xmi:id="121" sofa="1" begin="46" end="47"/><type:NUM xmi:id="53" sofa="1" begin="17" end="21"/><type:NUM xmi:id="61" sofa="1" begin="22" end="24"/><type:NUM xmi:id="69" sofa="1" begin="25" end="27"/><type:NUM xmi:id="85" sofa="1" begin="32" end="34"/><type:NUM xmi:id="93" sofa="1" begin="35" end="36"/><type:NUM xmi:id="101" sofa="1" begin="37" end="41"/><type:SPECIAL xmi:id="57" sofa="1" begin="21" end="22"/><type:SPECIAL xmi:id="65" sofa="1" begin="24" end="25"/><type:CAP xmi:id="113" sofa="1" begin="43" end="45"/><type:CAP xmi:id="165" sofa="1" begin="73" end="76"/><type:RutaBasic xmi:id="169" sofa="1" begin="0" end="4"/><type:RutaBasic xmi:id="174" sofa="1" begin="4" end="5"/><type:RutaBasic xmi:id="179" sofa="1" begin="5" end="7"/><type:RutaBasic xmi:id="184" sofa="1" begin="7" end="8"/><type:RutaBasic xmi:id="189" sofa="1" begin="8" end="9"/><type:RutaBasic xmi:id="194" sofa="1" begin="9" end="10"/><type:RutaBasic xmi:id="199" sofa="1" begin="10" end="14"/><type:RutaBasic xmi:id="204" sofa="1" begin="14" end="15"/><type:RutaBasic xmi:id="209" sofa="1" begin="15" end="16"/><type:RutaBasic xmi:id="214" sofa="1" begin="16" end="17"/><type:RutaBasic xmi:id="219" sofa="1" begin="17" end="21"/><type:RutaBasic xmi:id="224" sofa="1" begin="21" end="22"/><type:RutaBasic xmi:id="229" sofa="1" begin="22" end="24"/><type:RutaBasic xmi:id="234" sofa="1" begin="24" end="25"/><type:RutaBasic xmi:id="239" sofa="1" begin="25" end="27"/><type:RutaBasic xmi:id="244" sofa="1" begin="27" end="28"/><type:RutaBasic xmi:id="249" sofa="1" begin="28" end="31"/><type:RutaBasic xmi:id="254" sofa="1" begin="31" end="32"/><type:RutaBasic xmi:id="259" sofa="1" begin="32" end="34"/><type:RutaBasic xmi:id="264" sofa="1" begin="34" end="35"/><type:RutaBasic xmi:id="269" sofa="1" begin="35" end="36"/><type:RutaBasic xmi:id="274" sofa="1" begin="36" end="37"/><type:RutaBasic xmi:id="279" sofa="1" begin="37" end="41"/><type:RutaBasic xmi:id="284" sofa="1" begin="41" end="42"/><type:RutaBasic xmi:id="289" sofa="1" begin="42" end="43"/><type:RutaBasic xmi:id="294" sofa="1" begin="43" end="45"/><type:RutaBasic xmi:id="299" sofa="1" begin="45" end="46"/><type:RutaBasic xmi:id="304" sofa="1" begin="46" end="47"/><type:RutaBasic xmi:id="309" sofa="1" begin="47" end="50"/><type:RutaBasic xmi:id="314" sofa="1" begin="50" end="51"/><type:RutaBasic xmi:id="319" sofa="1" begin="51" end="57"/><type:RutaBasic xmi:id="324" sofa="1" begin="57" end="58"/><type:RutaBasic xmi:id="329" sofa="1" begin="58" end="62"/><type:RutaBasic xmi:id="334" sofa="1" begin="62" end="63"/><type:RutaBasic xmi:id="339" sofa="1" begin="63" end="67"/><type:RutaBasic xmi:id="344" sofa="1" begin="67" end="68"/><type:RutaBasic xmi:id="349" sofa="1" begin="68" end="72"/><type:RutaBasic xmi:id="354" sofa="1" begin="72" end="73"/><type:RutaBasic xmi:id="359" sofa="1" begin="73" end="76"/><ExampleBlock:T1 xmi:id="592" sofa="1" begin="10" end="15"/><ExampleBlock:T1 xmi:id="621" sofa="1" begin="47" end="51"/><ExampleBlock:T1 xmi:id="642" sofa="1" begin="51" end="58"/><ExampleBlock:T1 xmi:id="663" sofa="1" begin="58" end="63"/><ExampleBlock:T1 xmi:id="684" sofa="1" begin="63" end="68"/><ExampleBlock:T1 xmi:id="705" sofa="1" begin="68" end="73"/><ExampleBlock:T2 xmi:id="734" sofa="1" begin="8" end="15"/><ExampleBlock:T3 xmi:id="811" sofa="1" begin="5" end="15"/><ExampleBlock:T4 xmi:id="896" sofa="1" begin="0" end="15"/><type:DebugFailedRuleMatch xmi:id="940" sofa="1" begin="5" end="7" time="3" elements="948" matched="false" delegates=""/><type:DebugFailedRuleMatch xmi:id="1020" sofa="1" begin="8" end="9" time="3" elements="1028" matched="false" delegates=""/><type:DebugFailedRuleMatch xmi:id="1184" sofa="1" begin="28" end="31" time="3" elements="1192" matched="false" delegates=""/><type:DebugFailedRuleMatch xmi:id="1706" sofa="1" begin="5" end="7" time="2" elements="1714" matched="false" delegates=""/><type:DebugFailedRuleMatch xmi:id="1870" sofa="1" begin="10" end="14" time="2" elements="1878" matched="false" delegates=""/><type:DebugFailedRuleMatch xmi:id="1950" sofa="1" begin="28" end="31" time="2" elements="1958" matched="false" delegates=""/><type:DebugFailedRuleMatch xmi:id="2030" sofa="1" begin="47" end="50" time="2" elements="2038" matched="false" delegates=""/><type:DebugFailedRuleMatch xmi:id="2110" sofa="1" begin="51" end="57" time="2" elements="2118" matched="false" delegates=""/><type:DebugFailedRuleMatch xmi:id="2190" sofa="1" begin="58" end="62" time="2" elements="2198" matched="false" delegates=""/><type:DebugFailedRuleMatch xmi:id="2270" sofa="1" begin="63" end="67" time="2" elements="2278" matched="false" delegates=""/><type:DebugFailedRuleMatch xmi:id="2350" sofa="1" begin="68" end="72" time="2" elements="2358" matched="false" delegates=""/><type:DebugFailedRuleMatch xmi:id="2536" sofa="1" begin="8" end="9" time="2" elements="2544" matched="false" delegates=""/><type:DebugFailedRuleMatch xmi:id="2616" sofa="1" begin="10" end="14" time="2" elements="2624" matched="false" delegates=""/><type:DebugFailedRuleMatch xmi:id="2696" sofa="1" begin="28" end="31" time="2" elements="2704" matched="false" delegates=""/><type:DebugFailedRuleMatch xmi:id="2776" sofa="1" begin="47" end="50" time="2" elements="2784" matched="false" delegates=""/><type:DebugFailedRuleMatch xmi:id="2856" sofa="1" begin="51" end="57" time="2" elements="2864" matched="false" delegates=""/><type:DebugFailedRuleMatch xmi:id="2936" sofa="1" begin="58" end="62" time="2" elements="2944" matched="false" delegates=""/><type:DebugFailedRuleMatch xmi:id="3016" sofa="1" begin="63" end="67" time="2" elements="3024" matched="false" delegates=""/><type:DebugFailedRuleMatch xmi:id="3096" sofa="1" begin="68" end="72" time="2" elements="3104" matched="false" delegates=""/><type:DebugMatchedRuleMatch xmi:id="1100" sofa="1" begin="10" end="15" time="3" elements="1108" matched="true" delegates=""/><type:DebugMatchedRuleMatch xmi:id="1264" sofa="1" begin="47" end="51" time="3" elements="1272" matched="true" delegates=""/><type:DebugMatchedRuleMatch xmi:id="1348" sofa="1" begin="51" end="58" time="3" elements="1356" matched="true" delegates=""/><type:DebugMatchedRuleMatch xmi:id="1432" sofa="1" begin="58" end="63" time="3" elements="1440" matched="true" delegates=""/><type:DebugMatchedRuleMatch xmi:id="1516" sofa="1" begin="63" end="68" time="3" elements="1524" matched="true" delegates=""/><type:DebugMatchedRuleMatch xmi:id="1600" sofa="1" begin="68" end="73" time="3" elements="1608" matched="true" delegates=""/><type:DebugMatchedRuleMatch xmi:id="1786" sofa="1" begin="8" end="15" time="2" elements="1794" matched="true" delegates=""/><type:DebugMatchedRuleMatch xmi:id="2452" sofa="1" begin="5" end="15" time="2" elements="2460" matched="true" delegates=""/><type:DebugMatchedRuleMatch xmi:id="3198" sofa="1" begin="0" end="15" time="0" elements="3206" matched="true" delegates=""/><type:DebugMatchedRuleMatch xmi:id="3302" sofa="1" begin="0" end="76" time="0" elements="3310" matched="true" delegates=""/><type:DebugMatchedRuleMatch xmi:id="3353" sofa="1" begin="0" end="76" time="0" elements="3361" matched="true" delegates=""/><type:DebugBlockApply xmi:id="905" sofa="1" begin="0" end="76" time="7" element="BLOCK(ExampleBlock) uima.tcas.DocumentAnnotation " applied="1" tried="1" rules="3353" id="0" innerApply="917"/><type:Statistics xmi:id="3402" total="1.0" amount="9" part="0.1111"><name/></type:Statistics><type:DebugCreatedBy xmi:id="364" rule="provided" annotation="8" script="" id="-1"/><type:DebugCreatedBy xmi:id="369" rule="provided" annotation="13" script="" id="-1"/><type:DebugCreatedBy xmi:id="374" rule="provided" annotation="17" script="" id="-1"/><type:DebugCreatedBy xmi:id="379" rule="provided" annotation="21" script="" id="-1"/><type:DebugCreatedBy xmi:id="384" rule="provided" annotation="25" script="" id="-1"/><type:DebugCreatedBy xmi:id="389" rule="provided" annotation="29" script="" id="-1"/><type:DebugCreatedBy xmi:id="394" rule="provided" annotation="33" script="" id="-1"/><type:DebugCreatedBy xmi:id="399" rule="provided" annotation="37" script="" id="-1"/><type:DebugCreatedBy xmi:id="404" rule="provided" annotation="41" script="" id="-1"/><type:DebugCreatedBy xmi:id="409" rule="provided" annotation="45" script="" id="-1"/><type:DebugCreatedBy xmi:id="414" rule="provided" annotation="49" script="" id="-1"/><type:DebugCreatedBy xmi:id="419" rule="provided" annotation="53" script="" id="-1"/><type:DebugCreatedBy xmi:id="424" rule="provided" annotation="57" script="" id="-1"/><type:DebugCreatedBy xmi:id="429" rule="provided" annotation="61" script="" id="-1"/><type:DebugCreatedBy xmi:id="434" rule="provided" annotation="65" script="" id="-1"/><type:DebugCreatedBy xmi:id="439" rule="provided" annotation="69" script="" id="-1"/><type:DebugCreatedBy xmi:id="444" rule="provided" annotation="73" script="" id="-1"/><type:DebugCreatedBy xmi:id="449" rule="provided" annotation="77" script="" id="-1"/><type:DebugCreatedBy xmi:id="454" rule="provided" annotation="81" script="" id="-1"/><type:DebugCreatedBy xmi:id="459" rule="provided" annotation="85" script="" id="-1"/><type:DebugCreatedBy xmi:id="464" rule="provided" annotation="89" script="" id="-1"/><type:DebugCreatedBy xmi:id="469" rule="provided" annotation="93" script="" id="-1"/><type:DebugCreatedBy xmi:id="474" rule="provided" annotation="97" script="" id="-1"/><type:DebugCreatedBy xmi:id="479" rule="provided" annotation="101" script="" id="-1"/><type:DebugCreatedBy xmi:id="484" rule="provided" annotation="105" script="" id="-1"/><type:DebugCreatedBy xmi:id="489" rule="provided" annotation="109" script="" id="-1"/><type:DebugCreatedBy xmi:id="494" rule="provided" annotation="113" script="" id="-1"/><type:DebugCreatedBy xmi:id="499" rule="provided" annotation="117" script="" id="-1"/><type:DebugCreatedBy xmi:id="504" rule="provided" annotation="121" script="" id="-1"/><type:DebugCreatedBy xmi:id="509" rule="provided" annotation="125" script="" id="-1"/><type:DebugCreatedBy xmi:id="514" rule="provided" annotation="129" script="" id="-1"/><type:DebugCreatedBy xmi:id="519" rule="provided" annotation="133" script="" id="-1"/><type:DebugCreatedBy xmi:id="524" rule="provided" annotation="137" script="" id="-1"/><type:DebugCreatedBy xmi:id="529" rule="provided" annotation="141" script="" id="-1"/><type:DebugCreatedBy xmi:id="534" rule="provided" annotation="145" script="" id="-1"/><type:DebugCreatedBy xmi:id="539" rule="provided" annotation="149" script="" id="-1"/><type:DebugCreatedBy xmi:id="544" rule="provided" annotation="153" script="" id="-1"/><type:DebugCreatedBy xmi:id="549" rule="provided" annotation="157" script="" id="-1"/><type:DebugCreatedBy xmi:id="554" rule="provided" annotation="161" script="" id="-1"/><type:DebugCreatedBy xmi:id="559" rule="provided" annotation="165" script="" id="-1"/><type:DebugCreatedBy xmi:id="596" rule="(SW PERIOD){ -&gt; T1} " annotation="592" script="uima.ruta.example.ExampleBlock" id="5"/><type:DebugCreatedBy xmi:id="625" rule="(SW PERIOD){ -&gt; T1} " annotation="621" script="uima.ruta.example.ExampleBlock" id="5"/><type:DebugCreatedBy xmi:id="646" rule="(SW PERIOD){ -&gt; T1} " annotation="642" script="uima.ruta.example.ExampleBlock" id="5"/><type:DebugCreatedBy xmi:id="667" rule="(SW PERIOD){ -&gt; T1} " annotation="663" script="uima.ruta.example.ExampleBlock" id="5"/><type:DebugCreatedBy xmi:id="688" rule="(SW PERIOD){ -&gt; T1} " annotation="684" script="uima.ruta.example.ExampleBlock" id="5"/><type:DebugCreatedBy xmi:id="709" rule="(SW PERIOD){ -&gt; T1} " annotation="705" script="uima.ruta.example.ExampleBlock" id="5"/><type:DebugCreatedBy xmi:id="738" rule="(SW T1){ -&gt; T2} " annotation="734" script="uima.ruta.example.ExampleBlock" id="4"/><type:DebugCreatedBy xmi:id="815" rule="(SW T2){ -&gt; T3} " annotation="811" script="uima.ruta.example.ExampleBlock" id="3"/><type:DebugCreatedBy xmi:id="900" rule="(CW T3){ -&gt; T4} " annotation="896" script="uima.ruta.example.ExampleBlock" id="2"/><type:DebugRuleApply xmi:id="3187" sofa="1" begin="0" end="15" time="0" element="(CW T3){ -&gt; T4} " applied="1" tried="1" rules="3198" id="2" script="uima.ruta.example.ExampleBlock"/><type:DebugRuleApply xmi:id="2441" sofa="1" begin="5" end="72" time="2" element="(SW T2){ -&gt; T3} " applied="1" tried="9" rules="2452 2536 2616 2696 2776 2856 2936 3016 3096" id="3" script="uima.ruta.example.ExampleBlock"/><type:DebugRuleApply xmi:id="1695" sofa="1" begin="5" end="72" time="2" element="(SW T1){ -&gt; T2} " applied="1" tried="9" rules="1706 1786 1870 1950 2030 2110 2190 2270 2350" id="4" script="uima.ruta.example.ExampleBlock"/><type:DebugRuleApply xmi:id="929" sofa="1" begin="5" end="73" time="3" element="(SW PERIOD){ -&gt; T1} " applied="6" tried="9" rules="940 1020 1100 1184 1264 1348 1432 1516 1600" id="5" script="uima.ruta.example.ExampleBlock"/><type:DebugBlockApply xmi:id="917" sofa="1" begin="0" end="76" time="7" element="BLOCK(REVERSE) Document " applied="1" tried="1" rules="3302" id="0" innerApply="929 1695 2441 3187"/><type:DebugEvaluatedCondition xmi:id="3373" element="uima.tcas.DocumentAnnotation" value="true"/><type:DebugRuleElementMatch xmi:id="3365" sofa="1" begin="0" end="76" time="0" baseCondition="3373" conditions=""/><type:DebugRuleElementMatches xmi:id="3361" matches="3365" element="uima.tcas.DocumentAnnotation" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="3322" element="Document" value="true"/><type:DebugRuleElementMatch xmi:id="3314" sofa="1" begin="0" end="76" time="0" baseCondition="3322" conditions=""/><type:DebugRuleElementMatches xmi:id="3310" matches="3314" element="Document" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="3255" element="T3" value="true"/><type:DebugRuleElementMatch xmi:id="3247" sofa="1" begin="5" end="15" time="0" baseCondition="3255" conditions=""/><type:DebugRuleElementMatches xmi:id="3243" matches="3247" element="T3" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="3234" element="CW" value="true"/><type:DebugRuleElementMatch xmi:id="3226" sofa="1" begin="0" end="4" time="0" baseCondition="3234" conditions=""/><type:DebugRuleElementMatches xmi:id="3222" matches="3226" element="CW" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="3218" element="(CW T3){ -&gt; T4}" value="true"/><type:DebugRuleElementMatch xmi:id="3210" sofa="1" begin="0" end="15" time="0" baseCondition="3218" conditions="" elements="3222 3243"/><type:DebugRuleElementMatches xmi:id="3206" matches="3210" element="(CW T3){ -&gt; T4}" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="2509" element="T2" value="true"/><type:DebugRuleElementMatch xmi:id="2501" sofa="1" begin="8" end="15" time="0" baseCondition="2509" conditions=""/><type:DebugRuleElementMatches xmi:id="2497" matches="2501" element="T2" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="2488" element="SW" value="true"/><type:DebugRuleElementMatch xmi:id="2480" sofa="1" begin="5" end="7" time="0" baseCondition="2488" conditions=""/><type:DebugRuleElementMatches xmi:id="2476" matches="2480" element="SW" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="2472" element="(SW T2){ -&gt; T3}" value="true"/><type:DebugRuleElementMatch xmi:id="2464" sofa="1" begin="5" end="15" time="0" baseCondition="2472" conditions="" elements="2476 2497"/><type:DebugRuleElementMatches xmi:id="2460" matches="2464" element="(SW T2){ -&gt; T3}" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="1843" element="T1" value="true"/><type:DebugRuleElementMatch xmi:id="1835" sofa="1" begin="10" end="15" time="0" baseCondition="1843" conditions=""/><type:DebugRuleElementMatches xmi:id="1831" matches="1835" element="T1" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="1822" element="SW" value="true"/><type:DebugRuleElementMatch xmi:id="1814" sofa="1" begin="8" end="9" time="0" baseCondition="1822" conditions=""/><type:DebugRuleElementMatches xmi:id="1810" matches="1814" element="SW" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="1806" element="(SW T1){ -&gt; T2}" value="true"/><type:DebugRuleElementMatch xmi:id="1798" sofa="1" begin="8" end="15" time="0" baseCondition="1806" conditions="" elements="1810 1831"/><type:DebugRuleElementMatches xmi:id="1794" matches="1798" element="(SW T1){ -&gt; T2}" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="1657" element="PERIOD" value="true"/><type:DebugRuleElementMatch xmi:id="1649" sofa="1" begin="72" end="73" time="0" baseCondition="1657" conditions=""/><type:DebugRuleElementMatches xmi:id="1645" matches="1649" element="PERIOD" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="1636" element="SW" value="true"/><type:DebugRuleElementMatch xmi:id="1628" sofa="1" begin="68" end="72" time="0" baseCondition="1636" conditions=""/><type:DebugRuleElementMatches xmi:id="1624" matches="1628" element="SW" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="1620" element="(SW PERIOD){ -&gt; T1}" value="true"/><type:DebugRuleElementMatch xmi:id="1612" sofa="1" begin="68" end="73" time="0" baseCondition="1620" conditions="" elements="1624 1645"/><type:DebugRuleElementMatches xmi:id="1608" matches="1612" element="(SW PERIOD){ -&gt; T1}" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="1573" element="PERIOD" value="true"/><type:DebugRuleElementMatch xmi:id="1565" sofa="1" begin="67" end="68" time="0" baseCondition="1573" conditions=""/><type:DebugRuleElementMatches xmi:id="1561" matches="1565" element="PERIOD" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="1552" element="SW" value="true"/><type:DebugRuleElementMatch xmi:id="1544" sofa="1" begin="63" end="67" time="0" baseCondition="1552" conditions=""/><type:DebugRuleElementMatches xmi:id="1540" matches="1544" element="SW" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="1536" element="(SW PERIOD){ -&gt; T1}" value="true"/><type:DebugRuleElementMatch xmi:id="1528" sofa="1" begin="63" end="68" time="0" baseCondition="1536" conditions="" elements="1540 1561"/><type:DebugRuleElementMatches xmi:id="1524" matches="1528" element="(SW PERIOD){ -&gt; T1}" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="1489" element="PERIOD" value="true"/><type:DebugRuleElementMatch xmi:id="1481" sofa="1" begin="62" end="63" time="0" baseCondition="1489" conditions=""/><type:DebugRuleElementMatches xmi:id="1477" matches="1481" element="PERIOD" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="1468" element="SW" value="true"/><type:DebugRuleElementMatch xmi:id="1460" sofa="1" begin="58" end="62" time="0" baseCondition="1468" conditions=""/><type:DebugRuleElementMatches xmi:id="1456" matches="1460" element="SW" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="1452" element="(SW PERIOD){ -&gt; T1}" value="true"/><type:DebugRuleElementMatch xmi:id="1444" sofa="1" begin="58" end="63" time="0" baseCondition="1452" conditions="" elements="1456 1477"/><type:DebugRuleElementMatches xmi:id="1440" matches="1444" element="(SW PERIOD){ -&gt; T1}" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="1405" element="PERIOD" value="true"/><type:DebugRuleElementMatch xmi:id="1397" sofa="1" begin="57" end="58" time="0" baseCondition="1405" conditions=""/><type:DebugRuleElementMatches xmi:id="1393" matches="1397" element="PERIOD" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="1384" element="SW" value="true"/><type:DebugRuleElementMatch xmi:id="1376" sofa="1" begin="51" end="57" time="0" baseCondition="1384" conditions=""/><type:DebugRuleElementMatches xmi:id="1372" matches="1376" element="SW" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="1368" element="(SW PERIOD){ -&gt; T1}" value="true"/><type:DebugRuleElementMatch xmi:id="1360" sofa="1" begin="51" end="58" time="0" baseCondition="1368" conditions="" elements="1372 1393"/><type:DebugRuleElementMatches xmi:id="1356" matches="1360" element="(SW PERIOD){ -&gt; T1}" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="1321" element="PERIOD" value="true"/><type:DebugRuleElementMatch xmi:id="1313" sofa="1" begin="50" end="51" time="0" baseCondition="1321" conditions=""/><type:DebugRuleElementMatches xmi:id="1309" matches="1313" element="PERIOD" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="1300" element="SW" value="true"/><type:DebugRuleElementMatch xmi:id="1292" sofa="1" begin="47" end="50" time="0" baseCondition="1300" conditions=""/><type:DebugRuleElementMatches xmi:id="1288" matches="1292" element="SW" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="1284" element="(SW PERIOD){ -&gt; T1}" value="true"/><type:DebugRuleElementMatch xmi:id="1276" sofa="1" begin="47" end="51" time="0" baseCondition="1284" conditions="" elements="1288 1309"/><type:DebugRuleElementMatches xmi:id="1272" matches="1276" element="(SW PERIOD){ -&gt; T1}" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="1157" element="PERIOD" value="true"/><type:DebugRuleElementMatch xmi:id="1149" sofa="1" begin="14" end="15" time="0" baseCondition="1157" conditions=""/><type:DebugRuleElementMatches xmi:id="1145" matches="1149" element="PERIOD" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="1136" element="SW" value="true"/><type:DebugRuleElementMatch xmi:id="1128" sofa="1" begin="10" end="14" time="0" baseCondition="1136" conditions=""/><type:DebugRuleElementMatches xmi:id="1124" matches="1128" element="SW" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="1120" element="(SW PERIOD){ -&gt; T1}" value="true"/><type:DebugRuleElementMatch xmi:id="1112" sofa="1" begin="10" end="15" time="0" baseCondition="1120" conditions="" elements="1124 1145"/><type:DebugRuleElementMatches xmi:id="1108" matches="1112" element="(SW PERIOD){ -&gt; T1}" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="3153" element="T2" value="false"/><type:DebugRuleElementMatch xmi:id="3145" sofa="1" begin="0" end="0" time="0" baseCondition="3153" conditions=""/><type:DebugRuleElementMatches xmi:id="3141" matches="3145" element="T2" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="3132" element="SW" value="true"/><type:DebugRuleElementMatch xmi:id="3124" sofa="1" begin="68" end="72" time="0" baseCondition="3132" conditions=""/><type:DebugRuleElementMatches xmi:id="3120" matches="3124" element="SW" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="3116" element="(SW T2){ -&gt; T3}" value="false"/><type:DebugRuleElementMatch xmi:id="3108" sofa="1" begin="68" end="72" time="0" baseCondition="3116" conditions="" elements="3120 3141"/><type:DebugRuleElementMatches xmi:id="3104" matches="3108" element="(SW T2){ -&gt; T3}" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="3073" element="T2" value="false"/><type:DebugRuleElementMatch xmi:id="3065" sofa="1" begin="0" end="0" time="0" baseCondition="3073" conditions=""/><type:DebugRuleElementMatches xmi:id="3061" matches="3065" element="T2" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="3052" element="SW" value="true"/><type:DebugRuleElementMatch xmi:id="3044" sofa="1" begin="63" end="67" time="0" baseCondition="3052" conditions=""/><type:DebugRuleElementMatches xmi:id="3040" matches="3044" element="SW" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="3036" element="(SW T2){ -&gt; T3}" value="false"/><type:DebugRuleElementMatch xmi:id="3028" sofa="1" begin="63" end="67" time="0" baseCondition="3036" conditions="" elements="3040 3061"/><type:DebugRuleElementMatches xmi:id="3024" matches="3028" element="(SW T2){ -&gt; T3}" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="2993" element="T2" value="false"/><type:DebugRuleElementMatch xmi:id="2985" sofa="1" begin="0" end="0" time="0" baseCondition="2993" conditions=""/><type:DebugRuleElementMatches xmi:id="2981" matches="2985" element="T2" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="2972" element="SW" value="true"/><type:DebugRuleElementMatch xmi:id="2964" sofa="1" begin="58" end="62" time="0" baseCondition="2972" conditions=""/><type:DebugRuleElementMatches xmi:id="2960" matches="2964" element="SW" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="2956" element="(SW T2){ -&gt; T3}" value="false"/><type:DebugRuleElementMatch xmi:id="2948" sofa="1" begin="58" end="62" time="0" baseCondition="2956" conditions="" elements="2960 2981"/><type:DebugRuleElementMatches xmi:id="2944" matches="2948" element="(SW T2){ -&gt; T3}" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="2913" element="T2" value="false"/><type:DebugRuleElementMatch xmi:id="2905" sofa="1" begin="0" end="0" time="0" baseCondition="2913" conditions=""/><type:DebugRuleElementMatches xmi:id="2901" matches="2905" element="T2" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="2892" element="SW" value="true"/><type:DebugRuleElementMatch xmi:id="2884" sofa="1" begin="51" end="57" time="0" baseCondition="2892" conditions=""/><type:DebugRuleElementMatches xmi:id="2880" matches="2884" element="SW" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="2876" element="(SW T2){ -&gt; T3}" value="false"/><type:DebugRuleElementMatch xmi:id="2868" sofa="1" begin="51" end="57" time="0" baseCondition="2876" conditions="" elements="2880 2901"/><type:DebugRuleElementMatches xmi:id="2864" matches="2868" element="(SW T2){ -&gt; T3}" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="2833" element="T2" value="false"/><type:DebugRuleElementMatch xmi:id="2825" sofa="1" begin="0" end="0" time="0" baseCondition="2833" conditions=""/><type:DebugRuleElementMatches xmi:id="2821" matches="2825" element="T2" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="2812" element="SW" value="true"/><type:DebugRuleElementMatch xmi:id="2804" sofa="1" begin="47" end="50" time="0" baseCondition="2812" conditions=""/><type:DebugRuleElementMatches xmi:id="2800" matches="2804" element="SW" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="2796" element="(SW T2){ -&gt; T3}" value="false"/><type:DebugRuleElementMatch xmi:id="2788" sofa="1" begin="47" end="50" time="0" baseCondition="2796" conditions="" elements="2800 2821"/><type:DebugRuleElementMatches xmi:id="2784" matches="2788" element="(SW T2){ -&gt; T3}" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="2753" element="T2" value="false"/><type:DebugRuleElementMatch xmi:id="2745" sofa="1" begin="0" end="0" time="0" baseCondition="2753" conditions=""/><type:DebugRuleElementMatches xmi:id="2741" matches="2745" element="T2" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="2732" element="SW" value="true"/><type:DebugRuleElementMatch xmi:id="2724" sofa="1" begin="28" end="31" time="0" baseCondition="2732" conditions=""/><type:DebugRuleElementMatches xmi:id="2720" matches="2724" element="SW" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="2716" element="(SW T2){ -&gt; T3}" value="false"/><type:DebugRuleElementMatch xmi:id="2708" sofa="1" begin="28" end="31" time="0" baseCondition="2716" conditions="" elements="2720 2741"/><type:DebugRuleElementMatches xmi:id="2704" matches="2708" element="(SW T2){ -&gt; T3}" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="2673" element="T2" value="false"/><type:DebugRuleElementMatch xmi:id="2665" sofa="1" begin="0" end="0" time="0" baseCondition="2673" conditions=""/><type:DebugRuleElementMatches xmi:id="2661" matches="2665" element="T2" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="2652" element="SW" value="true"/><type:DebugRuleElementMatch xmi:id="2644" sofa="1" begin="10" end="14" time="0" baseCondition="2652" conditions=""/><type:DebugRuleElementMatches xmi:id="2640" matches="2644" element="SW" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="2636" element="(SW T2){ -&gt; T3}" value="false"/><type:DebugRuleElementMatch xmi:id="2628" sofa="1" begin="10" end="14" time="0" baseCondition="2636" conditions="" elements="2640 2661"/><type:DebugRuleElementMatches xmi:id="2624" matches="2628" element="(SW T2){ -&gt; T3}" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="2593" element="T2" value="false"/><type:DebugRuleElementMatch xmi:id="2585" sofa="1" begin="0" end="0" time="0" baseCondition="2593" conditions=""/><type:DebugRuleElementMatches xmi:id="2581" matches="2585" element="T2" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="2572" element="SW" value="true"/><type:DebugRuleElementMatch xmi:id="2564" sofa="1" begin="8" end="9" time="0" baseCondition="2572" conditions=""/><type:DebugRuleElementMatches xmi:id="2560" matches="2564" element="SW" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="2556" element="(SW T2){ -&gt; T3}" value="false"/><type:DebugRuleElementMatch xmi:id="2548" sofa="1" begin="8" end="9" time="0" baseCondition="2556" conditions="" elements="2560 2581"/><type:DebugRuleElementMatches xmi:id="2544" matches="2548" element="(SW T2){ -&gt; T3}" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="2407" element="T1" value="false"/><type:DebugRuleElementMatch xmi:id="2399" sofa="1" begin="0" end="0" time="0" baseCondition="2407" conditions=""/><type:DebugRuleElementMatches xmi:id="2395" matches="2399" element="T1" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="2386" element="SW" value="true"/><type:DebugRuleElementMatch xmi:id="2378" sofa="1" begin="68" end="72" time="0" baseCondition="2386" conditions=""/><type:DebugRuleElementMatches xmi:id="2374" matches="2378" element="SW" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="2370" element="(SW T1){ -&gt; T2}" value="false"/><type:DebugRuleElementMatch xmi:id="2362" sofa="1" begin="68" end="72" time="0" baseCondition="2370" conditions="" elements="2374 2395"/><type:DebugRuleElementMatches xmi:id="2358" matches="2362" element="(SW T1){ -&gt; T2}" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="2327" element="T1" value="false"/><type:DebugRuleElementMatch xmi:id="2319" sofa="1" begin="0" end="0" time="0" baseCondition="2327" conditions=""/><type:DebugRuleElementMatches xmi:id="2315" matches="2319" element="T1" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="2306" element="SW" value="true"/><type:DebugRuleElementMatch xmi:id="2298" sofa="1" begin="63" end="67" time="0" baseCondition="2306" conditions=""/><type:DebugRuleElementMatches xmi:id="2294" matches="2298" element="SW" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="2290" element="(SW T1){ -&gt; T2}" value="false"/><type:DebugRuleElementMatch xmi:id="2282" sofa="1" begin="63" end="67" time="0" baseCondition="2290" conditions="" elements="2294 2315"/><type:DebugRuleElementMatches xmi:id="2278" matches="2282" element="(SW T1){ -&gt; T2}" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="2247" element="T1" value="false"/><type:DebugRuleElementMatch xmi:id="2239" sofa="1" begin="0" end="0" time="0" baseCondition="2247" conditions=""/><type:DebugRuleElementMatches xmi:id="2235" matches="2239" element="T1" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="2226" element="SW" value="true"/><type:DebugRuleElementMatch xmi:id="2218" sofa="1" begin="58" end="62" time="0" baseCondition="2226" conditions=""/><type:DebugRuleElementMatches xmi:id="2214" matches="2218" element="SW" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="2210" element="(SW T1){ -&gt; T2}" value="false"/><type:DebugRuleElementMatch xmi:id="2202" sofa="1" begin="58" end="62" time="0" baseCondition="2210" conditions="" elements="2214 2235"/><type:DebugRuleElementMatches xmi:id="2198" matches="2202" element="(SW T1){ -&gt; T2}" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="2167" element="T1" value="false"/><type:DebugRuleElementMatch xmi:id="2159" sofa="1" begin="0" end="0" time="0" baseCondition="2167" conditions=""/><type:DebugRuleElementMatches xmi:id="2155" matches="2159" element="T1" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="2146" element="SW" value="true"/><type:DebugRuleElementMatch xmi:id="2138" sofa="1" begin="51" end="57" time="0" baseCondition="2146" conditions=""/><type:DebugRuleElementMatches xmi:id="2134" matches="2138" element="SW" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="2130" element="(SW T1){ -&gt; T2}" value="false"/><type:DebugRuleElementMatch xmi:id="2122" sofa="1" begin="51" end="57" time="0" baseCondition="2130" conditions="" elements="2134 2155"/><type:DebugRuleElementMatches xmi:id="2118" matches="2122" element="(SW T1){ -&gt; T2}" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="2087" element="T1" value="false"/><type:DebugRuleElementMatch xmi:id="2079" sofa="1" begin="0" end="0" time="0" baseCondition="2087" conditions=""/><type:DebugRuleElementMatches xmi:id="2075" matches="2079" element="T1" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="2066" element="SW" value="true"/><type:DebugRuleElementMatch xmi:id="2058" sofa="1" begin="47" end="50" time="0" baseCondition="2066" conditions=""/><type:DebugRuleElementMatches xmi:id="2054" matches="2058" element="SW" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="2050" element="(SW T1){ -&gt; T2}" value="false"/><type:DebugRuleElementMatch xmi:id="2042" sofa="1" begin="47" end="50" time="0" baseCondition="2050" conditions="" elements="2054 2075"/><type:DebugRuleElementMatches xmi:id="2038" matches="2042" element="(SW T1){ -&gt; T2}" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="2007" element="T1" value="false"/><type:DebugRuleElementMatch xmi:id="1999" sofa="1" begin="0" end="0" time="0" baseCondition="2007" conditions=""/><type:DebugRuleElementMatches xmi:id="1995" matches="1999" element="T1" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="1986" element="SW" value="true"/><type:DebugRuleElementMatch xmi:id="1978" sofa="1" begin="28" end="31" time="0" baseCondition="1986" conditions=""/><type:DebugRuleElementMatches xmi:id="1974" matches="1978" element="SW" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="1970" element="(SW T1){ -&gt; T2}" value="false"/><type:DebugRuleElementMatch xmi:id="1962" sofa="1" begin="28" end="31" time="0" baseCondition="1970" conditions="" elements="1974 1995"/><type:DebugRuleElementMatches xmi:id="1958" matches="1962" element="(SW T1){ -&gt; T2}" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="1927" element="T1" value="false"/><type:DebugRuleElementMatch xmi:id="1919" sofa="1" begin="0" end="0" time="0" baseCondition="1927" conditions=""/><type:DebugRuleElementMatches xmi:id="1915" matches="1919" element="T1" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="1906" element="SW" value="true"/><type:DebugRuleElementMatch xmi:id="1898" sofa="1" begin="10" end="14" time="0" baseCondition="1906" conditions=""/><type:DebugRuleElementMatches xmi:id="1894" matches="1898" element="SW" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="1890" element="(SW T1){ -&gt; T2}" value="false"/><type:DebugRuleElementMatch xmi:id="1882" sofa="1" begin="10" end="14" time="0" baseCondition="1890" conditions="" elements="1894 1915"/><type:DebugRuleElementMatches xmi:id="1878" matches="1882" element="(SW T1){ -&gt; T2}" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="1763" element="T1" value="false"/><type:DebugRuleElementMatch xmi:id="1755" sofa="1" begin="0" end="0" time="0" baseCondition="1763" conditions=""/><type:DebugRuleElementMatches xmi:id="1751" matches="1755" element="T1" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="1742" element="SW" value="true"/><type:DebugRuleElementMatch xmi:id="1734" sofa="1" begin="5" end="7" time="0" baseCondition="1742" conditions=""/><type:DebugRuleElementMatches xmi:id="1730" matches="1734" element="SW" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="1726" element="(SW T1){ -&gt; T2}" value="false"/><type:DebugRuleElementMatch xmi:id="1718" sofa="1" begin="5" end="7" time="0" baseCondition="1726" conditions="" elements="1730 1751"/><type:DebugRuleElementMatches xmi:id="1714" matches="1718" element="(SW T1){ -&gt; T2}" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="1241" element="PERIOD" value="false"/><type:DebugRuleElementMatch xmi:id="1233" sofa="1" begin="0" end="0" time="0" baseCondition="1241" conditions=""/><type:DebugRuleElementMatches xmi:id="1229" matches="1233" element="PERIOD" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="1220" element="SW" value="true"/><type:DebugRuleElementMatch xmi:id="1212" sofa="1" begin="28" end="31" time="0" baseCondition="1220" conditions=""/><type:DebugRuleElementMatches xmi:id="1208" matches="1212" element="SW" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="1204" element="(SW PERIOD){ -&gt; T1}" value="false"/><type:DebugRuleElementMatch xmi:id="1196" sofa="1" begin="28" end="31" time="0" baseCondition="1204" conditions="" elements="1208 1229"/><type:DebugRuleElementMatches xmi:id="1192" matches="1196" element="(SW PERIOD){ -&gt; T1}" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="1077" element="PERIOD" value="false"/><type:DebugRuleElementMatch xmi:id="1069" sofa="1" begin="0" end="0" time="0" baseCondition="1077" conditions=""/><type:DebugRuleElementMatches xmi:id="1065" matches="1069" element="PERIOD" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="1056" element="SW" value="true"/><type:DebugRuleElementMatch xmi:id="1048" sofa="1" begin="8" end="9" time="0" baseCondition="1056" conditions=""/><type:DebugRuleElementMatches xmi:id="1044" matches="1048" element="SW" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="1040" element="(SW PERIOD){ -&gt; T1}" value="false"/><type:DebugRuleElementMatch xmi:id="1032" sofa="1" begin="8" end="9" time="0" baseCondition="1040" conditions="" elements="1044 1065"/><type:DebugRuleElementMatches xmi:id="1028" matches="1032" element="(SW PERIOD){ -&gt; T1}" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="997" element="PERIOD" value="false"/><type:DebugRuleElementMatch xmi:id="989" sofa="1" begin="0" end="0" time="0" baseCondition="997" conditions=""/><type:DebugRuleElementMatches xmi:id="985" matches="989" element="PERIOD" ruleAnchor="false"/><type:DebugEvaluatedCondition xmi:id="976" element="SW" value="true"/><type:DebugRuleElementMatch xmi:id="968" sofa="1" begin="5" end="7" time="0" baseCondition="976" conditions=""/><type:DebugRuleElementMatches xmi:id="964" matches="968" element="SW" ruleAnchor="true"/><type:DebugEvaluatedCondition xmi:id="960" element="(SW PERIOD){ -&gt; T1}" value="false"/><type:DebugRuleElementMatch xmi:id="952" sofa="1" begin="5" end="7" time="0" baseCondition="960" conditions="" elements="964 985"/><type:DebugRuleElementMatches xmi:id="948" matches="952" element="(SW PERIOD){ -&gt; T1}" ruleAnchor="false"/><cas:View sofa="1" members="8 13 17 25 33 73 81 21 29 37 77 125 133 141 149 157 41 89 97 129 137 145 153 161 45 49 105 109 117 121 53 61 69 85 93 101 57 65 113 165 169 174 179 184 189 194 199 204 209 214 219 224 229 234 239 244 249 254 259 264 269 274 279 284 289 294 299 304 309 314 319 324 329 334 339 344 349 354 359 592 621 642 663 684 705 734 811 896 940 1020 1184 1706 1870 1950 2030 2110 2190 2270 2350 2536 2616 2696 2776 2856 2936 3016 3096 1100 1264 1348 1432 1516 1600 1786 2452 3198 3302 3353 905 3402 364 369 374 379 384 389 394 399 404 409 414 419 424 429 434 439 444 449 454 459 464 469 474 479 484 489 494 499 504 509 514 519 524 529 534 539 544 549 554 559 596 625 646 667 688 709 738 815 900"/></xmi:XMI>
\ No newline at end of file
diff --git a/example-projects/ExtensionsExample/script/uima/ruta/example/ExampleAction.ruta b/example-projects/ExtensionsExample/script/uima/ruta/example/ExampleAction.ruta
deleted file mode 100644
index 3a71c9f..0000000
--- a/example-projects/ExtensionsExample/script/uima/ruta/example/ExampleAction.ruta
+++ /dev/null
@@ -1,23 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-// 
-//   http://www.apache.org/licenses/LICENSE-2.0
-// 
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-PACKAGE uima.ruta.example;
-
-CW{ -> ExampleAction(1, 2, 3, 4, 5)} SW SW SW PERIOD;
-
-
-
diff --git a/example-projects/ExtensionsExample/script/uima/ruta/example/ExampleBlock.ruta b/example-projects/ExtensionsExample/script/uima/ruta/example/ExampleBlock.ruta
deleted file mode 100644
index c8ea10e..0000000
--- a/example-projects/ExtensionsExample/script/uima/ruta/example/ExampleBlock.ruta
+++ /dev/null
@@ -1,28 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-// 
-//   http://www.apache.org/licenses/LICENSE-2.0
-// 
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-PACKAGE uima.ruta.example;
-
-DECLARE T1, T2, T3, T4;
-
-//This is a test.
-REVERSE Document{}{
-  (CW T3){-> T4};
-  (SW T2){-> T3};
-  (SW T1){-> T2};
-  (SW PERIOD){-> T1};
-}
diff --git a/example-projects/ExtensionsExample/script/uima/ruta/example/ExampleBooleanFunction.ruta b/example-projects/ExtensionsExample/script/uima/ruta/example/ExampleBooleanFunction.ruta
deleted file mode 100644
index 1cd0c53..0000000
--- a/example-projects/ExtensionsExample/script/uima/ruta/example/ExampleBooleanFunction.ruta
+++ /dev/null
@@ -1,25 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-// 
-//   http://www.apache.org/licenses/LICENSE-2.0
-// 
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-PACKAGE uima.ruta.example;
-
-DECLARE T1, T2, T3;
-
-Document{-IF(ExampleBooleanFunction(Document)) -> MARK(T1)};
-
-
-
diff --git a/example-projects/ExtensionsExample/script/uima/ruta/example/ExampleCondition.ruta b/example-projects/ExtensionsExample/script/uima/ruta/example/ExampleCondition.ruta
deleted file mode 100644
index 07af8ad..0000000
--- a/example-projects/ExtensionsExample/script/uima/ruta/example/ExampleCondition.ruta
+++ /dev/null
@@ -1,23 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-// 
-//   http://www.apache.org/licenses/LICENSE-2.0
-// 
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-PACKAGE uima.ruta.example;
-
-
-DECLARE T1;
-(NUM (PERIOD | SPECIAL) NUM (PERIOD | SPECIAL) NUM){OR(ExampleCondition("24.02.1981", "dd.mm.yyyy"),
-     ExampleCondition("1981/02/24", "yyyy/mm/dd")) -> MARK(T1)};
\ No newline at end of file
diff --git a/example-projects/ExtensionsExample/script/uima/ruta/example/ExampleNumberFunction.ruta b/example-projects/ExtensionsExample/script/uima/ruta/example/ExampleNumberFunction.ruta
deleted file mode 100644
index 1d959cb..0000000
--- a/example-projects/ExtensionsExample/script/uima/ruta/example/ExampleNumberFunction.ruta
+++ /dev/null
@@ -1,27 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-// 
-//   http://www.apache.org/licenses/LICENSE-2.0
-// 
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-PACKAGE uima.ruta.example;
-
-DECLARE T1, T2, T3;
-
-Document{IF((ExampleNumberFunction(Document) == 4)) -> MARK(T1)};
-
-
-
-
-
diff --git a/example-projects/ExtensionsExample/script/uima/ruta/example/ExampleStringFunction.ruta b/example-projects/ExtensionsExample/script/uima/ruta/example/ExampleStringFunction.ruta
deleted file mode 100644
index 985adbb..0000000
--- a/example-projects/ExtensionsExample/script/uima/ruta/example/ExampleStringFunction.ruta
+++ /dev/null
@@ -1,28 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-// 
-//   http://www.apache.org/licenses/LICENSE-2.0
-// 
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-PACKAGE uima.ruta.example;
-
-DECLARE T1, T2, T3;
-
-CAP{REGEXP(ExampleStringFunction(CW)) ->  MARK(T1)}; 
-
-
-
-
-
-
diff --git a/example-projects/ExtensionsExample/script/uima/ruta/example/ExampleTypeFunction.ruta b/example-projects/ExtensionsExample/script/uima/ruta/example/ExampleTypeFunction.ruta
deleted file mode 100644
index e7ccac2..0000000
--- a/example-projects/ExtensionsExample/script/uima/ruta/example/ExampleTypeFunction.ruta
+++ /dev/null
@@ -1,35 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-// 
-//   http://www.apache.org/licenses/LICENSE-2.0
-// 
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-PACKAGE uima.ruta.example;
-
-DECLARE T1, T2, T3;
-
-STRING typeString;
-CAP{-> MATCHEDTEXT(typeString), MARK(ExampleTypeFunction(typeString))};
-
-ExampleTypeFunction(typeString){-> MARK(T1)};
-
-(W PERIOD W PERIOD W PERIOD W PERIOD W PERIOD CAP){-> MATCHEDTEXT(typeString), MARK(ExampleTypeFunction(typeString))};
-
-ExampleTypeFunction(typeString){-> MARK(T2)};
-
-
-
-
-
-
diff --git a/example-projects/GermanNovels/.buildpath b/example-projects/GermanNovels/.buildpath
deleted file mode 100644
index a4d0028..0000000
--- a/example-projects/GermanNovels/.buildpath
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<buildpath>
-	<buildpathentry kind="src" path="script">
-		<attributes>
-			<attribute name="ruta" value="script"/>
-		</attributes>
-	</buildpathentry>
-	<buildpathentry kind="src" path="descriptor">
-		<attributes>
-			<attribute name="ruta" value="descriptor"/>
-		</attributes>
-	</buildpathentry>
-	<buildpathentry kind="src" path="resources">
-		<attributes>
-			<attribute name="ruta" value="resources"/>
-		</attributes>
-	</buildpathentry>
-</buildpath>
diff --git a/example-projects/GermanNovels/.project b/example-projects/GermanNovels/.project
deleted file mode 100644
index c2e732d..0000000
--- a/example-projects/GermanNovels/.project
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>GermanNovels</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.dltk.core.scriptbuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.m2e.core.maven2Nature</nature>
-		<nature>org.apache.uima.ruta.ide.nature</nature>
-	</natures>
-</projectDescription>
diff --git a/example-projects/GermanNovels/LICENSE b/example-projects/GermanNovels/LICENSE
deleted file mode 100644
index d645695..0000000
--- a/example-projects/GermanNovels/LICENSE
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/example-projects/GermanNovels/NOTICE b/example-projects/GermanNovels/NOTICE
deleted file mode 100644
index 6f9e70b..0000000
--- a/example-projects/GermanNovels/NOTICE
+++ /dev/null
@@ -1,6 +0,0 @@
-Apache UIMA Ruta example project: GermanNovels
-Copyright 2006, 2014 The Apache Software Foundation
-
-This product includes content developed at
-The Apache Software Foundation (http://www.apache.org/).
-
diff --git a/example-projects/GermanNovels/README b/example-projects/GermanNovels/README
deleted file mode 100644
index b1b8389..0000000
--- a/example-projects/GermanNovels/README
+++ /dev/null
@@ -1,2 +0,0 @@
-Additionally to the instructions of the tutorial, one needs to generate the type system description of the DKPROCore types.
-This can simply be achieved by executing the main method of the class GenerateDKProCoreTypes.java 
\ No newline at end of file
diff --git a/example-projects/GermanNovels/descriptor/BasicEngine.xml b/example-projects/GermanNovels/descriptor/BasicEngine.xml
deleted file mode 100644
index 48e04b6..0000000
--- a/example-projects/GermanNovels/descriptor/BasicEngine.xml
+++ /dev/null
@@ -1,279 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-  <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-  <primitive>true</primitive>
-  <annotatorImplementationName>org.apache.uima.ruta.engine.RutaEngine</annotatorImplementationName>
-  <analysisEngineMetaData>
-    <name>BasicEngine</name>
-    <description/>
-    <version>1.0</version>
-    <vendor/>
-    <configurationParameters searchStrategy="language_fallback">
-      <configurationParameter>
-        <name>seeders</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>debug</name>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>additionalScripts</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>profile</name>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>debugWithMatches</name>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>statistics</name>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>additionalEngines</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>additionalExtensions</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>debugOnlyFor</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>scriptEncoding</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>additionalEngineLoaders</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>resourcePaths</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>defaultFilteredTypes</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>mainScript</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>scriptPaths</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>descriptorPaths</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>removeBasics</name>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>dynamicAnchoring</name>
-        <description>Activates dynamic anchoring (possible speed up).</description>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>greedyRuleElement</name>
-        <description>Activates greedy anchoring for rule elements.</description>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>greedyRule</name>
-        <description>Activates greedy anchoring for complete rules.</description>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>lowMemoryProfile</name>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>createdBy</name>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>simpleGreedyForComposed</name>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>additionalUimafitEngines</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>strictImports</name>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>varNames</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>varValues</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>rules</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-    </configurationParameters>
-    <configurationParameterSettings>
-      <nameValuePair>
-        <name>debug</name>
-        <value>
-          <boolean>false</boolean>
-        </value>
-      </nameValuePair>
-      <nameValuePair>
-        <name>profile</name>
-        <value>
-          <boolean>false</boolean>
-        </value>
-      </nameValuePair>
-      <nameValuePair>
-        <name>debugWithMatches</name>
-        <value>
-          <boolean>true</boolean>
-        </value>
-      </nameValuePair>
-      <nameValuePair>
-        <name>defaultFilteredTypes</name>
-        <value>
-          <array>
-            <string>org.apache.uima.ruta.type.SPACE</string>
-            <string>org.apache.uima.ruta.type.BREAK</string>
-            <string>org.apache.uima.ruta.type.MARKUP</string>
-          </array>
-        </value>
-      </nameValuePair>
-      <nameValuePair>
-        <name>removeBasics</name>
-        <value>
-          <boolean>false</boolean>
-        </value>
-      </nameValuePair>
-      <nameValuePair>
-        <name>seeders</name>
-        <value>
-          <array>
-            <string>org.apache.uima.ruta.seed.DefaultSeeder</string>
-          </array>
-        </value>
-      </nameValuePair>
-      <nameValuePair>
-        <name>createdBy</name>
-        <value>
-          <boolean>false</boolean>
-        </value>
-      </nameValuePair>
-    </configurationParameterSettings>
-    <typeSystemDescription>
-      <imports>
-        <import location="BasicTypeSystem.xml"/>
-      </imports>
-    </typeSystemDescription>
-    <typePriorities>
-      <priorityList>
-        <type>org.apache.uima.ruta.type.RutaFrame</type>
-        <type>uima.tcas.Annotation</type>
-        <type>org.apache.uima.ruta.type.RutaBasic</type>
-      </priorityList>
-    </typePriorities>
-    <fsIndexCollection/>
-    <capabilities>
-      <capability>
-        <inputs/>
-        <outputs/>
-        <languagesSupported/>
-      </capability>
-    </capabilities>
-    <operationalProperties>
-      <modifiesCas>true</modifiesCas>
-      <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-      <outputsNewCASes>true</outputsNewCASes>
-    </operationalProperties>
-  </analysisEngineMetaData>
-  <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/GermanNovels/descriptor/BasicTypeSystem.xml b/example-projects/GermanNovels/descriptor/BasicTypeSystem.xml
deleted file mode 100644
index 0794171..0000000
--- a/example-projects/GermanNovels/descriptor/BasicTypeSystem.xml
+++ /dev/null
@@ -1,146 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier">
-  <name>BasicTypeSystem</name>
-  <description/>
-  <version>1.0</version>
-  <vendor/>
-  <imports>
-    <import location="InternalTypeSystem.xml"/>
-  </imports>
-  <types>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.ALL</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.TokenSeed</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.ANY</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.ALL</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.MARKUP</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.ALL</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.CW</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.W</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.W</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.ANY</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.SW</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.W</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.PM</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.ANY</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.CAP</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.W</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.COLON</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.PM</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.PERIOD</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.SENTENCEEND</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.SENTENCEEND</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.PM</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.QUESTION</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.SENTENCEEND</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.COMMA</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.PM</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.EXCLAMATION</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.SENTENCEEND</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.SEMICOLON</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.PM</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.WS</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.ANY</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.NUM</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.ANY</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.SPECIAL</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.ANY</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.NBSP</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.SPACE</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.AMP</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.ANY</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.SPACE</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.WS</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.BREAK</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.WS</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.TokenSeed</name>
-      <description/>
-      <supertypeName>uima.tcas.Annotation</supertypeName>
-    </typeDescription>
-  </types>
-</typeSystemDescription>
diff --git a/example-projects/GermanNovels/descriptor/InternalTypeSystem.xml b/example-projects/GermanNovels/descriptor/InternalTypeSystem.xml
deleted file mode 100644
index 5ff5b42..0000000
--- a/example-projects/GermanNovels/descriptor/InternalTypeSystem.xml
+++ /dev/null
@@ -1,350 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-
-<typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier">
-  <name>InternalTypeSystem</name>
-  <description/>
-  <version>1.0</version>
-  <vendor/>
-  <types>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.RutaBasic</name>
-      <description/>
-      <supertypeName>uima.tcas.Annotation</supertypeName>
-      <features>
-        <featureDescription>
-          <name>replacement</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-      </features>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.RutaOptional</name>
-      <description/>
-      <supertypeName>uima.tcas.Annotation</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.RutaAnnotation</name>
-      <description/>
-      <supertypeName>uima.tcas.Annotation</supertypeName>
-      <features>
-        <featureDescription>
-          <name>score</name>
-          <description/>
-          <rangeTypeName>uima.cas.Double</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>annotation</name>
-          <description/>
-          <rangeTypeName>uima.tcas.Annotation</rangeTypeName>
-        </featureDescription>
-      </features>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.DebugRuleApply</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.DebugScriptApply</supertypeName>
-      <features>
-        <featureDescription>
-          <name>applied</name>
-          <description/>
-          <rangeTypeName>uima.cas.Integer</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>tried</name>
-          <description/>
-          <rangeTypeName>uima.cas.Integer</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>rules</name>
-          <description/>
-          <rangeTypeName>uima.cas.FSArray</rangeTypeName>
-          <elementType>org.apache.uima.ruta.type.DebugRuleMatch</elementType>
-        </featureDescription>
-        <featureDescription>
-          <name>id</name>
-          <description/>
-          <rangeTypeName>uima.cas.Integer</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>script</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-      </features>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.DebugRuleMatch</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.ProfiledAnnotation</supertypeName>
-      <features>
-        <featureDescription>
-          <name>elements</name>
-          <description/>
-          <rangeTypeName>uima.cas.FSArray</rangeTypeName>
-          <elementType>org.apache.uima.ruta.type.DebugRuleElementMatches</elementType>
-        </featureDescription>
-        <featureDescription>
-          <name>matched</name>
-          <description/>
-          <rangeTypeName>uima.cas.Boolean</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>delegates</name>
-          <description/>
-          <rangeTypeName>uima.cas.FSArray</rangeTypeName>
-          <elementType>org.apache.uima.ruta.type.DebugScriptApply</elementType>
-        </featureDescription>
-      </features>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.DebugScriptApply</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.ProfiledAnnotation</supertypeName>
-      <features>
-        <featureDescription>
-          <name>element</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-      </features>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.DebugBlockApply</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.DebugRuleApply</supertypeName>
-      <features>
-        <featureDescription>
-          <name>innerApply</name>
-          <description/>
-          <rangeTypeName>uima.cas.FSArray</rangeTypeName>
-          <elementType>org.apache.uima.ruta.type.DebugScriptApply</elementType>
-        </featureDescription>
-      </features>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.DebugRuleElementMatch</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.ProfiledAnnotation</supertypeName>
-      <features>
-        <featureDescription>
-          <name>baseCondition</name>
-          <description/>
-          <rangeTypeName>org.apache.uima.ruta.type.DebugEvaluatedCondition</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>conditions</name>
-          <description/>
-          <rangeTypeName>uima.cas.FSArray</rangeTypeName>
-          <elementType>org.apache.uima.ruta.type.DebugEvaluatedCondition</elementType>
-        </featureDescription>
-        <featureDescription>
-          <name>elements</name>
-          <description/>
-          <rangeTypeName>uima.cas.FSArray</rangeTypeName>
-          <elementType>org.apache.uima.ruta.type.DebugRuleElementMatches</elementType>
-          <multipleReferencesAllowed>false</multipleReferencesAllowed>
-        </featureDescription>
-      </features>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.DebugRuleElementMatches</name>
-      <description/>
-      <supertypeName>uima.cas.TOP</supertypeName>
-      <features>
-        <featureDescription>
-          <name>matches</name>
-          <description/>
-          <rangeTypeName>uima.cas.FSArray</rangeTypeName>
-          <elementType>org.apache.uima.ruta.type.DebugRuleElementMatch</elementType>
-        </featureDescription>
-        <featureDescription>
-          <name>element</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>ruleAnchor</name>
-          <description/>
-          <rangeTypeName>uima.cas.Boolean</rangeTypeName>
-        </featureDescription>
-      </features>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.RutaColoring</name>
-      <description/>
-      <supertypeName>uima.tcas.Annotation</supertypeName>
-      <features>
-        <featureDescription>
-          <name>bgColor</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>targetType</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>fgColor</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>selected</name>
-          <description/>
-          <rangeTypeName>uima.cas.Boolean</rangeTypeName>
-        </featureDescription>
-      </features>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.DebugEvaluatedCondition</name>
-      <description/>
-      <supertypeName>uima.cas.TOP</supertypeName>
-      <features>
-        <featureDescription>
-          <name>element</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>value</name>
-          <description/>
-          <rangeTypeName>uima.cas.Boolean</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>conditions</name>
-          <description/>
-          <rangeTypeName>uima.cas.FSArray</rangeTypeName>
-          <elementType>org.apache.uima.ruta.type.DebugEvaluatedCondition</elementType>
-        </featureDescription>
-      </features>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.DebugMatchedRuleMatch</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.DebugRuleMatch</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.DebugFailedRuleMatch</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.DebugRuleMatch</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.FalsePositive</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.EvalAnnotation</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.EvalAnnotation</name>
-      <description/>
-      <supertypeName>uima.tcas.Annotation</supertypeName>
-      <features>
-        <featureDescription>
-          <name>original</name>
-          <description/>
-          <rangeTypeName>uima.tcas.Annotation</rangeTypeName>
-        </featureDescription>
-      </features>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.FalseNegative</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.EvalAnnotation</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.ProfiledAnnotation</name>
-      <description/>
-      <supertypeName>uima.tcas.Annotation</supertypeName>
-      <features>
-        <featureDescription>
-          <name>time</name>
-          <description/>
-          <rangeTypeName>uima.cas.Long</rangeTypeName>
-        </featureDescription>
-      </features>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.RutaFrame</name>
-      <description/>
-      <supertypeName>uima.tcas.Annotation</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.Statistics</name>
-      <description/>
-      <supertypeName>uima.cas.TOP</supertypeName>
-      <features>
-        <featureDescription>
-          <name>name</name>
-          <description/>
-          <rangeTypeName>uima.cas.StringArray</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>total</name>
-          <description/>
-          <rangeTypeName>uima.cas.DoubleArray</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>amount</name>
-          <description/>
-          <rangeTypeName>uima.cas.IntegerArray</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>part</name>
-          <description/>
-          <rangeTypeName>uima.cas.DoubleArray</rangeTypeName>
-        </featureDescription>
-      </features>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.TruePositive</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.EvalAnnotation</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.DebugCreatedBy</name>
-      <description/>
-      <supertypeName>uima.cas.TOP</supertypeName>
-      <features>
-        <featureDescription>
-          <name>rule</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>annotation</name>
-          <description/>
-          <rangeTypeName>uima.tcas.Annotation</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>script</name>
-          <description/>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>id</name>
-          <description/>
-          <rangeTypeName>uima.cas.Integer</rangeTypeName>
-        </featureDescription>
-      </features>
-    </typeDescription>
-  </types>
-</typeSystemDescription>
diff --git a/example-projects/GermanNovels/descriptor/uima/ruta/example/DirectSpeechEngine.xml b/example-projects/GermanNovels/descriptor/uima/ruta/example/DirectSpeechEngine.xml
deleted file mode 100644
index 5765da1..0000000
--- a/example-projects/GermanNovels/descriptor/uima/ruta/example/DirectSpeechEngine.xml
+++ /dev/null
@@ -1,338 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-    <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-    <primitive>true</primitive>
-    <annotatorImplementationName>org.apache.uima.ruta.engine.RutaEngine</annotatorImplementationName>
-    <analysisEngineMetaData>
-        <name>uima.ruta.example.DirectSpeechEngine</name>
-        <description/>
-        <version>1.0</version>
-        <vendor/>
-        <configurationParameters searchStrategy="language_fallback">
-            <configurationParameter>
-                <name>seeders</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debug</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalScripts</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>profile</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debugWithMatches</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>statistics</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalEngines</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalExtensions</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debugOnlyFor</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>scriptEncoding</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalEngineLoaders</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>resourcePaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>defaultFilteredTypes</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>mainScript</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>scriptPaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>descriptorPaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>removeBasics</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>dynamicAnchoring</name>
-                <description>Activates dynamic anchoring (possible speed up).</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>greedyRuleElement</name>
-                <description>Activates greedy anchoring for rule elements.</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>greedyRule</name>
-                <description>Activates greedy anchoring for complete rules.</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>lowMemoryProfile</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>createdBy</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>simpleGreedyForComposed</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalUimafitEngines</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>strictImports</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>varNames</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>varValues</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>rules</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-        </configurationParameters>
-        <configurationParameterSettings>
-            <nameValuePair>
-                <name>debug</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>profile</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>debugWithMatches</name>
-                <value>
-                    <boolean>true</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>defaultFilteredTypes</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.type.SPACE</string>
-                        <string>org.apache.uima.ruta.type.BREAK</string>
-                        <string>org.apache.uima.ruta.type.MARKUP</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>removeBasics</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>seeders</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.seed.DefaultSeeder</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>createdBy</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>mainScript</name>
-                <value>
-                    <string>uima.ruta.example.DirectSpeech</string>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>scriptPaths</name>
-                <value>
-                    <array>
-                        <string>C:/work/ws/ws-uima-ruta-plain/ruta-trunk/example-projects/GermanNovels/script</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>descriptorPaths</name>
-                <value>
-                    <array>
-                        <string>C:/work/ws/ws-uima-ruta-plain/ruta-trunk/example-projects/GermanNovels/descriptor</string>
-                        <string>C:/work/ws/ws-uima-ruta-plain/ruta-trunk/example-projects/GermanNovels/target/classes</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>resourcePaths</name>
-                <value>
-                    <array>
-                        <string>C:/work/ws/ws-uima-ruta-plain/ruta-trunk/example-projects/GermanNovels/target/classes</string>
-                        <string>C:/work/ws/ws-uima-ruta-plain/ruta-trunk/example-projects/GermanNovels/resources</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalScripts</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalEngines</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalUimafitEngines</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalExtensions</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.string.bool.BooleanOperationsExtension</string>
-                        <string>org.apache.uima.ruta.string.StringOperationsExtension</string>
-                        <string>org.apache.uima.ruta.block.OnlyFirstBlockExtension</string>
-                        <string>org.apache.uima.ruta.block.OnlyOnceBlockExtension</string>
-                        <string>org.apache.uima.ruta.block.fst.FSTBlockExtension</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalEngineLoaders</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-        </configurationParameterSettings>
-        <typeSystemDescription>
-            <imports>
-                <import location="DirectSpeechTypeSystem.xml"/>
-            </imports>
-        </typeSystemDescription>
-        <typePriorities>
-            <priorityList>
-                <type>org.apache.uima.ruta.type.RutaFrame</type>
-                <type>uima.tcas.Annotation</type>
-                <type>org.apache.uima.ruta.type.RutaBasic</type>
-            </priorityList>
-        </typePriorities>
-        <fsIndexCollection/>
-        <capabilities>
-            <capability>
-                <inputs/>
-                <outputs/>
-                <languagesSupported/>
-            </capability>
-            <capability>
-                <inputs>
-                    <type>uima.ruta.example.DirectSpeech.DirectSpeech</type>
-                </inputs>
-                <outputs>
-                    <type>uima.ruta.example.DirectSpeech.DirectSpeech</type>
-                </outputs>
-                <languagesSupported/>
-            </capability>
-        </capabilities>
-        <operationalProperties>
-            <modifiesCas>true</modifiesCas>
-            <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-            <outputsNewCASes>true</outputsNewCASes>
-        </operationalProperties>
-    </analysisEngineMetaData>
-    <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/GermanNovels/descriptor/uima/ruta/example/DirectSpeechTypeSystem.xml b/example-projects/GermanNovels/descriptor/uima/ruta/example/DirectSpeechTypeSystem.xml
deleted file mode 100644
index 56211eb..0000000
--- a/example-projects/GermanNovels/descriptor/uima/ruta/example/DirectSpeechTypeSystem.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier">
-    <name>uima.ruta.example.DirectSpeechTypeSystem</name>
-    <imports>
-        <import location="../../../BasicTypeSystem.xml"/>
-    </imports>
-    <types>
-        <typeDescription>
-            <name>uima.ruta.example.DirectSpeech.DirectSpeech</name>
-            <description>Type defined in uima.ruta.example.DirectSpeech</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-    </types>
-</typeSystemDescription>
diff --git a/example-projects/GermanNovels/descriptor/uima/ruta/example/MainEngine.xml b/example-projects/GermanNovels/descriptor/uima/ruta/example/MainEngine.xml
deleted file mode 100644
index 3f989d8..0000000
--- a/example-projects/GermanNovels/descriptor/uima/ruta/example/MainEngine.xml
+++ /dev/null
@@ -1,334 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-    <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-    <primitive>true</primitive>
-    <annotatorImplementationName>org.apache.uima.ruta.engine.RutaEngine</annotatorImplementationName>
-    <analysisEngineMetaData>
-        <name>uima.ruta.example.MainEngine</name>
-        <description/>
-        <version>1.0</version>
-        <vendor/>
-        <configurationParameters searchStrategy="language_fallback">
-            <configurationParameter>
-                <name>seeders</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debug</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalScripts</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>profile</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debugWithMatches</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>statistics</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalEngines</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalExtensions</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debugOnlyFor</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>scriptEncoding</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalEngineLoaders</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>resourcePaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>defaultFilteredTypes</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>mainScript</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>scriptPaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>descriptorPaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>removeBasics</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>dynamicAnchoring</name>
-                <description>Activates dynamic anchoring (possible speed up).</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>greedyRuleElement</name>
-                <description>Activates greedy anchoring for rule elements.</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>greedyRule</name>
-                <description>Activates greedy anchoring for complete rules.</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>lowMemoryProfile</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>createdBy</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>simpleGreedyForComposed</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalUimafitEngines</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>strictImports</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>varNames</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>varValues</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>rules</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-        </configurationParameters>
-        <configurationParameterSettings>
-            <nameValuePair>
-                <name>debug</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>profile</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>debugWithMatches</name>
-                <value>
-                    <boolean>true</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>defaultFilteredTypes</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.type.SPACE</string>
-                        <string>org.apache.uima.ruta.type.BREAK</string>
-                        <string>org.apache.uima.ruta.type.MARKUP</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>removeBasics</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>seeders</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.seed.DefaultSeeder</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>createdBy</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>mainScript</name>
-                <value>
-                    <string>uima.ruta.example.Main</string>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>scriptPaths</name>
-                <value>
-                    <array>
-                        <string>C:/work/ws/ws-uima-ruta-plain/ruta-trunk/example-projects/GermanNovels/script</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>descriptorPaths</name>
-                <value>
-                    <array>
-                        <string>C:/work/ws/ws-uima-ruta-plain/ruta-trunk/example-projects/GermanNovels/descriptor</string>
-                        <string>C:/work/ws/ws-uima-ruta-plain/ruta-trunk/example-projects/GermanNovels/target/classes</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>resourcePaths</name>
-                <value>
-                    <array>
-                        <string>C:/work/ws/ws-uima-ruta-plain/ruta-trunk/example-projects/GermanNovels/target/classes</string>
-                        <string>C:/work/ws/ws-uima-ruta-plain/ruta-trunk/example-projects/GermanNovels/resources</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalScripts</name>
-                <value>
-                    <array>
-                        <string>uima.ruta.example.Name</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalEngines</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalUimafitEngines</name>
-                <value>
-                    <array>
-                        <string>de.tudarmstadt.ukp.dkpro.core.stanfordnlp.StanfordSegmenter</string>
-                        <string>de.tudarmstadt.ukp.dkpro.core.treetagger.TreeTaggerPosLemmaTT4J</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalExtensions</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.string.bool.BooleanOperationsExtension</string>
-                        <string>org.apache.uima.ruta.string.StringOperationsExtension</string>
-                        <string>org.apache.uima.ruta.block.OnlyFirstBlockExtension</string>
-                        <string>org.apache.uima.ruta.block.OnlyOnceBlockExtension</string>
-                        <string>org.apache.uima.ruta.block.fst.FSTBlockExtension</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalEngineLoaders</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-        </configurationParameterSettings>
-        <typeSystemDescription>
-            <imports>
-                <import location="MainTypeSystem.xml"/>
-            </imports>
-        </typeSystemDescription>
-        <typePriorities>
-            <priorityList>
-                <type>org.apache.uima.ruta.type.RutaFrame</type>
-                <type>uima.tcas.Annotation</type>
-                <type>org.apache.uima.ruta.type.RutaBasic</type>
-            </priorityList>
-        </typePriorities>
-        <fsIndexCollection/>
-        <capabilities>
-            <capability>
-                <inputs/>
-                <outputs/>
-                <languagesSupported/>
-            </capability>
-        </capabilities>
-        <operationalProperties>
-            <modifiesCas>true</modifiesCas>
-            <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-            <outputsNewCASes>true</outputsNewCASes>
-        </operationalProperties>
-    </analysisEngineMetaData>
-    <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/GermanNovels/descriptor/uima/ruta/example/MainTypeSystem.xml b/example-projects/GermanNovels/descriptor/uima/ruta/example/MainTypeSystem.xml
deleted file mode 100644
index db6fc7a..0000000
--- a/example-projects/GermanNovels/descriptor/uima/ruta/example/MainTypeSystem.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier">
-    <name>uima.ruta.example.MainTypeSystem</name>
-    <imports>
-        <import location="../../../BasicTypeSystem.xml"/>
-        <import location="../../../GeneratedDKProCoreTypes.xml"/>
-        <import location="NameTypeSystem.xml"/>
-    </imports>
-</typeSystemDescription>
diff --git a/example-projects/GermanNovels/descriptor/uima/ruta/example/NameEngine.xml b/example-projects/GermanNovels/descriptor/uima/ruta/example/NameEngine.xml
deleted file mode 100644
index 5b060bd..0000000
--- a/example-projects/GermanNovels/descriptor/uima/ruta/example/NameEngine.xml
+++ /dev/null
@@ -1,362 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-    <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-    <primitive>true</primitive>
-    <annotatorImplementationName>org.apache.uima.ruta.engine.RutaEngine</annotatorImplementationName>
-    <analysisEngineMetaData>
-        <name>uima.ruta.example.NameEngine</name>
-        <description/>
-        <version>1.0</version>
-        <vendor/>
-        <configurationParameters searchStrategy="language_fallback">
-            <configurationParameter>
-                <name>seeders</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debug</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalScripts</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>profile</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debugWithMatches</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>statistics</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalEngines</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalExtensions</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>debugOnlyFor</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>scriptEncoding</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalEngineLoaders</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>resourcePaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>defaultFilteredTypes</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>mainScript</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>scriptPaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>descriptorPaths</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>removeBasics</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>dynamicAnchoring</name>
-                <description>Activates dynamic anchoring (possible speed up).</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>greedyRuleElement</name>
-                <description>Activates greedy anchoring for rule elements.</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>greedyRule</name>
-                <description>Activates greedy anchoring for complete rules.</description>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>lowMemoryProfile</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>createdBy</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>simpleGreedyForComposed</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>additionalUimafitEngines</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>strictImports</name>
-                <type>Boolean</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>varNames</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>varValues</name>
-                <type>String</type>
-                <multiValued>true</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-            <configurationParameter>
-                <name>rules</name>
-                <type>String</type>
-                <multiValued>false</multiValued>
-                <mandatory>false</mandatory>
-            </configurationParameter>
-        </configurationParameters>
-        <configurationParameterSettings>
-            <nameValuePair>
-                <name>debug</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>profile</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>debugWithMatches</name>
-                <value>
-                    <boolean>true</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>defaultFilteredTypes</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.type.SPACE</string>
-                        <string>org.apache.uima.ruta.type.BREAK</string>
-                        <string>org.apache.uima.ruta.type.MARKUP</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>removeBasics</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>seeders</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.seed.DefaultSeeder</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>createdBy</name>
-                <value>
-                    <boolean>false</boolean>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>mainScript</name>
-                <value>
-                    <string>uima.ruta.example.Name</string>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>scriptPaths</name>
-                <value>
-                    <array>
-                        <string>C:/work/ws/ws-uima-ruta-plain/ruta-trunk/example-projects/GermanNovels/script</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>descriptorPaths</name>
-                <value>
-                    <array>
-                        <string>C:/work/ws/ws-uima-ruta-plain/ruta-trunk/example-projects/GermanNovels/descriptor</string>
-                        <string>C:/work/ws/ws-uima-ruta-plain/ruta-trunk/example-projects/GermanNovels/target/classes</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>resourcePaths</name>
-                <value>
-                    <array>
-                        <string>C:/work/ws/ws-uima-ruta-plain/ruta-trunk/example-projects/GermanNovels/target/classes</string>
-                        <string>C:/work/ws/ws-uima-ruta-plain/ruta-trunk/example-projects/GermanNovels/resources</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalScripts</name>
-                <value>
-                    <array>
-                        <string>uima.ruta.example.DirectSpeech</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalEngines</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalUimafitEngines</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalExtensions</name>
-                <value>
-                    <array>
-                        <string>org.apache.uima.ruta.string.bool.BooleanOperationsExtension</string>
-                        <string>org.apache.uima.ruta.string.StringOperationsExtension</string>
-                        <string>org.apache.uima.ruta.block.OnlyFirstBlockExtension</string>
-                        <string>org.apache.uima.ruta.block.OnlyOnceBlockExtension</string>
-                        <string>org.apache.uima.ruta.block.fst.FSTBlockExtension</string>
-                    </array>
-                </value>
-            </nameValuePair>
-            <nameValuePair>
-                <name>additionalEngineLoaders</name>
-                <value>
-                    <array/>
-                </value>
-            </nameValuePair>
-        </configurationParameterSettings>
-        <typeSystemDescription>
-            <imports>
-                <import location="NameTypeSystem.xml"/>
-            </imports>
-        </typeSystemDescription>
-        <typePriorities>
-            <priorityList>
-                <type>org.apache.uima.ruta.type.RutaFrame</type>
-                <type>uima.tcas.Annotation</type>
-                <type>org.apache.uima.ruta.type.RutaBasic</type>
-            </priorityList>
-        </typePriorities>
-        <fsIndexCollection/>
-        <capabilities>
-            <capability>
-                <inputs/>
-                <outputs/>
-                <languagesSupported/>
-            </capability>
-            <capability>
-                <inputs>
-                    <type>uima.ruta.example.Name.PersName</type>
-                    <type>uima.ruta.example.Name.AddName</type>
-                    <type>uima.ruta.example.Name.FirstName</type>
-                    <type>uima.ruta.example.Name.LastName</type>
-                    <type>uima.ruta.example.Name.AnAnimal</type>
-                    <type>uima.ruta.example.Name.RelativesTitle</type>
-                    <type>uima.ruta.example.Name.GeneralTitle</type>
-                    <type>uima.ruta.example.Name.MilitaryTitle</type>
-                    <type>uima.ruta.example.Name.NobleTitle</type>
-                    <type>uima.ruta.example.Name.Job</type>
-                    <type>uima.ruta.example.Name.BodyPart</type>
-                    <type>uima.ruta.example.Name.IMPhrase</type>
-                </inputs>
-                <outputs>
-                    <type>uima.ruta.example.Name.PersName</type>
-                    <type>uima.ruta.example.Name.AddName</type>
-                    <type>uima.ruta.example.Name.FirstName</type>
-                    <type>uima.ruta.example.Name.LastName</type>
-                    <type>uima.ruta.example.Name.AnAnimal</type>
-                    <type>uima.ruta.example.Name.RelativesTitle</type>
-                    <type>uima.ruta.example.Name.GeneralTitle</type>
-                    <type>uima.ruta.example.Name.MilitaryTitle</type>
-                    <type>uima.ruta.example.Name.NobleTitle</type>
-                    <type>uima.ruta.example.Name.Job</type>
-                    <type>uima.ruta.example.Name.BodyPart</type>
-                    <type>uima.ruta.example.Name.IMPhrase</type>
-                </outputs>
-                <languagesSupported/>
-            </capability>
-        </capabilities>
-        <operationalProperties>
-            <modifiesCas>true</modifiesCas>
-            <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-            <outputsNewCASes>true</outputsNewCASes>
-        </operationalProperties>
-    </analysisEngineMetaData>
-    <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/GermanNovels/descriptor/uima/ruta/example/NameTypeSystem.xml b/example-projects/GermanNovels/descriptor/uima/ruta/example/NameTypeSystem.xml
deleted file mode 100644
index e689431..0000000
--- a/example-projects/GermanNovels/descriptor/uima/ruta/example/NameTypeSystem.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier">
-    <name>uima.ruta.example.NameTypeSystem</name>
-    <imports>
-        <import location="../../../BasicTypeSystem.xml"/>
-        <import location="../../../GeneratedDKProCoreTypes.xml"/>
-        <import location="DirectSpeechTypeSystem.xml"/>
-    </imports>
-    <types>
-        <typeDescription>
-            <name>uima.ruta.example.Name.AnAnimal</name>
-            <description>Type defined in uima.ruta.example.Name</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-        <typeDescription>
-            <name>uima.ruta.example.Name.IMPhrase</name>
-            <description>Type defined in uima.ruta.example.Name</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-        <typeDescription>
-            <name>uima.ruta.example.Name.FirstName</name>
-            <description>Type defined in uima.ruta.example.Name</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-        <typeDescription>
-            <name>uima.ruta.example.Name.BodyPart</name>
-            <description>Type defined in uima.ruta.example.Name</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-        <typeDescription>
-            <name>uima.ruta.example.Name.LastName</name>
-            <description>Type defined in uima.ruta.example.Name</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-        <typeDescription>
-            <name>uima.ruta.example.Name.GeneralTitle</name>
-            <description>Type defined in uima.ruta.example.Name</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-        <typeDescription>
-            <name>uima.ruta.example.Name.RelativesTitle</name>
-            <description>Type defined in uima.ruta.example.Name</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-        <typeDescription>
-            <name>uima.ruta.example.Name.Job</name>
-            <description>Type defined in uima.ruta.example.Name</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-        <typeDescription>
-            <name>uima.ruta.example.Name.PersName</name>
-            <description>Type defined in uima.ruta.example.Name</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-        <typeDescription>
-            <name>uima.ruta.example.Name.NobleTitle</name>
-            <description>Type defined in uima.ruta.example.Name</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-        <typeDescription>
-            <name>uima.ruta.example.Name.AddName</name>
-            <description>Type defined in uima.ruta.example.Name</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-        <typeDescription>
-            <name>uima.ruta.example.Name.MilitaryTitle</name>
-            <description>Type defined in uima.ruta.example.Name</description>
-            <supertypeName>uima.tcas.Annotation</supertypeName>
-        </typeDescription>
-    </types>
-</typeSystemDescription>
diff --git a/example-projects/GermanNovels/descriptor/utils/AnnotationWriter.xml b/example-projects/GermanNovels/descriptor/utils/AnnotationWriter.xml
deleted file mode 100644
index a404fd9..0000000
--- a/example-projects/GermanNovels/descriptor/utils/AnnotationWriter.xml
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-  <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-  <primitive>true</primitive>
-  <annotatorImplementationName>org.apache.uima.ruta.engine.AnnotationWriter</annotatorImplementationName>
-  <analysisEngineMetaData>
-    <name>ReferenceSectionWriterDescriptor</name>
-    <description/>
-    <version>1.0</version>
-    <vendor/>
-    <configurationParameters>
-      <configurationParameter>
-        <name>Output</name>
-        <description>Location where the annotation is stored</description>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>true</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>Encoding</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>Type</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>true</mandatory>
-      </configurationParameter>
-    </configurationParameters>
-    <configurationParameterSettings>
-      <nameValuePair>
-        <name>Output</name>
-        <value>
-          <string>/../output/</string>
-        </value>
-      </nameValuePair>
-      <nameValuePair>
-        <name>Type</name>
-        <value>
-          <string>uima.tcas.DocumentAnnotation</string>
-        </value>
-      </nameValuePair>
-      <nameValuePair>
-        <name>Encoding</name>
-        <value>
-          <string>UTF-8</string>
-        </value>
-      </nameValuePair>
-    </configurationParameterSettings>
-    <typeSystemDescription/>
-    <typePriorities/>
-    <fsIndexCollection/>
-    <capabilities>
-      <capability>
-        <inputs/>
-        <outputs/>
-        <languagesSupported/>
-      </capability>
-    </capabilities>
-    <operationalProperties>
-      <modifiesCas>true</modifiesCas>
-      <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-      <outputsNewCASes>false</outputsNewCASes>
-    </operationalProperties>
-  </analysisEngineMetaData>
-  <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/GermanNovels/descriptor/utils/Cutter.xml b/example-projects/GermanNovels/descriptor/utils/Cutter.xml
deleted file mode 100644
index a0543b7..0000000
--- a/example-projects/GermanNovels/descriptor/utils/Cutter.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-  <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-  <primitive>true</primitive>
-  <annotatorImplementationName>org.apache.uima.ruta.engine.RutaCutter</annotatorImplementationName>
-  <analysisEngineMetaData>
-    <name>XMLConverter</name>
-    <description/>
-    <version>1.0</version>
-    <vendor/>
-    <configurationParameters>
-      <configurationParameter>
-        <name>outputView</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>inputView</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>keep</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-    </configurationParameters>
-    <configurationParameterSettings/>
-    <typeSystemDescription/>
-    <typePriorities/>
-    <fsIndexCollection/>
-    <capabilities>
-      <capability>
-        <inputs/>
-        <outputs/>
-        <languagesSupported/>
-      </capability>
-    </capabilities>
-    <operationalProperties>
-      <modifiesCas>true</modifiesCas>
-      <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-      <outputsNewCASes>false</outputsNewCASes>
-    </operationalProperties>
-  </analysisEngineMetaData>
-  <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/GermanNovels/descriptor/utils/HtmlAnnotator.xml b/example-projects/GermanNovels/descriptor/utils/HtmlAnnotator.xml
deleted file mode 100644
index f9ec9f4..0000000
--- a/example-projects/GermanNovels/descriptor/utils/HtmlAnnotator.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-  <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-  <primitive>true</primitive>
-  <annotatorImplementationName>org.apache.uima.ruta.engine.HtmlAnnotator</annotatorImplementationName>
-  <analysisEngineMetaData>
-    <name>PlainTextAnnotator</name>
-    <description/>
-    <version>1.0</version>
-    <vendor/>
-    <configurationParameters>
-      <configurationParameter>
-        <name>onlyContent</name>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-    </configurationParameters>
-    <configurationParameterSettings>
-      <nameValuePair>
-        <name>onlyContent</name>
-        <value>
-          <boolean>true</boolean>
-        </value>
-      </nameValuePair>
-    </configurationParameterSettings>
-    <typeSystemDescription>
-      <imports>
-        <import location="HtmlTypeSystem.xml"/>
-      </imports>
-    </typeSystemDescription>
-    <typePriorities/>
-    <fsIndexCollection/>
-    <capabilities>
-      <capability>
-        <inputs/>
-        <outputs/>
-        <languagesSupported/>
-      </capability>
-    </capabilities>
-    <operationalProperties>
-      <modifiesCas>true</modifiesCas>
-      <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-      <outputsNewCASes>false</outputsNewCASes>
-    </operationalProperties>
-  </analysisEngineMetaData>
-  <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/GermanNovels/descriptor/utils/HtmlConverter.xml b/example-projects/GermanNovels/descriptor/utils/HtmlConverter.xml
deleted file mode 100644
index 59859b8..0000000
--- a/example-projects/GermanNovels/descriptor/utils/HtmlConverter.xml
+++ /dev/null
@@ -1,124 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-  <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-  <primitive>true</primitive>
-  <annotatorImplementationName>org.apache.uima.ruta.engine.HtmlConverter</annotatorImplementationName>
-  <analysisEngineMetaData>
-    <name>XMLConverter</name>
-    <description/>
-    <version>1.0</version>
-    <vendor/>
-    <configurationParameters>
-      <configurationParameter>
-        <name>outputView</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>newlineInducingTags</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>newlineInducingTagRegExp</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>replaceLinebreaks</name>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>linebreakReplacement</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>inputView</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>conversionPolicy</name>
-        <description>Either heuristic, explicit, or none.
-Defaults to heuristic.</description>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>conversionPatterns</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>conversionReplacements</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-    <configurationParameter>
-        <name>skipWhitespaces</name>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-    <configurationParameter>
-        <name>processAll</name>
-        <type>Boolean</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-    </configurationParameters>
-    <configurationParameterSettings>
-      <nameValuePair>
-        <name>skipWhitespaces</name>
-        <value>
-          <boolean>true</boolean>
-        </value>
-      </nameValuePair>
-    </configurationParameterSettings>
-    <typeSystemDescription/>
-    <typePriorities/>
-    <fsIndexCollection/>
-    <capabilities>
-      <capability>
-        <inputs/>
-        <outputs/>
-        <languagesSupported/>
-      </capability>
-    </capabilities>
-    <operationalProperties>
-      <modifiesCas>true</modifiesCas>
-      <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-      <outputsNewCASes>false</outputsNewCASes>
-    </operationalProperties>
-  </analysisEngineMetaData>
-  <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/GermanNovels/descriptor/utils/HtmlTypeSystem.xml b/example-projects/GermanNovels/descriptor/utils/HtmlTypeSystem.xml
deleted file mode 100644
index f88b4ab..0000000
--- a/example-projects/GermanNovels/descriptor/utils/HtmlTypeSystem.xml
+++ /dev/null
@@ -1,259 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-
-<typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier">
-  <name>typeSystemDescriptor</name>
-  <description/>
-  <version>1.0</version>
-  <vendor/>
-  <types>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.TAG</name>
-      <description></description>
-      <supertypeName>uima.tcas.Annotation</supertypeName>
-      <features>
-        <featureDescription>
-          <name>name</name>
-          <description></description>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>expandedOffsets</name>
-          <description></description>
-          <rangeTypeName>uima.cas.Boolean</rangeTypeName>
-        </featureDescription>
-        <featureDescription>
-          <name>attributeName</name>
-          <description></description>
-          <rangeTypeName>uima.cas.StringArray</rangeTypeName>
-          <multipleReferencesAllowed>false</multipleReferencesAllowed>
-        </featureDescription>
-        <featureDescription>
-          <name>attributeValue</name>
-          <description/>
-          <rangeTypeName>uima.cas.StringArray</rangeTypeName>
-          <multipleReferencesAllowed>false</multipleReferencesAllowed>
-        </featureDescription>
-      </features>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.B</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.H1</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.H2</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.H3</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.H4</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.H5</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.H6</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.COMMENT</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.TITLE</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.I</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.U</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.BIG</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.SMALL</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.FONT</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.A</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.HEAD</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.HTML</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.BODY</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.EM</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.TABLE</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.DIV</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.SPAN</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.UL</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.OL</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.P</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.LI</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.TBODY</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.TD</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.TR</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.TH</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.IMG</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.STYLE</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.SCRIPT</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.LINK</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.INPUT</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.FORM</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.META</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.BR</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.html.REMARK</name>
-      <description></description>
-      <supertypeName>org.apache.uima.ruta.type.html.TAG</supertypeName>
-      <features>
-        <featureDescription>
-          <name>comment</name>
-          <description></description>
-          <rangeTypeName>uima.cas.String</rangeTypeName>
-        </featureDescription>
-      </features>
-    </typeDescription>
-  </types>
-</typeSystemDescription>
diff --git a/example-projects/GermanNovels/descriptor/utils/Modifier.xml b/example-projects/GermanNovels/descriptor/utils/Modifier.xml
deleted file mode 100644
index c3d40d0..0000000
--- a/example-projects/GermanNovels/descriptor/utils/Modifier.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-  <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-  <primitive>true</primitive>
-  <annotatorImplementationName>org.apache.uima.ruta.engine.RutaModifier</annotatorImplementationName>
-  <analysisEngineMetaData>
-    <name>Modifier</name>
-    <description/>
-    <version>1.0</version>
-    <vendor/>
-    <configurationParameters>
-      <configurationParameter>
-        <name>styleMap</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>descriptorPaths</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>outputLocation</name>
-        <description></description>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>outputView</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-    </configurationParameters>
-    <configurationParameterSettings>
-      <nameValuePair>
-        <name>outputView</name>
-        <value>
-          <string>modified</string>
-        </value>
-      </nameValuePair>
-    </configurationParameterSettings>
-    <typeSystemDescription/>
-    <typePriorities/>
-    <fsIndexCollection/>
-    <capabilities>
-      <capability>
-        <inputs/>
-        <outputs/>
-        <outputSofas>
-          <sofaName>modified</sofaName>
-        </outputSofas>
-        <languagesSupported/>
-      </capability>
-    </capabilities>
-    <operationalProperties>
-      <modifiesCas>true</modifiesCas>
-      <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-      <outputsNewCASes>false</outputsNewCASes>
-    </operationalProperties>
-  </analysisEngineMetaData>
-  <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/GermanNovels/descriptor/utils/PlainTextAnnotator.xml b/example-projects/GermanNovels/descriptor/utils/PlainTextAnnotator.xml
deleted file mode 100644
index 7ea5a72..0000000
--- a/example-projects/GermanNovels/descriptor/utils/PlainTextAnnotator.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-  <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-  <primitive>true</primitive>
-  <annotatorImplementationName>org.apache.uima.ruta.engine.PlainTextAnnotator</annotatorImplementationName>
-  <analysisEngineMetaData>
-    <name>PlainTextAnnotator</name>
-    <description/>
-    <version>1.0</version>
-    <vendor/>
-    <configurationParameters/>
-    <configurationParameterSettings/>
-    <typeSystemDescription>
-      <imports>
-        <import location="PlainTextTypeSystem.xml"/>
-      </imports>
-    </typeSystemDescription>
-    <typePriorities/>
-    <fsIndexCollection/>
-    <capabilities>
-      <capability>
-        <inputs/>
-        <outputs/>
-        <languagesSupported/>
-      </capability>
-    </capabilities>
-    <operationalProperties>
-      <modifiesCas>true</modifiesCas>
-      <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-      <outputsNewCASes>false</outputsNewCASes>
-    </operationalProperties>
-  </analysisEngineMetaData>
-  <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/GermanNovels/descriptor/utils/PlainTextTypeSystem.xml b/example-projects/GermanNovels/descriptor/utils/PlainTextTypeSystem.xml
deleted file mode 100644
index 17b579c..0000000
--- a/example-projects/GermanNovels/descriptor/utils/PlainTextTypeSystem.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier">
-  <name>PlainTextTypeSystem</name>
-  <description/>
-  <version>1.0</version>
-  <vendor/>
-  <types>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.Line</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.AnyLine</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.Paragraph</name>
-      <description/>
-      <supertypeName>uima.tcas.Annotation</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.WSLine</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.EmptyLine</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.EmptyLine</name>
-      <description/>
-      <supertypeName>org.apache.uima.ruta.type.AnyLine</supertypeName>
-    </typeDescription>
-    <typeDescription>
-      <name>org.apache.uima.ruta.type.AnyLine</name>
-      <description/>
-      <supertypeName>uima.tcas.Annotation</supertypeName>
-    </typeDescription>
-  </types>
-</typeSystemDescription>
diff --git a/example-projects/GermanNovels/descriptor/utils/SourceDocumentInformation.xml b/example-projects/GermanNovels/descriptor/utils/SourceDocumentInformation.xml
deleted file mode 100644
index 8322d25..0000000
--- a/example-projects/GermanNovels/descriptor/utils/SourceDocumentInformation.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-   
-<typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier">
-	<name>org.apache.uima.examples.SourceDocumentInformation</name>
-	<description>Defines a type for storing information about the original source document from which the current CAS was initialized</description>
-	<version>1.0</version>
-	<vendor>The Apache Software Foundation</vendor>
-	<types>
-		<typeDescription>
-			<name>org.apache.uima.examples.SourceDocumentInformation</name>
-			<description>Stores detailed information about the original source document from which the current CAS was initialized. All information (like size) refers to the source document and not to the document in the CAS which may be converted and filtered by a CAS Initializer. For example this information will be written to the Semantic Search index so that the original document contents can be retrieved by queries.</description>
-			<supertypeName>uima.tcas.Annotation</supertypeName>
-			<features>
-				<featureDescription>
-					<name>uri</name>
-					<description>URI of document. (For example, file:///MyDirectory/myFile.txt for a simple file or http://incubator.apache.org/uima/index.html for content from a web source.)</description>
-					<rangeTypeName>uima.cas.String</rangeTypeName>
-				</featureDescription>
-				<featureDescription>
-					<name>offsetInSource</name>
-					<description>Byte offset of the start of document content within original source file or other input source. Only used if the CAS document was retrieved from an source where one physical source file contained several conceptual documents. Zero otherwise.</description>
-					<rangeTypeName>uima.cas.Integer</rangeTypeName>
-				</featureDescription>
-				<featureDescription>
-					<name>documentSize</name>
-					<description>Size of original document in bytes before processing by CAS Initializer. Either absolute file size of size within file or other source.</description>
-					<rangeTypeName>uima.cas.Integer</rangeTypeName>
-				</featureDescription>
-				<featureDescription>
-				  <name>lastSegment</name>
-				  <description>For a CAS that represents a segment of a larger source document, this flag indicates whether this CAS is the final segment of the source document.  This is useful for downstream components that want to take some action after having seen all of the segments of a particular source document. </description>
-			      <rangeTypeName>uima.cas.Boolean</rangeTypeName>
-			    </featureDescription>				
-			</features>
-		</typeDescription>
-	</types>
-</typeSystemDescription>
diff --git a/example-projects/GermanNovels/descriptor/utils/StyleMapCreator.xml b/example-projects/GermanNovels/descriptor/utils/StyleMapCreator.xml
deleted file mode 100644
index 43f1b5c..0000000
--- a/example-projects/GermanNovels/descriptor/utils/StyleMapCreator.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-  <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-  <primitive>true</primitive>
-  <annotatorImplementationName>org.apache.uima.ruta.engine.StyleMapCreator</annotatorImplementationName>
-  <analysisEngineMetaData>
-    <name>ReferenceSectionWriterDescriptor</name>
-    <description/>
-    <version>1.0</version>
-    <vendor/>
-    <configurationParameters>
-      <configurationParameter>
-        <name>descriptorPaths</name>
-        <type>String</type>
-        <multiValued>true</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>styleMap</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-    </configurationParameters>
-    <configurationParameterSettings/>
-    <typeSystemDescription/>
-    <typePriorities/>
-    <fsIndexCollection/>
-    <capabilities>
-      <capability>
-        <inputs/>
-        <outputs/>
-        <languagesSupported/>
-      </capability>
-    </capabilities>
-    <operationalProperties>
-      <modifiesCas>true</modifiesCas>
-      <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-      <outputsNewCASes>false</outputsNewCASes>
-    </operationalProperties>
-  </analysisEngineMetaData>
-  <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/GermanNovels/descriptor/utils/ViewWriter.xml b/example-projects/GermanNovels/descriptor/utils/ViewWriter.xml
deleted file mode 100644
index 2b3b472..0000000
--- a/example-projects/GermanNovels/descriptor/utils/ViewWriter.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-  <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-  <primitive>true</primitive>
-  <annotatorImplementationName>org.apache.uima.ruta.engine.ViewWriter</annotatorImplementationName>
-  <analysisEngineMetaData>
-    <name>XMLConverter</name>
-    <description/>
-    <version>1.0</version>
-    <vendor/>
-    <configurationParameters>
-      <configurationParameter>
-        <name>outputView</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>inputView</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-      <configurationParameter>
-        <name>output</name>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>false</mandatory>
-      </configurationParameter>
-    </configurationParameters>
-    <configurationParameterSettings/>
-    <typeSystemDescription/>
-    <typePriorities/>
-    <fsIndexCollection/>
-    <capabilities>
-      <capability>
-        <inputs/>
-        <outputs/>
-        <languagesSupported/>
-      </capability>
-    </capabilities>
-    <operationalProperties>
-      <modifiesCas>true</modifiesCas>
-      <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-      <outputsNewCASes>true</outputsNewCASes>
-    </operationalProperties>
-  </analysisEngineMetaData>
-  <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/GermanNovels/descriptor/utils/XMIWriter.xml b/example-projects/GermanNovels/descriptor/utils/XMIWriter.xml
deleted file mode 100644
index 9aafb29..0000000
--- a/example-projects/GermanNovels/descriptor/utils/XMIWriter.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-
-<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
-  <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
-  <primitive>true</primitive>
-  <annotatorImplementationName>org.apache.uima.ruta.engine.XMIWriter</annotatorImplementationName>
-  <analysisEngineMetaData>
-    <name>ReferenceSectionWriterDescriptor</name>
-    <description/>
-    <version>1.0</version>
-    <vendor/>
-    <configurationParameters>
-      <configurationParameter>
-        <name>Output</name>
-        <description>Location where the xmi is stored</description>
-        <type>String</type>
-        <multiValued>false</multiValued>
-        <mandatory>true</mandatory>
-      </configurationParameter>
-    </configurationParameters>
-    <configurationParameterSettings>
-      <nameValuePair>
-        <name>Output</name>
-        <value>
-          <string>/../output/</string>
-        </value>
-      </nameValuePair>
-    </configurationParameterSettings>
-    <typeSystemDescription/>
-    <typePriorities/>
-    <fsIndexCollection/>
-    <capabilities>
-      <capability>
-        <inputs/>
-        <outputs/>
-        <languagesSupported/>
-      </capability>
-    </capabilities>
-    <operationalProperties>
-      <modifiesCas>true</modifiesCas>
-      <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
-      <outputsNewCASes>false</outputsNewCASes>
-    </operationalProperties>
-  </analysisEngineMetaData>
-  <resourceManagerConfiguration/>
-</analysisEngineDescription>
diff --git a/example-projects/GermanNovels/pom.xml b/example-projects/GermanNovels/pom.xml
deleted file mode 100644
index 4d6b822..0000000
--- a/example-projects/GermanNovels/pom.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   Licensed to the Apache Software Foundation (ASF) under one
-   or more contributor license agreements.  See the NOTICE file
-   distributed with this work for additional information
-   regarding copyright ownership.  The ASF licenses this file
-   to you under the Apache License, Version 2.0 (the
-   "License"); you may not use this file except in compliance
-   with the License.  You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing,
-   software distributed under the License is distributed on an
-   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-   KIND, either express or implied.  See the License for the
-   specific language governing permissions and limitations
-   under the License.    
--->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<groupId>org.apache.uima</groupId>
-	<artifactId>ruta-example-german-novels</artifactId>
-	<version>0.0.1-SNAPSHOT</version>
-	<dependencies>
-		<dependency>
-			<groupId>de.tudarmstadt.ukp.dkpro.core</groupId>
-			<artifactId>de.tudarmstadt.ukp.dkpro.core.treetagger-asl</artifactId>
-			<version>1.5.0</version>
-		</dependency>
-		<dependency>
-			<groupId>de.tudarmstadt.ukp.dkpro.core</groupId>
-			<artifactId>de.tudarmstadt.ukp.dkpro.core.stanfordnlp-gpl</artifactId>
-			<version>1.5.0</version>
-		</dependency>
-	</dependencies>
-	<repositories>
-		<repository>
-			<id>ukp-oss-model-releases</id>
-			<url>http://zoidberg.ukp.informatik.tu-darmstadt.de/artifactory/public-model-releases-local</url>
-			<snapshots>
-				<enabled>false</enabled>
-			</snapshots>
-		</repository>
-	</repositories>
-</project>
\ No newline at end of file
diff --git a/example-projects/GermanNovels/resources/Animals.txt b/example-projects/GermanNovels/resources/Animals.txt
deleted file mode 100644
index cf3324f..0000000
--- a/example-projects/GermanNovels/resources/Animals.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-Hase
-Hase
-Hund
-Hündin
-Kaninchen
-Kater
-Katze
-Maus
-Papagei
-Wellensittich
-Vogel
\ No newline at end of file
diff --git a/example-projects/GermanNovels/resources/FirstNames.txt b/example-projects/GermanNovels/resources/FirstNames.txt
deleted file mode 100644
index 9025ed9..0000000
--- a/example-projects/GermanNovels/resources/FirstNames.txt
+++ /dev/null
@@ -1,13293 +0,0 @@
-﻿Aaron
-Aaron
-Abraham
-Achi
-Achim
-Adalbert
-Adalberta
-Adalia
-Adam
-Adama
-Adelbert
-Adele
-Adelfried
-Adelgard
-Adelgund
-Adelgunde
-Adelhaid
-Adelheid
-Adelheit
-Adelia
-Adelina
-Adelinde
-Adeline
-Adelmar
-Adeltraud
-Adi
-Adolf
-Adrian
-Adriana
-Adriane
-Adrianna
-Adrianne
-Adriano
-Adrianus
-Afanasi
-Afanasy
-Aganeta
-Agata
-Agate
-Agatha
-Agathe
-Agnes
-Agnetha
-Agnis
-Agustin
-Agustina
-Aharon
-Ahlbert
-Ahlrich
-Aida
-Aila
-Alain
-Alan
-Alba
-Albert
-Alberta
-Albertina
-Albertine
-Albrecht
-Aldina
-Aldine
-Alea
-Aleksandar
-Aleksander
-Aleksandra
-Alena
-Alenka
-Alessandra
-Alessandro
-Alex
-Alexa
-Alexander
-Alexandra
-Alf
-Alfons
-Alfred
-Alfrid
-Alfried
-Alida
-Alma
-Almida
-Almin
-Alois
-Altfried
-Amadeus
-Amanda
-Amber
-Ameli
-Amelia
-Amin
-Amina
-Amir
-Ana
-Anabel
-Anastasia
-Anca
-Andi
-Andre
-Andrea
-Andreas
-Andrejewitsch
-Aneliese
-Anellise
-Anemarie
-Anette
-Angela
-Angelica
-Angelika
-Angelina
-Angeline
-Angelique
-Angelita
-Angi
-Angie
-Angrid
-Anica
-Anika
-Anissa
-Anita
-Anja
-Anka
-Anke
-Anken
-Ann
-Anna
-Annabel
-Annabell
-Annabelle
-Annagret
-Annalies
-Annaliese
-Annalisa
-Annalise
-Annamari
-Annamaria
-Annamarie
-Anne
-Annegret
-Annegrete
-Annekathrin
-Annekatrin
-Anneli
-Annelie
-Annelies
-Anneliese
-Annelis
-Annelise
-Annelore
-Annelotte
-Annemargreth
-Annemari
-Annemarie
-Annemie
-Annemone
-Annerose
-Annet
-Annete
-Annett
-Annetta
-Annette
-Anngret
-Anngrit
-Annhild
-Anni
-Annica
-Annick
-Annie
-Annik
-Annika
-Annina
-Annita
-Annja
-Annlies
-Ansfried
-Ansgar
-Antchen
-Anthia
-Anthonia
-Anthonius
-Anthony
-Antia
-Antina
-Antine
-Antje
-Antke
-Anton
-Antonette
-Antonia
-Antonietta
-Antoniette
-Antonina
-Antonios
-Antonius
-Antony
-Anya
-Anyka
-Arabella
-Arabelle
-Araceli
-Arend
-Arendt
-Arent
-Ari
-Ariana
-Ariane
-Arianna
-Arianne
-Ariel
-Ariela
-Armanda
-Armando
-Armelia
-Armgard
-Armin
-Armina
-Arnd
-Arndt
-Arne
-Arner
-Arnfred
-Arnfrid
-Arnfried
-Arnhild
-Arnhold
-Arni
-Arnica
-Arnika
-Arno
-Arnold
-Arnost
-Arnsgar
-Arnt
-Aron
-Arthur
-Artur
-Arvid
-Astrid
-August
-Augusta
-Auguste
-Augustin
-Augustina
-Augustine
-Augustinus
-Aurelia
-Aurelian
-Austin
-Axel
-Ayda
-Baat
-Baba
-Babaca
-Babayigit
-Babet
-Babett
-Babetta
-Babette
-Babioch
-Babo
-Babs
-Bacaksiz
-Bacik
-Back
-Backa
-Badia
-Badiye
-Baerbel
-Bagajeta
-Bagdat
-Baha
-Bahaddin
-Bahadir
-Bahaeddin
-Bahar
-Bahattin
-Bahir
-Bahmann
-Bahne
-Bahram
-Bahri
-Bahriye
-Bahsi
-Bahtijar
-Bahtiyar
-Bajran
-Bajrovic
-Bakal
-Baki
-Bakir
-Bakirhan
-Bakiye
-Bakkal
-Bala
-Balaban
-Balabey
-Balbina
-Baldassare
-Baldo
-Baldovino
-Balduin
-Baldur
-Bali
-Balic
-Balint
-Balki
-Balta
-Baltasar
-Baltes
-Balthasar
-Balz
-Balzer
-Bani
-Bano
-Banu
-Baptist
-Bara
-Barak
-Baratali
-Barb
-Barbara
-Barbaros
-Barber
-Barbera
-Barbi
-Barblin
-Barbra
-Bard
-Bardo
-Bardolf
-Barend
-Baria
-Barije
-Barin
-Baris
-Bark
-Barlam
-Barlas
-Barna
-Barnabas
-Barnie
-Barnim
-Barry
-Barsaum
-Barsovm
-Bart
-Bartel
-Barth
-Barthel
-Bartho
-Barthold
-Bartholomeus
-Bartolo
-Bartolome
-Bartolomeo
-Barzan
-Bas
-Basak
-Basal
-Basar
-Basaran
-Basat
-Bascha
-Baschir
-Basharat
-Bashir
-Basia
-Basil
-Basile
-Basilio
-Basilius
-Basim
-Basir
-Baskurt
-Basri
-Bassam
-Bassem
-Basso
-Bastian
-Bati
-Battal
-Battista
-Batu
-Bauke
-Bavaria
-Bayar
-Bayat
-Baybars
-Baycan
-Baynam
-Bayrak
-Bayram
-Bayran
-Baysal
-Bazil
-Bea
-Beat
-Beata
-Beate
-Beatric
-Beatrice
-Beatrix
-Beatrixe
-Beatriz
-Beauty
-Bebe
-Bechthold
-Becirovic
-Beck
-Becky
-Beda
-Bede
-Bedi
-Bedia
-Bedii
-Bedir
-Bedirhan
-Bedja
-Bedrettin
-Bedri
-Bedriye
-Bedzet
-Beek
-Beganovic
-Begi
-Begic
-Begonia
-Begzada
-Behcet
-Behice
-Behiye
-Behnam
-Behnan
-Behram
-Behrend
-Behrija
-Behrooz
-Behrouz
-Behzat
-Beier
-Bejtula
-Bejtush
-Bekdemir
-Beker
-Beki
-Bekir
-Bektas
-Bel
-Bela
-Bele
-Belen
-Belesoglu
-Belgien
-Belgin
-Belgizar
-Belinda
-Belkis
-Bella
-Belle
-Belma
-Belsin
-Ben
-Benaissa
-Benamar
-Bendix
-Bendrick
-Benedetta
-Benedetto
-Benedick
-Benedict
-Benedicta
-Benedictus
-Benedik
-Benedikt
-Benedikta
-Benedikte
-Benedykt
-Bengt
-Bengu
-Beniamino
-Benigno
-Benina
-Benita
-Benito
-Benjamin
-Benjamina
-Benli
-Benne
-Bennet
-Benni
-Benno
-Benny
-Benon
-Benoni
-Benson
-Bent
-Bente
-Benthe
-Bentz
-Benyebka
-Benz
-Beppo
-Ber
-Berardo
-Berat
-Berbane
-Berbel
-Berbert
-Berc
-Bercin
-Berd
-Bereket
-Bereli
-Beren
-Berend
-Berendina
-Berendine
-Berendje
-Berenike
-Bergisa
-Bergit
-Berhard
-Berin
-Beringer
-Berit
-Berkan
-Berkant
-Berkel
-Berkras
-Berlind
-Berlinde
-Berna
-Bernabe
-Bernadette
-Bernadina
-Bernadine
-Bernard
-Bernarda
-Bernardine
-Bernardino
-Bernardo
-Bernardus
-Bernat
-Bernd
-Berndm
-Berndt
-Bernfried
-Bernhadine
-Bernhard
-Bernhardiene
-Bernhardin
-Bernhardine
-Bernhardt
-Bernhild
-Bernhilde
-Bernhold
-Berni
-Bernis
-Bernita
-Berno
-Bernold
-Bernt
-Bernward
-Bero
-Berold
-Berry
-Bersa
-Bert
-Berta
-Bertan
-Berte
-Bertel
-Berth
-Bertha
-Berthe
-Berthild
-Berthilde
-Berthold
-Berti
-Bertil
-Bertild
-Bertin
-Bertina
-Bertine
-Bertino
-Bertl
-Bertold
-Bertolt
-Bertram
-Bertrand
-Bertus
-Bertwin
-Berty
-Beryl
-Beryll
-Besa
-Beser
-Besim
-Besime
-Besimi
-Besir
-Besje
-Bessy
-Bestami
-Beta
-Beth
-Bethany
-Bethel
-Bethesda
-Bethleem
-Beti
-Betin
-Betina
-Bettal
-Betti
-Bettina
-Bettine
-Betty
-Betz
-Beujconin
-Beuno
-Bevyll
-Beyer
-Beyhan
-Beytullah
-Bia
-Biagio
-Bianca
-Bianco
-Bianka
-Bibi
-Bibiana
-Bibiane
-Bicon
-Bie
-Biem
-Biggi
-Bijan
-Bike
-Bilal
-Bilant
-Bilen
-Bilge
-Bilger
-Bilgi
-Bilgin
-Bilginer
-Bilha
-Bilhan
-Biljana
-Bill
-Bille
-Billie
-Billy
-Bilsen
-Binali
-Binat
-Bing
-Binia
-Binja
-Binnaz
-Binno
-Bino
-Binyamin
-Bircan
-Birdal
-Birga
-Birge
-Birger
-Birgid
-Birgit
-Birgita
-Birgitt
-Birgitta
-Birgitte
-Birgul
-Birigit
-Birk
-Birka
-Birke
-Birkhild
-Birko
-Birol
-Birsel
-Birsen
-Birte
-Birthe
-Bisar
-Biserka
-Bisrat
-Bital
-Biyilki
-Bjarne
-Bjoern
-Björn
-Blanca
-Blanco
-Blanda
-Blandina
-Blandine
-Blank
-Blanka
-Blas
-Blasius
-Blazej
-Blekic
-Bliek
-Boa
-Boas
-Bob
-Bobbie
-Bobby
-Bode
-Bodia
-Bodil
-Bodo
-Bogdan
-Bogislav
-Bogomir
-Bogos
-Bogumil
-Bogumila
-Boguslaw
-Bohattin
-Bohdan
-Bohn
-Boi
-Boika
-Bojan
-Bojana
-Boje
-Bojric
-Bojung
-Bolat
-Boleslaw
-Bolkan
-Bolko
-Bolten
-Bon
-Bona
-Bondraham
-Boniface
-Bonifacio
-Bonita
-Bonke
-Bora
-Boran
-Borchard
-Borg
-Borges
-Borghild
-Borgitta
-Boris
-Borislav
-Bork
-Born
-Borris
-Bort
-Bortolomej
-Bosal
-Bosiljka
-Bosse
-Bostijan
-Bote
-Botho
-Boto
-Bouden
-Boudjemaa
-Bouhadou
-Boulkine
-Boumaftah
-Boussouf
-Bouziri
-Boy
-Boydas
-Boye
-Bozali
-Bozam
-Bozdemir
-Bozena
-Bozkurt
-Bozkus
-Bozo
-Braco
-Brad
-Bradley
-Branca
-Branco
-Branislav
-Branka
-Branko
-Braun
-Brecht
-Bredo
-Bregitta
-Brenda
-Brgitte
-Brian
-Brice
-Brieta
-Briga
-Brigid
-Brigida
-Brigit
-Brigite
-Brigitt
-Brigitta
-Brigitte
-Brigitteg
-Brik
-Brinkman
-Brit
-Brita
-Britt
-Britta
-Brix
-Broder
-Broer
-Bronislaus
-Bronislaw
-Bronislawa
-Brown
-Bruce
-Bruina
-Brun
-Bruna
-Brune
-Brunetto
-Brunhild
-Brunhilde
-Brunhilt
-Bruni
-Bruno
-Brunold
-Bryan
-Bryce
-Brygida
-Brynja
-Buck
-Budak
-Budolf
-Buelent
-Buhak
-Buijs
-Bukowsli
-Bulent
-Bully
-Bulut
-Burak
-Buran
-Burchard
-Burckhard
-Burckhardt
-Bureau
-Burg
-Burga
-Burgel
-Burger
-Burghard
-Burghardt
-Burghart
-Burghild
-Burgl
-Burglind
-Burglinde
-Burgunda
-Burgunde
-Burhan
-Burhanettin
-Burhard
-Burk
-Burkard
-Burkardt
-Burke
-Burkhard
-Burkhardt
-Burkhart
-Busra
-Busso
-But
-Byron
-Bärbel
-Bärbl
-Cabar
-Cabbor
-Cabir
-Cabuk
-Cacal
-Caecilia
-Caecilie
-Caesar
-Cafer
-Cagatay
-Caglar
-Caglayan
-Cahide
-Cahil
-Cahir
-Cahit
-Cai
-Cain
-Caius
-Cajetan
-Cakar
-Cakat
-Cakin
-Cakir
-Cakmak
-Calagero
-Calamon
-Calice
-California
-Calik
-Calin
-Calla
-Calli
-Calman
-Calogera
-Calogero
-Calvina
-Cam
-Camal
-Camci
-Camdzic
-Camelia
-Camer
-Camiel
-Camil
-Camila
-Camill
-Camilla
-Camille
-Camillo
-Camilo
-Campo
-Can
-Canaka
-Canan
-Canay
-Canbay
-Candan
-Candar
-Candemir
-Candide
-Candido
-Candlemir
-Candy
-Cane
-Caner
-Canio
-Cankoy
-Cansel
-Canseven
-Cansu
-Capan
-Capelja
-Capraz
-Caprice
-Cara
-Cardia
-Cardoso
-Carel
-Caren
-Caret
-Carin
-Carina
-Carine
-Carl
-Carla
-Carlh
-Carlo
-Carlos
-Carlota
-Carlote
-Carlotta
-Carls
-Carlton
-Carman
-Carmela
-Carmelia
-Carmelina
-Carmelo
-Carmen
-Carmine
-Carol
-Carola
-Carole
-Carolin
-Carolina
-Caroline
-Carolus
-Carolyn
-Carrol
-Carry
-Carsta
-Carsten
-Carstens
-Cary
-Casilda
-Casimir
-Casimiro
-Caspar
-Cassandra
-Cassian
-Cassius
-Castillejo
-Casto
-Castro
-Cataldo
-Catalina
-Catarina
-Catello
-Catena
-Caterina
-Catharina
-Catharine
-Catherina
-Catherine
-Cathleen
-Cathrin
-Cathrine
-Cathy
-Cati
-Catin
-Catinka
-Catja
-Catrin
-Catrina
-Caty
-Cavat
-Cavidan
-Cavit
-Cavus
-Cay
-Cayo
-Cazim
-Cazip
-Cebe
-Cebrail
-Cecil
-Cecile
-Cecilia
-Cecilie
-Cecilio
-Cecylia
-Cedide
-Cedrick
-Cefin
-Cekic
-Celai
-Celal
-Celalettin
-Celali
-Celattin
-Celebi
-Celenk
-Celeste
-Celestin
-Celestina
-Celestine
-Celestino
-Celia
-Celie
-Celik
-Celiktas
-Celil
-Celina
-Celine
-Celio
-Celso
-Cem
-Cemal
-Cemalettin
-Cemil
-Cemile
-Cenan
-Cenap
-Cengez
-Cengis
-Cengiz
-Cengizhan
-Cengrz
-Cennet
-Centa
-Cenzia
-Cerat
-Cerdet
-Ceril
-Cerit
-Cerkez
-Cernile
-Cerstin
-Cesar
-Cesare
-Cesareo
-Cesario
-Cesim
-Cetal
-Cetin
-Cetinkaya
-Cettina
-Ceudet
-Cevahir
-Cevat
-Cevdat
-Cevdet
-Cevher
-Cevik
-Ceyda
-Ceyhan
-Ceyla
-Ceylan
-Ceynal
-Cezar
-Cezary
-Cezmi
-Chad
-Chadhry
-Chaib
-Chaim
-Cham
-Chamiran
-Chamsiddin
-Chana
-Chander
-Chandra
-Chantal
-Charalabos
-Charalambos
-Charalampos
-Chariklia
-Charilaos
-Charis
-Charistel
-Charitas
-Charito
-Chariton
-Charity
-Charlene
-Charles
-Charlette
-Charli
-Charlie
-Charlott
-Charlotte
-Charly
-Chaudhry
-Chaya
-Cheander
-Cherima
-Cherine
-Cheryl
-Chiara
-Chien
-Chihab
-Chima
-Chleo
-Chris
-Chrisostomos
-Chrissi
-Chrissoula
-Christa
-Christal
-Christanta
-Christel
-Christelle
-Christer
-Christfried
-Christhart
-Christia
-Christiaan
-Christian
-Christiana
-Christiane
-Christiene
-Christilan
-Christin
-Christina
-Christine
-Christioph
-Christjan
-Christl
-Christmann
-Christo
-Christof
-Christofer
-Christoff
-Christoffer
-Christofoor
-Christoph
-Christophe
-Christopher
-Christore
-Christos
-Christov
-Christus
-Christy
-Chrstian
-Chrstoph
-Chrysostomos
-Ciadem
-Cicek
-Ciceron
-Cicmir
-Cidik
-Cigdem
-Ciggieri
-Cigtem
-Cihan
-Cihanger
-Cihangir
-Cihangiv
-Cihani
-Cihat
-Cikla
-Cilem
-Cilli
-Cilly
-Cimen
-Cinar
-Cindo
-Cindy
-Cingil
-Cinna
-Cino
-Cinthia
-Cinzia
-Ciprian
-Cipriano
-Cira
-Ciray
-Circi
-Circis
-Ciria
-Ciriaki
-Ciril
-Cirillo
-Cirino
-Ciro
-Cisse
-Cissy
-Cita
-Civan
-Civildak
-Claas
-Claes
-Clair
-Claire
-Clara
-Clare
-Clarissa
-Clark
-Clas
-Clau
-Claude
-Claudette
-Claudia
-Claudine
-Claudio
-Claudius
-Claus
-Clauspeter
-Clea
-Clelia
-Clemen
-Clemens
-Clement
-Clemente
-Clementina
-Clementine
-Cleo
-Cliff
-Clifford
-Clifton
-Clint
-Clinton
-Clio
-Clirim
-Clito
-Clive
-Clivia
-Clodoaldo
-Clorinda
-Clothilde
-Clovis
-Clyde
-Coban
-Cobus
-Cohen
-Colak
-Coleta
-Coletta
-Colette
-Colin
-Collart
-Collin
-Colman
-Colo
-Colomba
-Colombo
-Comchita
-Comfort
-Community
-Como
-Concepcion
-Concetta
-Concettina
-Concetto
-Concha
-Conchita
-Connection
-Conni
-Connie
-Conny
-Cono
-Conon
-Conrad
-Conrada
-Consiglio
-Consolata
-Constance
-Constant
-Constante
-Constantin
-Constantina
-Constantine
-Constantino
-Constantinos
-Constantinus
-Constanza
-Constanze
-Consuelo
-Coob
-Coos
-Cora
-Coralie
-Corc
-Cord
-Cordelia
-Cordula
-Corena
-Corey
-Corina
-Corinna
-Corinne
-Corinto
-Cornel
-Cornelia
-Cornelie
-Cornelis
-Cornelius
-Cornell
-Cornella
-Cornna
-Corny
-Corona
-Corrado
-Corrie
-Corry
-Corso
-Corvin
-Cosar
-Cosima
-Cosimo
-Cosio
-Coskum
-Coskun
-Cosmas
-Cosme
-Cosmea
-Cosmo
-Cosqun
-Costa
-Costante
-Costantino
-Costanza
-Courtney
-Coustantin
-Craig
-Creszentia
-Crispino
-Cristiana
-Cristina
-Cristine
-Cristobal
-Cristos
-Crocifissa
-Crysanthos
-Csaba
-Csilla
-Cubana
-Cudi
-Cuffaro
-Cuma
-Cumali
-Cumhur
-Cuno
-Cura
-Curd
-Curia
-Curt
-Curtis
-Cynthia
-Cyprian
-Cyria
-Cyriakus
-Cyril
-Cyrill
-Cyrus
-Czeslaw
-Czeslawa
-Dado
-Dafni
-Dag
-Daghan
-Dagistan
-Dagmar
-Dagmara
-Dagmer
-Dagmunde
-Dagna
-Dagnie
-Dagny
-Dagobert
-Dahho
-Dahlia
-Daia
-Daimond
-Daisy
-Dajana
-Dale
-Dali
-Dalia
-Dalibor
-Dalila
-Dalipi
-Daller
-Damar
-Damara
-Damaris
-Damasus
-Damian
-Damiano
-Damianos
-Damjan
-Dan
-Dana
-Danah
-Dane
-Danela
-Danelo
-Danho
-Dani
-Dania
-Danica
-Daniel
-Daniela
-Daniele
-Daniella
-Danielle
-Danijela
-Danila
-Danilo
-Danis
-Danja
-Danjana
-Danka
-Dankert
-Dankha
-Dankmar
-Danko
-Dankward
-Dankwart
-Danlahiri
-Dannie
-Danny
-Dante
-Danuet
-Danut
-Danuta
-Dany
-Daoud
-Daphne
-Darala
-Dare
-Dari
-Daria
-Darinka
-Dario
-Daris
-Darius
-Dariusch
-Dariusz
-Dariuá
-Darja
-Darko
-Darnell
-Darrell
-Darren
-Darwin
-Dary
-Darya
-Daryan
-Dascha
-Dasikan
-Daud
-Daut
-Dave
-Daver
-David
-Davide
-Davis
-Davud
-Davut
-Dawid
-Dawn
-Day
-Daya
-Dayana
-Dea
-Dean
-Deane
-Debby
-Debora
-Deborah
-Dede
-Dedo
-Deen
-Degenhard
-Degenhardt
-Degenhart
-Dehar
-Deia
-Deik
-Deirdre
-Dejan
-Delan
-Delbert
-Deli
-Delia
-Delice
-Delius
-Della
-Delphina
-Delphine
-Delta
-Demeke
-Demet
-Demeter
-Demetri
-Demetrius
-Demir
-Demiran
-Demiray
-Demirbag
-Demircan
-Demirci
-Demirel
-Demirezen
-Demirhan
-Demirkaya
-Demirkol
-Demirok
-Demirova
-Demirtas
-Denho
-Denis
-Denise
-Deniz
-Denni
-Dennie
-Dennis
-Denny
-Dennys
-Derakhshan
-Derckina
-Dere
-Derek
-Deri
-Derick
-Derk
-Dern
-Dernis
-Derrick
-Derrik
-Dervis
-Derya
-Des
-Desiderio
-Desiree
-Desmond
-Despina
-Dessenderius
-Detert
-Dethard
-Dethart
-Dethlef
-Detlef
-Detlev
-Detmar
-Detta
-Dette
-Detthold
-Dettmar
-Dettmer
-Dev
-Devlet
-Devrim
-Dexter
-Deze
-Dezider
-Dhia
-Dia
-Diagio
-Diamantis
-Diana
-Diane
-Dianne
-Diaz
-Diba
-Dick
-Dickson
-Dicky
-Diddo
-Didier
-Dido
-Diederich
-Diederike
-Diedrich
-Diego
-Diel
-Diem
-Diemo
-Diemut
-Dierk
-Dieta
-Dietbert
-Dietburg
-Dieter
-Dieterfritz
-Dietfried
-Dietgard
-Dietger
-Diethard
-Diethardt
-Dietheim
-Diethelm
-Diether
-Diethild
-Dietlind
-Dietlinde
-Dietloff
-Dietmar
-Dietolf
-Dietrich
-Dietsch
-Dietwald
-Dietward
-Dietwart
-Dietz
-Dieudonne
-Diez
-Digna
-Dijana
-Dik
-Dika
-Diken
-Dikran
-Diktas
-Diku
-Dilahni
-Dilaver
-Dilber
-Dildar
-Dilek
-Dilmac
-Dilsad
-Dilyar
-Dimas
-Dimitra
-Dimitri
-Dimitrij
-Dimitrije
-Dimitrios
-Dimitrius
-Dimitros
-Dimo
-Dimosthenis
-Dina
-Dinah
-Dinc
-Dincer
-Dine
-Dingeman
-Dini
-Dino
-Diogenes
-Diogenis
-Dion
-Dionigi
-Dionisia
-Dionisio
-Dionisios
-Dionys
-Dionysius
-Dirawi
-Dirck
-Dirdane
-Dirk
-Disa
-Dita
-Ditha
-Ditmar
-Ditta
-Ditte
-Dittmar
-Dittmer
-Diva
-Diyap
-Djahangir
-Djalal
-Djamchid
-Djarad
-Djavad
-Djawad
-Djordje
-Djura
-Djurdja
-Dlavid
-Dmitri
-Dobrila
-Dodo
-Doerte
-Doerthe
-Dogan
-Dogru
-Dogum
-Doina
-Dolf
-Doll
-Dolores
-Dolu
-Domenic
-Domenica
-Domenico
-Domenik
-Domenika
-Domenique
-Domicio
-Domingo
-Domingos
-Domini
-Dominic
-Dominica
-Dominicus
-Dominik
-Dominika
-Dominike
-Dominikus
-Dominique
-Domitila
-Domna
-Domnio
-Don
-Dona
-Donald
-Donaldo
-Donar
-Donat
-Donata
-Donatella
-Donatien
-Donato
-Donatus
-Dondu
-Dong
-Donia
-Donica
-Doniela
-Donka
-Donkor
-Donna
-Donovan
-Dook
-Doortje
-Dora
-Dorcas
-Dordie
-Dore
-Doreen
-Dorel
-Dorett
-Dorette
-Dori
-Doriana
-Dorina
-Dorinda
-Doris
-Dorit
-Dorita
-Dorith
-Dorkas
-Dorle
-Dorli
-Dorly
-Doro
-Dorota
-Dorothe
-Dorothea
-Dorotheal
-Dorothee
-Dorothy
-Dorrit
-Dorte
-Dorthe
-Dorthea
-Doski
-Doug
-Douglas
-Doxakis
-Doza
-Draga
-Dragan
-Dragana
-Dragi
-Dragica
-Draginja
-Drago
-Dragojla
-Dragoliub
-Dragoljub
-Dragomir
-Dragutin
-Drahsan
-Dre
-Dres
-Dresel
-Drew
-Driek
-Drik
-Dris
-Driss
-Droste
-Druda
-Dtlef
-Duane
-Dubravka
-Duc
-Dude
-Dudu
-Dueter
-Dula
-Dulce
-Duman
-Dumat
-Duncan
-Dunia
-Dunja
-Durak
-Dural
-Durali
-Duran
-Durbaba
-Durck
-Durdu
-Durhan
-Duri
-Durkadi
-Durkadin
-Durmus
-Duro
-Dursum
-Dursun
-Duru
-Duruk
-Durun
-Dusan
-Dusanca
-Dusanka
-Dusic
-Dusica
-Dutmus
-Duygu
-Duzali
-Dwayne
-Dzeladin
-Dzemail
-Dzemil
-Dzevada
-Dzevat
-Dzhfer
-Earl
-Ebba
-Ebben
-Ebbi
-Ebenezer
-Eberard
-Eberhard
-Eberhardine
-Eberhardt
-Eberhart
-Ebert
-Ebke
-Ebo
-Ebrahim
-Ebru
-Ecaterina
-Ece
-Ecevit
-Echard
-Ecif
-Eck
-Eckanrd
-Eckard
-Eckardt
-Eckart
-Eckbert
-Eckehard
-Eckehardt
-Eckehart
-Eckert
-Eckhard
-Eckhardt
-Eckhart
-Eckwin
-Ed
-Eda
-Edbert
-Edburg
-Edda
-Eddi
-Eddie
-Eddine
-Eddo
-Eddy
-Edel
-Edelbert
-Edelburg
-Edelburga
-Edelfried
-Edelgard
-Edelgart
-Edelhard
-Edelret
-Edelt
-Edeltraud
-Edeltraut
-Edeltrud
-Edeltrude
-Eden
-Eder
-Edesio
-Edgar
-Edgard
-Edgardo
-Edhem
-Edi
-Edial
-Edibe
-Edigna
-Edin
-Edina
-Edinhard
-Edip
-Edis
-Edit
-Edita
-Edite
-Edith
-Editha
-Ediz
-Edla
-Edlef
-Edlin
-Edltraud
-Edmar
-Edmond
-Edmund
-Edmunda
-Edmundo
-Edna
-Ednail
-Ednan
-Edo
-Edoard
-Edoardo
-Edouard
-Edris
-Edser
-Eduard
-Eduarda
-Eduardo
-Eduart
-Edvard
-Edwald
-Edward
-Edwi
-Edwin
-Edwina
-Edwine
-Edy
-Edyta
-Edzard
-Eeltje
-Een
-Eero
-Efdal
-Efe
-Efend
-Efendi
-Effi
-Effrim
-Efim
-Efisio
-Efkan
-Eflatun
-Efnim
-Efrail
-Efraim
-Efram
-Efrem
-Efrim
-Efsal
-Efstathios
-Efstatios
-Efstratia
-Efstratios
-Efthimios
-Eftimia
-Egbert
-Ege
-Eggert
-Eggo
-Eghbal
-Egid
-Egidio
-Egidius
-Egilmez
-Egils
-Egin
-Eginhard
-Egino
-Egli
-Egloff
-Egmont
-Egmund
-Egner
-Egolf
-Egon
-Egor
-Ehi
-Ehlert
-Ehmad
-Ehrem
-Ehrenfried
-Ehrenhard
-Ehrenreich
-Ehrentraud
-Ehrentraut
-Ehrfried
-Ehrgott
-Ehrhard
-Ehrhardt
-Ehrig
-Ehsan
-Eibe
-Eibo
-Eichhorn
-Eicke
-Eid
-Eida
-Eide
-Eifried
-Eija
-Eik
-Eika
-Eike
-Eiko
-Eildert
-Eileen
-Eilene
-Eiler
-Eilert
-Eilhard
-Eilika
-Eimo
-Einar
-Einert
-Einhard
-Einhart
-Eirich
-Eirwen
-Eisa
-Eisen
-Eitel
-Eith
-Eithel
-Ejaz
-Ejdar
-Eka
-Ekaterina
-Ekaterini
-Ekber
-Eke
-Eken
-Eker
-Ekhard
-Ekim
-Ekin
-Ekip
-Ekkard
-Ekke
-Ekkehard
-Ekkehart
-Ekkerhard
-Ekkhart
-Ekmel
-Ekmer
-Eko
-Ekrem
-Eksi
-El
-Eladio
-Elaine
-Elard
-Elayne
-Elbe
-Elbin
-Elbisa
-Elborg
-Elbustu
-Elci
-Eldert
-Eldib
-Eldon
-Eldor
-Eldora
-Ele
-Eleanor
-Eleanora
-Elef
-Elefriede
-Elefterios
-Eleftherios
-Elein
-Elek
-Elemer
-Elen
-Elena
-Elene
-Eleni
-Elenore
-Eleonora
-Eleonore
-Eleuterio
-Elevtherios
-Elfanne
-Elfe
-Elfi
-Elfie
-Elfrede
-Elfride
-Elfried
-Elfriede
-Elfrun
-Elga
-Elgard
-Elgin
-Elgrin
-Elham
-Elhamad
-Eli
-Elia
-Elian
-Eliana
-Eliane
-Elias
-Elibertus
-Elida
-Elie
-Eliesabeth
-Eliese
-Elif
-Eligio
-Eligius
-Elijah
-Elika
-Elimar
-Elin
-Elina
-Elinor
-Elinore
-Elio
-Elionore
-Eliot
-Elis
-Elisa
-Elisab
-Elisabeah
-Elisabet
-Elisabeth
-Elisabetha
-Elisabethe
-Elisabetta
-Elisama
-Elisaweta
-Elisbeth
-Elise
-Elissa
-Elita
-Elithan
-Eliyo
-Eliza
-Elizabet
-Elizabeth
-Elize
-Eliziario
-Elk
-Elka
-Elkan
-Elke
-Elkje
-Elko
-Elkoukouchi
-Elkrem
-Ella
-Elleke
-Ellen
-Ellenburg
-Elleno
-Ellens
-Ellentraud
-Elli
-Ellin
-Ellinor
-Ellionor
-Elliott
-Ellis
-Ello
-Ellrun
-Elly
-Elma
-Elmar
-Elmas
-Elmaz
-Elmer
-Elmi
-Elmira
-Elmire
-Elmo
-Elmothaz
-Elna
-Elni
-Elnor
-Elo
-Elodie
-Elof
-Eloi
-Eloisa
-Elona
-Elonka
-Elony
-Eloy
-Elpidio
-Els
-Elsa
-Elsabe
-Elsaid
-Elsayed
-Elsbe
-Elsbet
-Elsbeth
-Else
-Elsebeth
-Elsedore
-Elsie
-Elsk
-Elske
-Elsmarie
-Elsner
-Elso
-Elter
-Eltje
-Elva
-Elvan
-Elvera
-Elvi
-Elvid
-Elvier
-Elvine
-Elvino
-Elvir
-Elvira
-Elvis
-Elwin
-Elwine
-Elwira
-Ely
-Elyas
-Elza
-Elzbieta
-Ema
-Emad
-Emanuel
-Emanuela
-Emanuele
-Emel
-Emelie
-Emelienne
-Emelinda
-Emeline
-Emer
-Emeran
-Emerich
-Emerson
-Emese
-Emet
-Emeti
-Emetullah
-Emi
-Emidio
-Emil
-Emile
-Emilia
-Emilian
-Emiliana
-Emiliano
-Emilie
-Emilienne
-Emilija
-Emilio
-Emily
-Emin
-Emina
-Emine
-Emir
-Emira
-Emirayse
-Emma
-Emmanuel
-Emmanuela
-Emmanuele
-Emmanuelle
-Emme
-Emmeline
-Emmely
-Emmeram
-Emmeran
-Emmerich
-Emmett
-Emmi
-Emmo
-Emmy
-Emos
-Emrah
-Emre
-Emriye
-Emrullah
-Emsal
-Emur
-Emy
-Ena
-Enayatullah
-Enbiya
-Encarnacion
-Ender
-Enderlein
-Enders
-Endre
-Endres
-Endrid
-Enea
-Enes
-Engelbert
-Engelburg
-Engelhard
-Engelhardt
-Engelina
-Engeline
-Engert
-Engin
-Enginay
-Enginer
-Enging
-Englbert
-Englert
-Eni
-Enieke
-Enis
-Eniz
-Enka
-Enke
-Enna
-Enne
-Enni
-Ennio
-Enno
-Eno
-Enoch
-Enrer
-Enric
-Enrica
-Enrichetta
-Enrico
-Enrique
-Enst
-Enstina
-Entia
-Envariye
-Enver
-Envers
-Enyonam
-Enza
-Enzo
-Epaminondas
-Ephrath
-Epifanio
-Epke
-Eppe
-Equipment
-Eral
-Eraldo
-Eran
-Eranil
-Erasmia
-Erasmus
-Eray
-Erbay
-Erbil
-Ercan
-Ercihan
-Ercilian
-Ercin
-Ercogil
-Erda
-Erdal
-Erdel
-Erdem
-Erdemir
-Erdenay
-Erdener
-Erdil
-Erdin
-Erdinc
-Erdirc
-Erdmann
-Erdmut
-Erdmute
-Erdmuthe
-Erdogan
-Erel
-Eren
-Erena
-Erencem
-Erenlcen
-Erfried
-Ergan
-Erghioum
-Ergin
-Ergun
-Erhan
-Erhard
-Erhardt
-Erhart
-Erholt
-Eri
-Eribert
-Eric
-Erica
-Erich
-Erick
-Erico
-Erik
-Erika
-Erikin
-Eriko
-Eriks
-Erin
-Erinc
-Eris
-Erisken
-Erk
-Erkan
-Erkek
-Erken
-Erker
-Erkin
-Erkki
-Erko
-Erkul
-Erkus
-Erkut
-Erla
-Erland
-Erling
-Erman
-Ermanno
-Ermano
-Ermelinda
-Ermenegildo
-Ermentraud
-Ermin
-Ermine
-Erminio
-Ermis
-Erna
-Ernan
-Erne
-Ernest
-Ernestina
-Ernestine
-Ernesto
-Erngard
-Ernhard
-Erni
-Ernike
-Ernst
-Ernstfried
-Ernstine
-Ernt
-Erny
-Erogul
-Erol
-Eros
-Erou
-Errol
-Ersal
-Ersan
-Ersel
-Ersen
-Ersin
-Ersoy
-Ersun
-Ertan
-Ertas
-Ertekin
-Ertel
-Erten
-Ertugrol
-Ertugrul
-Ertunc
-Ertung
-Erturan
-Ervin
-Erwein
-Erwhn
-Erwin
-Erwine
-Eryilmaz
-Erzebet
-Erzsebet
-Esa
-Esad
-Esat
-Esatollah
-Esben
-Esbender
-Eschborn
-Eschek
-Escher
-Esda
-Ese
-Esedullah
-Esefa
-Esen
-Eser
-Eset
-Eshetu
-Esin
-Eske
-Esma
-Esmail
-Esmana
-Esmat
-Esme
-Esmer
-Esmeralda
-Esmina
-Esperanza
-Esra
-Esref
-Esret
-Esri
-Essam
-Essen
-Essi
-Esteban
-Estela
-Estelle
-Ester
-Estera
-Estevao
-Estha
-Esther
-Estrella
-Estrid
-Eta
-Ete
-Etelka
-Etem
-Ethan
-Ethel
-Ethelbert
-Ethem
-Ethraim
-Etienne
-Etnan
-Etta
-Ette
-Etteus
-Ettine
-Ettore
-Etty
-Euat
-Euclides
-Eufemia
-Eugen
-Eugene
-Eugeni
-Eugenia
-Eugenie
-Eugenio
-Eugenius
-Eugeniusz
-Euginie
-Euke
-Eulalia
-Eulogio
-Eunice
-Euro
-Eusebio
-Eustachius
-Eustasio
-Eustathios
-Eva
-Evagelia
-Evald
-Evalore
-Evamaria
-Evamarie
-Evan
-Evangelia
-Evangeline
-Evangelista
-Evangelos
-Evans
-Evanthia
-Evaristus
-Eve
-Evek
-Eveliese
-Evelin
-Evelinde
-Eveline
-Evelyn
-Evelyne
-Even
-Everhard
-Everhart
-Everilda
-Evert
-Evertz
-Evgin
-Evi
-Evin
-Evira
-Evmarie
-Evstratios
-Evy
-Evylin
-Evzal
-Ewa
-Ewald
-Ewalda
-Ewaldine
-Ewangelos
-Eward
-Ewdokia
-Ewe
-Ewelina
-Ewert
-Ewgeni
-Ewgenij
-Ewgenija
-Ewold
-Exclusive
-Eybe
-Eyibil
-Eylem
-Eylert
-Eylip
-Eynar
-Eyup
-Eyyup
-Ezequiel
-Ezri
-Ezzedine
-Faas
-Fabia
-Fabian
-Fabien
-Fabienne
-Fabio
-Fabiola
-Fabrice
-Fabrizio
-Facundo
-Fadi
-Fadik
-Fadil
-Fadila
-Fadile
-Fadime
-Fadumo
-Faegh
-Faheem
-Fahim
-Fahir
-Fahreddin
-Fahrettin
-Fahri
-Fahria
-Fahrid
-Fahriye
-Fahti
-Faik
-Faika
-Faina
-Fais
-Faissal
-Fait
-Faith
-Faiz
-Faize
-Faketa
-Fakhro
-Falco
-Falih
-Faliha
-Falk
-Falko
-Famaramarz
-Fani
-Fanj
-Fanja
-Fannerl
-Fanni
-Fanny
-Fanon
-Fantine
-Fanya
-Faouzi
-Farah
-Farahnaz
-Faraidun
-Faramarz
-Fares
-Farhad
-Farhat
-Farid
-Farida
-Faridin
-Farih
-Fariha
-Farina
-Faris
-Fariz
-Farjamnia
-Farkas
-Farman
-Faroog
-Farooq
-Faruk
-Faruque
-Farut
-Farzad
-Farzan
-Fasih
-Fata
-Fatah
-Fatemah
-Fateme
-Fateza
-Fathia
-Fathie
-Fati
-Fatih
-Fatija
-Fatima
-Fatime
-Fatin
-Fatine
-Fatma
-Fatmat
-Fatmata
-Fatos
-Faustin
-Faustina
-Fausto
-Faustyn
-Fauzi
-Fauzia
-Favelio
-Favlus
-Fawad
-Fawaz
-Fawwas
-Fawwaz
-Fawzi
-Fawzia
-Fayadh
-Fayik
-Fayyaz
-Faza
-Fazi
-Fazia
-Fazil
-Fazio
-Fazlija
-Fazlur
-Feary
-Februnija
-Fechret
-Fecri
-Fedai
-Fedalh
-Fedayi
-Fedder
-Fedele
-Federico
-Fedine
-Fedor
-Fedra
-Fee
-Fehim
-Fehime
-Fehin
-Fehmi
-Fehmiye
-Fekry
-Felal
-Felemez
-Felibe
-Felic
-Felice
-Felicia
-Felician
-Feliciano
-Felicie
-Felicitas
-Feliks
-Felipe
-Felis
-Felisa
-Felit
-Felix
-Felizia
-Felizitas
-Fema
-Femia
-Femke
-Fenja
-Fenna
-Fenni
-Fenzi
-Ferah
-Feramuz
-Ferat
-Feraá
-Ferda
-Ferdane
-Ferdaye
-Ferdens
-Ferdettin
-Ferdi
-Ferdinand
-Ferdinande
-Ferdinando
-Ferdinant
-Ferdl
-Ferdun
-Ferdy
-Ferdynand
-Ferenc
-Ferenz
-Ferfuli
-Fergus
-Ferha
-Ferhan
-Ferhat
-Feri
-Feria
-Ferial
-Ferida
-Feride
-Feridun
-Feriha
-Ferit
-Ferman
-Fermin
-Fernand
-Fernanda
-Fernande
-Fernandez
-Fernando
-Ferndinant
-Fernsehen
-Feros
-Ferrante
-Ferreira
-Ferruccio
-Ferruh
-Ferry
-Feruze
-Feryal
-Ferzende
-Ferzi
-Ferzullah
-Fesih
-Festus
-Feta
-Fetah
-Fethi
-Fethiye
-Feti
-Fetma
-Fettah
-Fetullah
-Fevci
-Fevzi
-Fevziye
-Fexhri
-Fey
-Feysi
-Feyyaz
-Feyzan
-Feyzi
-Feyzullah
-Feza
-Fia
-Fidan
-Fidel
-Fidelis
-Fidelity
-Fidon
-Fiedler
-Fielmann
-Fien
-Fiete
-Figaro
-Figen
-Fika
-Fikrek
-Fikret
-Fikri
-Fikrige
-Fikriye
-Fil
-Filifos
-Filip
-Filipe
-Filipo
-Filipos
-Filipp
-Filippa
-Filippo
-Filippos
-Filippowna
-Filiz
-Filizaliye
-Filo
-Filomena
-Filomeno
-Fina
-Fine
-Fini
-Finka
-Finn
-Finny
-Fiona
-Fioravante
-Fiore
-Fiorella
-Fiorentino
-Fiorenzo
-Fiorina
-Fips
-Fira
-Firas
-Firat
-Firdes
-Firdevs
-Firial
-Firkat
-Firkret
-Firuz
-Fissahage
-Fisseha
-Fisun
-Fitnat
-Fjodor
-Flavia
-Flavie
-Flavio
-Flavius
-Fleur
-Flor
-Flora
-Florcia
-Florence
-Florencia
-Florencio
-Florentin
-Florentina
-Florentine
-Florentino
-Florenz
-Florette
-Floria
-Florian
-Floriana
-Florin
-Florina
-Florine
-Florio
-Floris
-Flori n
-Flower
-Foariz
-Focke
-Focko
-Fod
-Fodor
-Foelke
-Fokke
-Fokko
-Foline
-Folkard
-Folke
-Folker
-Folkert
-Folkmar
-Folko
-Follerich
-Folly
-Folma
-Folmar
-Folt
-Folus
-Foots
-Fores
-Forese
-Fortunato
-Fortune
-Fotini
-Fotios
-Fouad
-Foula
-Fouzia
-Fran
-Franc
-Franca
-France
-Frances
-Francesca
-Francesco
-Francia
-Francina
-Francine
-Francis
-Francisc
-Francisca
-Francisco
-Franciscus
-Franciska
-Francisko
-Franciszek
-Franck
-Franclim
-Franco
-Francois
-Francoise
-Frane
-Franjo
-Frank
-Franka
-Franke
-Frankie
-Franklin
-Franko
-Frano
-Frans
-Frantisek
-Frantz
-Franz
-Franzis
-Franzisco
-Franziska
-Franziskus
-Franzjosef
-Franzl
-Franzleo
-Frauke
-Fred
-Freda
-Freddi
-Freddy
-Frede
-Frederek
-Frederic
-Frederick
-Fredericke
-Frederico
-Frederik
-Frederike
-Frederique
-Fredhelm
-Fredi
-Fredie
-Fredin
-Fredo
-Fredrich
-Fredrik
-Fredy
-Freed
-Freia
-Freidoun
-Freimut
-Freimuth
-Frein
-Freitag
-Freke
-Frena
-Frenz
-Frerat
-Frerich
-Frerichs
-Frerk
-Frevein
-Frey
-Freya
-Frhedrich
-Frick
-Frida
-Fridbert
-Frideriki
-Friderun
-Fridhard
-Fridhild
-Fridi
-Fridjof
-Fridl
-Frido
-Fridobert
-Fridolin
-Fridon
-Fridrich
-Fridtjof
-Fried
-Frieda
-Friedbert
-Friedchen
-Friede
-Friedebert
-Friedegard
-Friedegund
-Friedegunde
-Friedel
-Friedemann
-Friedemarie
-Frieder
-Friederich
-Friedericka
-Friedericke
-Friederika
-Friederike
-Friederk
-Friedgar
-Friedgard
-Friedger
-Friedgund
-Friedgunde
-Friedh
-Friedhard
-Friedhart
-Friedheim
-Friedhelm
-Friedhilde
-Friedhold
-Friedich
-Friedjof
-Friedl
-Friedlieb
-Friedlinde
-Friedmann
-Friedmar
-Friedmund
-Friedo
-Friedolf
-Friedolin
-Friedoline
-Friedrich
-Friedrichkarl
-Friedrike
-Friedrun
-Friedwald
-Frieling
-Fries
-Friese
-Friesen
-Frigga
-Frigge
-Frigyes
-Frik
-Friso
-Frithjof
-Fritjof
-Frits
-Fritz
-Friz
-Frode
-Frohmut
-Frost
-Frowin
-Fryderyk
-Frydoon
-Fuad
-Fuat
-Fuente
-Fuesun
-Fulgencio
-Fulvio
-Fulya
-Funda
-Furqan
-Furug
-Fynn
-GLASER
-Gaafar
-Gabel
-Gaber
-Gabi
-Gabie
-Gabiele
-Gabin
-Gabina
-Gabino
-Gabiriele
-Gabor
-Gabri
-Gabriel
-Gabriela
-Gabriele
-Gabriella
-Gabrielle
-Gaby
-Gad
-Gada
-Gaetana
-Gaetano
-Gaffar
-Gafur
-Gagna
-Gaho
-Gala
-Galal
-Galdi
-Gali
-Galina
-Galip
-Gallina
-Gallion
-Gamal
-Gamli
-Gamze
-Gandolf
-Gandolfo
-Ganet
-Ganev
-Gangolf
-Gani
-Ganimet
-Ganka
-Ganna
-Garabet
-Garbo
-Gard
-Garde
-Gardenia
-Gardina
-Gardy
-Gareth
-Garin
-Garip
-Garlich
-Garner
-Garrelt
-Garrit
-Garry
-Gary
-Gas
-Gaschim
-Gaselis
-Gashaw
-Gaspar
-Gaspare
-Gaston
-Gaudenz
-Gaudenzia
-Gautam
-Gauthier
-Gavin
-Gavril
-Gay
-Gaye
-Gazal
-Gazale
-Gazali
-Gazanfer
-Gazi
-Gazmati
-Gebhard
-Gebhardt
-Gebina
-Gebro
-Geckeler
-Gedikli
-Gediz
-Geele
-Geelke
-Geerd
-Geerhard
-Geerling
-Geert
-Geertje
-Geesche
-Gehard
-Geiko
-Gela
-Geli
-Gelske
-Geltrude
-Gena
-Genadi
-Genc
-Gencal
-Gencarslan
-Gencay
-Gencel
-Generoso
-Geni
-Genia
-Gennadi
-Gennaro
-Gennet
-Genovefa
-Genoveva
-Genowefa
-Genrich
-Gentile
-Geo
-Geoff
-Geoffrey
-Geoffry
-Geogios
-Georg
-George
-Georgel
-Georges
-Georgette
-Georghios
-Georgi
-Georgia
-Georgie
-Georgina
-Georgine
-Georgior
-Georgios
-Georgis
-Georgius
-Gerald
-Geraldinde
-Geraldine
-Geralf
-Gerard
-Gerarda
-Gerardina
-Gerardo
-Gerardus
-Gerasimo
-Gerassimos
-Gerbard
-Gerboga
-Gerburg
-Gerco
-Gerd
-Gerda
-Gerde
-Gerdi
-Gerdie
-Gerdina
-Gerdine
-Gerdje
-Gerdrut
-Gerdruth
-Gerdtraude
-Gereb
-Geremia
-Gereon
-Geret
-Gerfrid
-Gerfried
-Gerges
-Gergo
-Gerh
-Gerhard
-Gerharda
-Gerhardine
-Gerhardt
-Gerhardus
-Gerhart
-Gerhild
-Gerhilde
-Gerhold
-Gerholt
-Geri
-Geriet
-Gerit
-Gerlach
-Gerlando
-Gerlind
-Gerlinda
-Gerlinde
-Germa
-Germain
-Germaine
-Germana
-Germania
-Germano
-Gerno
-Gernod
-Gernold
-Gernot
-Gero
-Gerold
-Gerolde
-Gerolf
-Gerriet
-Gerrit
-Gerry
-Gersom
-Gerson
-Gert
-Gerta
-Gertaud
-Gerth
-Gertha
-Gerthold
-Gerti
-Gertie
-Gertin
-Gertina
-Gertine
-Gertke
-Gertlind
-Gertraud
-Gertraude
-Gertraudt
-Gertraut
-Gertraute
-Gertrud
-Gertruda
-Gertrude
-Gertrudis
-Gertrut
-Gertrute
-Gertud
-Gerturd
-Gerty
-Gerulf
-Gervais
-Gervasio
-Gerwald
-Gerwig
-Gerwin
-Gerwine
-Gesa
-Gesar
-Gesche
-Geseke
-Gesina
-Gesine
-Gesualdo
-Getachew
-Getha
-Getraude
-Getrud
-Getrude
-Geva
-Gevaert
-Gevrige
-Gevriye
-Geyik
-Geza
-Gezina
-Ghaderi
-Ghaleb
-Ghani
-Gharib
-Ghassan
-Ghassem
-Ghazal
-Ghazi
-Gheorg
-Ghita
-Gholam
-Gholamhosein
-Ghorban
-Ghristos
-Ghrjbi
-Ghulam
-Giacinto
-Giacobbe
-Giacoma
-Giacomo
-Giambattista
-Giammaria
-Giampaolo
-Giampiero
-Giancario
-Giancarlo
-Giandomenico
-Gianfranco
-Gianglaudio
-Gianluca
-Gianluigi
-Gianna
-Gianni
-Gianpiero
-Gideon
-Gido
-Giesbert
-Giesel
-Giesela
-Gigi
-Gil
-Gila
-Gilbert
-Gilberta
-Gilberte
-Gilberto
-Gilda
-Gilde
-Gildo
-Giles
-Gili
-Gill
-Gilla
-Gilles
-Gillian
-Gilsun
-Gimette
-Gina
-Gindo
-Gini
-Ginka
-Ginny
-Gino
-Ginseppina
-Ginter
-Gioacchina
-Gioacchino
-Gioachino
-Giob
-Giocchino
-Gioconda
-Gion
-Giordano
-Giorgia
-Giorgina
-Giorgio
-Giorgios
-Giosue
-Giovambattista
-Giovane
-Giovanna
-Giovanni
-Giraldo
-Girgin
-Girmansak
-Girolamo
-Gisa
-Gisbert
-Gisela
-Gisele
-Giselher
-Giselinde
-Gisella
-Giselle
-Gisette
-Gislind
-Gislinde
-Giso
-Gita
-Giti
-Gitta
-Gitte
-Gitti
-Giulia
-Giuliana
-Giuliano
-Giulio
-Giunia
-Giusela
-Giusep
-Giuseppa
-Giuseppe
-Giuseppina
-Giusi
-Giustino
-Giusto
-Givaseppina
-Givyurk
-Giyas
-Giyasettin
-Gizella
-Gladis
-Gladys
-Glaserei
-Glenda
-Glenn
-Gloria
-Gloriane
-Glykeria
-Glyn
-Glynis
-Gobins
-Godart
-Godber
-Godehard
-Godehardt
-Godelind
-Godfred
-Godfrey
-Godfried
-Godje
-Godwin
-Goenuel
-Goldammer
-Goldmann
-Goli
-Golo
-Gomes
-Gomez
-Goncagul
-Gonne
-Gonzales
-Gonzalez
-Gonzalo
-Goran
-Gorch
-Gorda
-Gordana
-Gorden
-Gordian
-Gordon
-Gorgani
-Gosbert
-Gose
-Gosemin
-Goskun
-Goswin
-Gotelind
-Gotho
-Gotja
-Gottfried
-Gottfriede
-Gotthard
-Gotthardt
-Gotthart
-Gotthelf
-Gotthilf
-Gotthold
-Gottlieb
-Gottlob
-Gottreich
-Gottwald
-Goy
-Grace
-Gracia
-Gracian
-Graciela
-Grada
-Gradincic
-Graeme
-Graham
-Granja
-Gratz
-Graz
-Grazia
-Graziano
-Graziella
-Grazilla
-Grazyna
-Grbavac
-Greda
-Greet
-Greg
-Gregoire
-Gregor
-Gregoria
-Gregorio
-Gregorios
-Gregory
-Gret
-Greta
-Gretchen
-Grete
-Gretel
-Gretha
-Grethe
-Greti
-Gretje
-Gretl
-Gretus
-Grevald
-Grgor
-Grgorios
-Grid
-Griet
-Grietje
-Griffin
-Grigor
-Grigore
-Grigori
-Grigorios
-Grim
-Griseldis
-Grit
-Grita
-Gritt
-Gritta
-Gritz
-Groá
-Grundl
-Grynet
-Grzegorz
-Gserhard
-Gualtiero
-Gudio
-Gudrun
-Gudula
-Guel
-Gueler
-Guelhizar
-Guellue
-Gueluesan
-Guenter
-Guenther
-Guerino
-Guglielmo
-Guhn
-Guida
-Guido
-Guidon
-Guilherme
-Guillaume
-Guillermina
-Guillermo
-Guiseppe
-Gul
-Gulam
-Gulan
-Gulay
-Gulboy
-Gulinaz
-Gulizar
-Gullan
-Gulli
-Gullmullah
-Gulnar
-Gulsade
-Gulumser
-Guluzar
-Gumersindo
-Gun
-Guna
-Gunar
-Gunars
-Gunawati
-Gunda
-Gunde
-Gundel
-Gundela
-Gundelinde
-Gunder
-Gundi
-Gundis
-Gundo
-Gundolf
-Gundram
-Gundrata
-Gundula
-Gunduz
-Gundy
-Gunhild
-Gunhilde
-Gunhilt
-Gunild
-Gunilla
-Gunnar
-Guntbert
-Gunter
-Gunthar
-Gunthard
-Gunther
-Gunthild
-Gunthilde
-Guntram
-Gunul
-Guoming
-Gurbe
-Gurli
-Gus
-Guschi
-Guset
-Guslav
-Guss
-Gust
-Gusta
-Gustaaf
-Gustaf
-Gustav
-Gustavo
-Gustaw
-Gustel
-Gusti
-Gustl
-Guta
-Guzi
-Gwendolin
-Gwido
-Gyde
-Gylay
-Gylfe
-Gyula
-Haaf
-Haak
-Haan
-Haantis
-Habbe
-Habbo
-Habib
-Habiba
-Habibe
-Habibullah
-Habil
-Habip
-Habsaoudi
-Hacer
-Hacere
-Haci
-Hacibey
-Hacik
-Hacikurban
-Hacim
-Hack
-Hackach
-Haco
-Hadad
-Hadar
-Hadassa
-Haddon
-Haddouzi
-Hadi
-Hadian
-Hadice
-Hadise
-Hadmut
-Hado
-Hadwig
-Hady
-Haf
-Hafeez
-Hafid
-Hafida
-Hafiz
-Hafiza
-Hafize
-Hafozi
-Haga
-Hagdar
-Hage
-Hagen
-Haghighi
-Hahki
-Hai
-Haico
-Haidar
-Haide
-Haider
-Haidi
-Haij
-Haije
-Haijo
-Haike
-Haiko
-Hail
-Haila
-Haileyesus
-Hailian
-Haim
-Haimo
-Haind
-Hainer
-Hainrich
-Haio
-Hajdar
-Hajdin
-Haje
-Hajnalka
-Hajo
-Hajreta
-Hajrija
-Hajrudin
-Hajung
-Hakan
-Hake
-Haki
-Hakim
-Hakima
-Hakime
-Hakke
-Hakki
-Hakverdi
-Hala
-Halay
-Haldis
-Haldor
-Haldun
-Hale
-Halef
-Haleh
-Halfi
-Halici
-Halide
-Halife
-Halil
-Halilibrahim
-Halilovic
-Halim
-Halima
-Halime
-Halina
-Haline
-Halis
-Halise
-Halit
-Hall
-Halli
-Halma
-Halmut
-Halnil
-Haluk
-Hama
-Hamadoni
-Haman
-Hamdi
-Hamdija
-Hamdiye
-Hamdo
-Hamdoun
-Hamdullah
-Hamdy
-Hamed
-Hamedani
-Hameed
-Hamer
-Hamet
-Hami
-Hamida
-Hamide
-Hamidreza
-Hamidullah
-Hamiol
-Hamit
-Hamiyet
-Hamlet
-Hamo
-Hamon
-Hamsa
-Hamseh
-Hamurabi
-Hamza
-Hana
-Hanan
-Hanana
-Handan
-Handi
-Hane
-Hanefi
-Hanelore
-Hanfried
-Hani
-Hania
-Hanif
-Hanife
-Hanifi
-Hanili
-Hanim
-Hanime
-Hanimi
-Haninzer
-Hanjo
-Hank
-Hanka
-Hanke
-Hanko
-Hanna
-Hannah
-Hannamarie
-Hannchen
-Hanndore
-Hanne
-Hannedore
-Hannegret
-Hanneke
-Hannel
-Hannele
-Hannelie
-Hannelies
-Hanneliese
-Hannelore
-Hannelotte
-Hannerose
-Hannes
-Hannfried
-Hanni
-Hanno
-Hanns
-Hannu
-Hanny
-Hano
-Hans
-Hansa
-Hansan
-Hansdieter
-Hansel
-Hansen
-Hansfried
-Hansg
-Hansgeorg
-Hansgerd
-Hansgert
-Hanshagen
-Hansheiner
-Hansheinrich
-Hansi
-Hansibert
-Hansine
-Hansjakob
-Hansjoachim
-Hansjochen
-Hanskarl
-Hansmartin
-Hansotto
-Hanspaul
-Hanspeter
-Hanstheo
-Hanswalter
-Hanswerner
-Hanun
-Hany
-Happe
-Hapsuno
-Hara
-Harald
-Harandi
-Harbo
-Hardi
-Hardmut
-Hardo
-Hardy
-Hares
-Hari
-Haribald
-Haribert
-Harice
-Harie
-Hariet
-Harife
-Hariold
-Hariolf
-Hariton
-Hark
-Harke
-Harm
-Harma
-Harman
-Harmannus
-Harmantepe
-Harmen
-Harmine
-Harminus
-Harms
-Harmut
-Harold
-Haroun
-Harrald
-Harri
-Harriet
-Harris
-Harro
-Harry
-Hartfried
-Hartl
-Hartlieb
-Hartmann
-Hartmaut
-Hartmund
-Hartmut
-Hartmuth
-Hartwig
-Hartwin
-Harum
-Harun
-Harvey
-Hary
-Hasa
-Hasan
-Hasbi
-Haser
-Hasi
-Hasib
-Hasiba
-Hasibe
-Hasim
-Hasip
-Hasmet
-Hasna
-Hasnah
-Haso
-Hasret
-Hassan
-Hassar
-Hasso
-Hasum
-Hatayi
-Hatem
-Hatemi
-Hatice
-Hatida
-Hatidza
-Hatim
-Hatip
-Hatmone
-Hatto
-Hatun
-Haubert
-Hauk
-Hauke
-Hauser
-Hava
-Havazer
-Haver
-Havva
-Hawa
-Hayal
-Hayat
-Hayati
-Hayatin
-Haydar
-Haydee
-Hayder
-Haydor
-Hayen
-Hayke
-Haym
-Haymo
-Haynettin
-Hayno
-Hayo
-Hayrani
-Hayrettin
-Hayri
-Hayriye
-Hayrulla
-Hayrullah
-Haytham
-Hayung
-Hazan
-Hazar
-Hazim
-Hazine
-Hazir
-Hbiba
-Heather
-Hebert
-Hebine
-Heck
-Hector
-Hedda
-Heddi
-Heddies
-Hede
-Hedi
-Hedia
-Hedise
-Hediye
-Hedwig
-Hedy
-Hee
-Hege
-Hehnz
-Heico
-Heida
-Heide
-Heidelies
-Heideliese
-Heidelind
-Heidelinde
-Heidelore
-Heidemaria
-Heidemarid
-Heidemarie
-Heider
-Heiderose
-Heideruth
-Heidi
-Heidje
-Heidrun
-Heidwolf
-Heidy
-Heiga
-Heijo
-Heika
-Heike
-Heikki
-Heiko
-Heilgard
-Heilke
-Heilko
-Heilmann
-Heilo
-Heilrun
-Heilwig
-Heim
-Heiman
-Heimbert
-Heimerich
-Heimfried
-Heimke
-Heimo
-Hein
-Heina
-Heinemann
-Heiner
-Heinerich
-Heinfried
-Heini
-Heinicke
-Heinka
-Heinke
-Heinko
-Heino
-Heinold
-Heinr
-Heinrich
-Heins
-Heintje
-Heiny
-Heinz
-Heinzgert
-Heinzjosef
-Heinzpeter
-Heio
-Heisam
-Heizung
-Hekar
-Hekim
-Hekmet
-Hela
-Helci
-Helda
-Heldi
-Heldur
-Hele
-Heleanne
-Helen
-Helena
-Helene
-Helfred
-Helfrich
-Helfrid
-Helfried
-Helfriede
-Helfriedt
-Helg
-Helga
-Helgard
-Helge
-Helgi
-Helgo
-Helgrid
-Heli
-Helia
-Heliena
-Helier
-Heliodoro
-Helios
-Helka
-Helke
-Hella
-Hellburga
-Helle
-Hellen
-Hellfried
-Helli
-Hellmut
-Hellmuth
-Hello
-Helma
-Helmar
-Helme
-Helmer
-Helmfried
-Helmgard
-Helmi
-Helmine
-Helmo
-Helmtraud
-Helmtraut
-Helmtrud
-Helmut
-Helmuth
-Helmward
-Helmy
-Helvi
-Helwart
-Helwig
-Helwin
-Hema
-Hemmine
-Hemmo
-Henderika
-Henderike
-Hendrick
-Hendricus
-Hendrik
-Hendrika
-Hendrike
-Hendrikje
-Hendrikus
-Hendrina
-Hendrk
-Hendry
-Hendryk
-Hendullah
-Henel
-Henk
-Henkel
-Hennek
-Hennelore
-Henner
-Henni
-Hennig
-Henning
-Henno
-Henny
-Henri
-Henric
-Henrich
-Henricus
-Henriette
-Henrik
-Henrika
-Henrike
-Henriks
-Henrique
-Henry
-Henryk
-Henryka
-Hens
-Hentiette
-Henze
-Hep
-Heranus
-Herb
-Herber
-Herberg
-Herbert
-Herbet
-Herculano
-Herdem
-Herden
-Herdine
-Herdis
-Herdith
-Herfrid
-Herfried
-Hergen
-Herger
-Hergit
-Herib
-Heriber
-Heribert
-Heriberto
-Herlinde
-Herlov
-Herm
-Herma
-Herman
-Hermann
-Hermanus
-Hermelinde
-Hermenegild
-Hermes
-Hermfried
-Hermi
-Hermiene
-Hermina
-Hermine
-Herminia
-Herminio
-Herms
-Hermut
-Hermy
-Hernando
-Hernz
-Hero
-Herold
-Herolf
-Heron
-Heros
-Herrad
-Herrmann
-Herry
-Herta
-Hertel
-Hertha
-Hertra
-Hertwig
-Hertz
-Herve
-Herwald
-Herward
-Herwart
-Herwarth
-Herwig
-Herwin
-Hesamaldin
-Hetha
-Heti
-Hetta
-Hetti
-Hetty
-Heva
-Hevzat
-Heye
-Heyes
-Heyke
-Heyno
-Heyo
-Hezer
-Hezir
-Heá
-Hicabi
-Hicham
-Hicole
-Hicran
-Hicri
-Hida
-Hidayef
-Hidayet
-Hidda
-Hidde
-Hidegard
-Hideki
-Hideyet
-Hidir
-Hidiv
-Hieronim
-Hieronymus
-Hifzi
-Higinio
-Hikaru
-Hikmat
-Hikmet
-Hilaire
-Hilal
-Hilalyasim
-Hilar
-Hilaria
-Hilario
-Hilarius
-Hilary
-Hilbert
-Hild
-Hilda
-Hildburg
-Hildburga
-Hilde
-Hildebert
-Hildebrand
-Hildefard
-Hildeg
-Hildegard
-Hildegarde
-Hildegart
-Hildegrim
-Hildegun
-Hildegund
-Hildegunde
-Hilden
-Hildo
-Hildor
-Hildrun
-Hildtrud
-Hilga
-Hilgriet
-Hilka
-Hilke
-Hilko
-Hilla
-Hillard
-Hillary
-Hille
-Hillechien
-Hiller
-Hillert
-Hillrich
-Hilma
-Hilmar
-Hilmer
-Hilmi
-Hilmija
-Hilmo
-Hilpert
-Hilrich
-Hilrid
-Hiltraud
-Hiltraut
-Hiltrud
-Hiltrude
-Hiltrudis
-Hiltrun
-Hiltrut
-Hilwert
-Hima
-Himan
-Himmet
-Hinderikus
-Hinderk
-Hindertje
-Hindrik
-Hindrika
-Hinnerike
-Hinnerk
-Hinrich
-Hinriette
-Hinrika
-Hinrike
-Hiob
-Hipolito
-Hippe
-Hippolyt
-Hiram
-Hirije
-Hiro
-Hironimus
-Hiroshi
-Hisham
-Hiskeline
-Hitto
-Hizarci
-Hizir
-Hizli
-Hizmi
-Hjalmar
-Hobby
-Hocine
-Hoda
-Hoek
-Hoevel
-Hoger
-Hojrmllo
-Hol
-Holde
-Holder
-Holdine
-Holge
-Holger
-Holil
-Holke
-Hollie
-Holm
-Holmer
-Holst
-Homa
-Homayun
-Hon
-Honorato
-Honorine
-Honsa
-Hooshang
-Hope
-Hoppe
-Horacio
-Horand
-Horatio
-Horne
-Horst
-Horstmar
-Horstpeter
-Hortensia
-Hortensie
-Hosai
-Hossain
-Hossam
-Hossein
-Hossien
-Hossin
-Houria
-Housein
-Houssam
-Houssein
-Howard
-Hoyer
-Hristos
-Hub
-Hubert
-Huberta
-Hubertine
-Hubertus
-Hubet
-Hubs
-Hudaverdi
-Hudayi
-Huesamettin
-Huesejin
-Hueseyin
-Hueseyn
-Huesnue
-Huesyin
-Hugh
-Hugo
-Huguette
-Hulda
-Huldreich
-Hulki
-Hulusi
-Hulya
-Huma
-Humbert
-Humberto
-Hume
-Humphrey
-Huna
-Hung
-Hunold
-Hurai
-Huri
-Hurige
-Hurinaz
-Huriye
-Hursit
-Husa
-Husam
-Husamettin
-Huse
-Husein
-Husejin
-Huseyin
-Husinye
-Huskic
-Husne
-Husni
-Huso
-Hussain
-Hussameddin
-Hussein
-Hussen
-Husseyin
-Husseyn
-Husui
-Huyliem
-Hyacinthe
-Hyad
-Hyazinth
-Hyazinthe
-Hysein
-Hysen
-Hyseyin
-Hyungmo
-Iain
-Ian
-Iana
-Ianis
-Iaso
-Iason
-Ib
-Iba
-Ibahim
-Ibis
-Ibo
-Ibolya
-Ibrahim
-Ibraim
-Ibraimi
-Ibro
-Ibtehal
-Ichtiajor
-Icli
-Ida
-Idalia
-Ide
-Iden
-Idi
-Idil
-Idina
-Ido
-Idowu
-Idris
-Idriz
-Ifakat
-Ifaket
-Iffel
-Iffet
-Ifigenia
-Ifthikar
-Iftikhar
-Iftikhard
-Igal
-Igde
-Ige
-Iginio
-Igino
-Igna
-Ignace
-Ignacia
-Ignacio
-Ignatius
-Ignatz
-Ignaz
-Ignazio
-Igneci
-Igo
-Igor
-Ihasan
-Ihne
-Ihno
-Ihsam
-Ihsan
-Ihsaniye
-Ihson
-Iines
-Ijaz
-Ijlal
-Ika
-Ikbal
-Iki
-Iko
-Iksan
-Ikuko
-Il
-Ilan
-Ilarion
-Ilarione
-Ilbeyi
-Ilda
-Ildefons
-Ildefonso
-Ildelsaht
-Ildico
-Ildiko
-Ildiz
-Ile
-Ileana
-Ileri
-Ilga
-Ilgar
-Ilham
-Ilhami
-Ilhan
-Ilhani
-Ilia
-Iliana
-Ilias
-Ilija
-Ilijo
-Iliyo
-Ilja
-Iljana
-Iljas
-Iljasa
-Iljber
-Iljmi
-Ilka
-Ilkay
-Ilke
-Ilken
-Ilker
-Ilkim
-Ilkka
-Ilknur
-Ilko
-Ilkur
-Illa
-Illo
-Illona
-Ilmars
-Ilmi
-Ilmiye
-Ilona
-Ilonca
-Ilonka
-Ilpern
-Ilsa
-Ilse
-Ilsebill
-Ilsedore
-Ilselore
-Ilsemaria
-Ilsemarie
-Ilsetraud
-Ilter
-Ilva
-Ilvira
-Ilyas
-Ilza
-Ima
-Imad
-Imagina
-Iman
-Imant
-Imants
-Imanuel
-Imbor
-Imdad
-Imdat
-Imelda
-Imerli
-Imke
-Imkea
-Imko
-Imma
-Immacolata
-Immannus
-Immanuel
-Imme
-Immel
-Immihan
-Immo
-Imo
-Imocente
-Imogen
-Imran
-Imre
-Imtiaz
-Ina
-Inal
-Inan
-Inanc
-Ince
-Inci
-Indalecio
-India
-Indira
-Indra
-Ine
-Ineke
-Ines
-Inessa
-Ineta
-Inez
-Inga
-Ingala
-Ingbert
-Ingborg
-Inge
-Ingeborg
-Ingeburg
-Ingela
-Ingelene
-Ingelore
-Ingelotte
-Ingemar
-Ingemarie
-Ingena
-Inger
-Ingetraud
-Ingetraut
-Ingfried
-Ingird
-Ingken
-Ingmar
-Ingo
-Ingobald
-Ingobert
-Ingold
-Ingolde
-Ingolf
-Ingomar
-Ingri
-Ingrid
-Ingried
-Ingriet
-Ingrit
-Ingrun
-Ingulf
-Ingunn
-Ingvar
-Ingvild
-Ingwald
-Ingwelde
-Ingwer
-Ingwert
-Inhisaf
-Ini
-Iniga
-Inis
-Inka
-Inke
-Inken
-Inko
-Inma
-Inna
-Inno
-Ino
-Insa
-Insaf
-Inse
-Intezar
-Ioan
-Ioanis
-Ioanna
-Ioannis
-Iolanda
-Ion
-Iona
-Ionis
-Iordanis
-Ipek
-Iprahim
-Iptisem
-Ira
-Iraida
-Iraklis
-Irawan
-Irek
-Iren
-Irena
-Irene
-Ireneo
-Ireneusz
-Irfan
-Irgard
-Irham
-Iri
-Iria
-Irina
-Irini
-Iris
-Irit
-Irita
-Irja
-Irma
-Irmak
-Irmburg
-Irmel
-Irmela
-Irmeli
-Irmelin
-Irmengard
-Irmentraud
-Irmfried
-Irmfriede
-Irmg
-Irmgard
-Irmgart
-Irmhild
-Irmhilde
-Irmi
-Irmina
-Irmine
-Irmingard
-Irmintraut
-Irmis
-Irmlind
-Irmtraud
-Irmtraut
-Irmtrud
-Irna
-Irran
-Irsadi
-Irshad
-Irv
-Irvine
-Irwin
-Isa
-Isaac
-Isaak
-Isabe
-Isabel
-Isabela
-Isabell
-Isabella
-Isabelle
-Isaf
-Isai
-Isaia
-Isak
-Isan
-Isay
-Iscan
-Ischebeck
-Ise
-Isela
-Isen
-Isfan
-Isfendiyar
-Isfendyar
-Ishah
-Ishak
-Ishild
-Ishmael
-Ishtiaq
-Isidor
-Isidora
-Isidoro
-Isidro
-Isik
-Isil
-Isilak
-Isilay
-Isin
-Isis
-Iskan
-Iskandar
-Iske
-Iskemder
-Iskendar
-Iskender
-Islam
-Islim
-Isma
-Ismael
-Ismahan
-Ismail
-Isman
-Ismayil
-Ismene
-Ismet
-Ismeta
-Ismihan
-Ismilda
-Ismuni
-Isnail
-Iso
-Isolde
-Isotta
-Ispiro
-Isra
-Israel
-Israfil
-Israil
-Issa
-Issah
-Issam
-Isset
-Issifu
-Issy
-Istayfan
-Istayfo
-Istim
-Isturai
-Istvan
-Isuf
-Ita
-Italia
-Italiano
-Italo
-Ito
-Itris
-Iulian
-Iva
-Ivan
-Ivana
-Ivanda
-Ivanka
-Ivano
-Ivar
-Iven
-Iver
-Ivett
-Ivetta
-Ivette
-Ivica
-Ivka
-Ivo
-Ivon
-Ivona
-Ivone
-Ivonne
-Ivor
-Iwan
-Iwanowitsch
-Iwer
-Iwo
-Iwona
-Iyad
-Iyidogan
-Izabella
-Izeltin
-Izet
-Izeta
-Izhak
-Izidor
-Izmedin
-Izo
-Izzeddian
-Izzet
-Izzettin
-Jaafar
-Jaak
-Jaali
-Jaana
-Jaap
-Jabbo
-Jabra
-Jac
-Jacek
-Jachigar
-Jachim
-Jacinta
-Jacintha
-Jacinto
-Jack
-Jackie
-Jackob
-Jackow
-Jackson
-Jacky
-Jaclin
-Jacob
-Jacoba
-Jacobe
-Jacobus
-Jacqueline
-Jacquelyn
-Jacques
-Jacuado
-Jacueline
-Jad
-Jadeviga
-Jadigar
-Jadwiga
-Jaeono
-Jafar
-Jafer
-Jafia
-Jaglidere
-Jagoda
-Jahamil
-Jahangir
-Jahic
-Jahja
-Jahn
-Jaime
-Jake
-Jaki
-Jakim
-Jako
-Jakob
-Jakobine
-Jakobs
-Jakobus
-Jakop
-Jakov
-Jakow
-Jakub
-Jakup
-Jakupi
-Jalal
-Jalcin
-Jale
-Jalil
-Jalke
-Jalle
-Jam
-Jama
-Jamal
-Jaman
-Jamchid
-James
-Jamet
-Jamie
-Jamil
-Jamila
-Jamile
-Jamileh
-Jamiletta
-Jamin
-Jamina
-Jamir
-Jamshed
-Jamshid
-Jan
-Jana
-Janai
-Jane
-Janek
-Janet
-Janett
-Janette
-Janez
-Janfried
-Janhangim
-Jani
-Janica
-Janice
-Janicza
-Janie
-Janik
-Janin
-Janina
-Janine
-Janis
-Janita
-Janja
-Janka
-Janke
-Janko
-Jann
-Janna
-Janne
-Janneke
-Jannes
-Jannet
-Jannetje
-Jannette
-Janni
-Jannica
-Jannice
-Jannick
-Jannis
-Janny
-Jano
-Janos
-Janosch
-Janpeter
-Jans
-Janssen
-Jantje
-Jantjen
-January
-Janus
-Janusch
-Janusz
-Japaree
-Jaqueline
-Jaques
-Jara
-Jarah
-Jarek
-Jarg
-Jari
-Jarid
-Jariya
-Jarl
-Jarmila
-Jarno
-Jaro
-Jaromir
-Jaros
-Jaroslaus
-Jaroslav
-Jaroslava
-Jaroslaw
-Jasar
-Jasari
-Jascha
-Jaschik
-Jasemin
-Jasenka
-Jaser
-Jashid
-Jasin
-Jasmin
-Jasmina
-Jasmine
-Jasminka
-Jasna
-Jason
-Jasper
-Jassim
-Jassin
-Javed
-Javier
-Javus
-Jawad
-Jawaid
-Jawald
-Jawhar
-Jawid
-Jay
-Jayne
-Jean
-Jeanett
-Jeanette
-Jeanine
-Jeanna
-Jeanne
-Jeannette
-Jeannine
-Jed
-Jedvige
-Jef
-Jeff
-Jeffery
-Jeffrey
-Jeffry
-Jehab
-Jehia
-Jekatarina
-Jekaterina
-Jela
-Jelena
-Jelger
-Jeli
-Jelica
-Jelka
-Jella
-Jelsa
-Jelsche
-Jelste
-Jelto
-Jem
-Jemina
-Jemla
-Jemmy
-Jendoubi
-Jeniffer
-Jennefer
-Jenni
-Jennifer
-Jennipher
-Jenny
-Jennyfer
-Jens
-Jensen
-Jenz
-Jeremy
-Jerg
-Jerko
-Jeroen
-Jerome
-Jeronimo
-Jeroslaw
-Jerry
-Jerzy
-Jes
-Jesko
-Jesper
-Jess
-Jesse
-Jessica
-Jessie
-Jessika
-Jessy
-Jessyka
-Jesus
-Jeter
-Jette
-Jetty
-Jevsi
-Jewi
-Jeying
-Jhonny
-Jibbo
-Jihad
-Jila
-Jill
-Jim
-Jimmy
-Jiri
-Jirka
-Jirko
-Jirre
-Jit
-Jitka
-Jjochen
-Jlija
-Jo
-Joachim
-Joacim
-Joakim
-Joamana
-Joan
-Joana
-Joanis
-Joanna
-Joanne
-Joannis
-Joao
-Joaquim
-Joaquin
-Joathan
-Jobje
-Jobst
-Jocelyn
-Jocelyne
-Jochaim
-Jochem
-Jochen
-Jochim
-Jochum
-Jockel
-Jod
-Joda
-Jodwiga
-Jody
-Joe
-Joedjan
-Joel
-Joelle
-Joen
-Joep
-Joerg
-Joey
-Johan
-Johanes
-Johanfir
-Johann
-Johanna
-Johanne
-Johannes
-Johannette
-Johannis
-John
-Johnanna
-Johnie
-Johnny
-Johnson
-Johny
-Jojo
-Joke
-Jokiel
-Jokob
-Jokow
-Jola
-Jolan
-Jolanda
-Jolande
-Jolanta
-Jolante
-Jolanthe
-Jolly
-Jon
-Jona
-Jonas
-Jonat
-Jonathan
-Jones
-Jonhannes
-Jonka
-Jonn
-Jonna
-Jonni
-Jonnie
-Jonny
-Jons
-Jonus
-Jonuz
-Jony
-Joos
-Joost
-Jop
-Jordan
-Jordana
-Jordi
-Joren
-Jorg
-Jorge
-Jori
-Jorinde
-Jorita
-Jorjet
-Jork
-Jorke
-Jorn
-Jorny
-Jos
-Josche
-Joschi
-Jose
-Josef
-Josefa
-Josefin
-Josefina
-Josefine
-Josepf
-Joseph
-Josepha
-Josephe
-Josephine
-Josette
-Joshua
-Josi
-Josiane
-Josie
-Josif
-Josip
-Josipa
-Jost
-Josua
-Josue
-Josy
-Joumaa
-Jousef
-Jova
-Jovan
-Jovanka
-Jovica
-Jovo
-Jowan
-Joy
-Joyce
-Jozef
-Jozo
-Jozsa
-Jozsef
-Jradj
-Jrfan
-Jrma
-Juan
-Juana
-Juanita
-Jude
-Judica
-Judit
-Judita
-Judite
-Judith
-Juditha
-Judwig
-Judy
-Juelende
-Juergen
-Jugoslaw
-Juha
-Juhani
-Jukka
-Jukovic
-Jula
-Jule
-Julia
-Julian
-Juliana
-Juliane
-Julianka
-Julianna
-Julianne
-Julie
-Julien
-Juliet
-Julietta
-Juliette
-Julija
-Julijana
-Julika
-Julio
-Julita
-Julitta
-Julius
-July
-June
-Junita
-Junus
-Junzo
-Jupp
-Jura
-Juraj
-Jurdanur
-Jure
-Jurek
-Jurgen
-Juri
-Jurij
-Jurina
-Jurine
-Jurinus
-Juris
-Juro
-Jury
-Jusef
-Juso
-Jussi
-Just
-Justice
-Justin
-Justina
-Justine
-Justiniano
-Justino
-Justinus
-Justo
-Justus
-Justyna
-Jusuf
-Juta
-Jutta
-Juwelen
-Jvone
-Jytte
-Kaan
-Kabil
-Kablan
-Kabri
-Kada
-Kadar
-Kaddour
-Kadem
-Kadema
-Kader
-Kadev
-Kadhim
-Kadia
-Kadin
-Kadir
-Kadire
-Kadiri
-Kadmi
-Kadri
-Kadriye
-Kaduiye
-Kaethe
-Kafiye
-Kagan
-Kagir
-Kahla
-Kahraman
-Kahriman
-Kahrman
-Kahtan
-Kai
-Kaie
-Kaija
-Kain
-Kaisa
-Kaisu
-Kaj
-Kaja
-Kajetan
-Kajo
-Kakil
-Kal
-Kala
-Kalhan
-Kali
-Kalia
-Kalim
-Kalina
-Kaljic
-Kalkan
-Kalle
-Kalli
-Kalliopi
-Kaloudis
-Kalpak
-Kaltoum
-Kalus
-Kalust
-Kaluza
-Kam
-Kama
-Kamal
-Kamaran
-Kamber
-Kambis
-Kamd
-Kamel
-Kamer
-Kami
-Kamiel
-Kamil
-Kamila
-Kamile
-Kamilla
-Kamillus
-Kaminran
-Kamuran
-Kan
-Kanber
-Kanci
-Kanco
-Kander
-Kanfred
-Kani
-Kanischka
-Kanjo
-Kannici
-Kanssar
-Kant
-Kaplan
-Kaptan
-Kar
-KarWilhelm
-Kara
-Karabas
-Karabay
-Karabey
-Karabiyik
-Karabulat
-Karaca
-Karacaoglan
-Karacelik
-Karachalil
-Karadal
-Karadayi
-Karademir
-Karail
-Karakas
-Karakus
-Karakuzu
-Karalina
-Karaman
-Karamani
-Karamese
-Karan
-Karanfil
-Karaoglan
-Karatas
-Karda
-Karder
-Kardesler
-Kare
-Karel
-Karem
-Karen
-Karena
-Karfried
-Karheinz
-Kari
-Karia
-Kariheinz
-Karim
-Karima
-Karin
-Karina
-Karine
-Karip
-Karita
-Karkonjafarabadi
-Karl
-Karla
-Karlaugust
-Karlfred
-Karlfried
-Karlfriedrich
-Karlhans
-Karlheinz
-Karli
-Karlin
-Karlis
-Karljosef
-Karlmann
-Karlo
-Karlpeter
-Karma
-Karman
-Karmelo
-Karmen
-Karmi
-Karol
-Karola
-Karolin
-Karolina
-Karoline
-Karolus
-Karoly
-Karolyne
-Kars
-Karst
-Karsta
-Karsten
-Kartal
-Kartharina
-Karthrin
-Kartrin
-Karzim
-Kasal
-Kascha
-Kaschif
-Kasem
-Kasetcilik
-Kasi
-Kasif
-Kasife
-Kasim
-Kasimir
-Kaspar
-Kasper
-Kassandra
-Kassein
-Kassem
-Kassen
-Kassian
-Kast
-Kastulus
-Kata
-Katalin
-Katar
-Katarina
-Katarzyna
-Kate
-Katerina
-Katerine
-Kath
-Katharin
-Katharina
-Katharine
-Katherina
-Katherine
-Kathi
-Kathie
-Kathl
-Kathleen
-Kathlen
-Kathrein
-Kathrin
-Kathrina
-Kathryn
-Kathy
-Kati
-Katia
-Katie
-Katina
-Katip
-Katirye
-Katja
-Katjana
-Katleen
-Kato
-Katoliki
-Katri
-Katrin
-Katrina
-Katy
-Kaus
-Kavas
-Kay
-Kaya
-Kayacan
-Kayahan
-Kayhan
-Kayra
-Kazak
-Kazanfer
-Kazazic
-Kazem
-Kazim
-Kazimierz
-Kazimir
-Kazuo
-Kea
-Kebair
-Kebir
-Kefli
-Kehkshan
-Kei
-Keija
-Keike
-Keir
-Keith
-Keiwan
-Kekez
-Keksal
-Kelava
-Kelemen
-Keles
-Kelly
-Kemal
-Kemaletin
-Kemalettin
-Kemali
-Kemar
-Kemed
-Kemerkaya
-Keml
-Ken
-Kenadenu
-Kenan
-Kendra
-Keni
-Kennedy
-Kenneth
-Kenny
-Keno
-Kenon
-Kent
-Keramet
-Keramettin
-Keran
-Kerem
-Keren
-Kerim
-Keriman
-Kerime
-Kerine
-Keris
-Kerkes
-Kermanshani
-Kerrin
-Kersin
-Kerst
-Kersten
-Kersti
-Kerstin
-Kesegi
-Keser
-Keskin
-Kesten
-Kester
-Ketel
-Ketharina
-Kethe
-Kevin
-Kevni
-Kevser
-Keyvan
-Kezban
-Keziban
-Khachfe
-Khadra
-Khalaf
-Khald
-Khaled
-Khalid
-Khalil
-Khami
-Khamliti
-Khan
-Khanaqa
-Khasro
-Khattar
-Kheirallah
-Khemais
-Khodr
-Khoei
-Khosrawan
-Khosro
-Khurshid
-Kian
-Kibar
-Kicill
-Kiel
-Kierstin
-Kiessling
-Kiet
-Kiki
-Kikic
-Kilian
-Kilic
-Killi
-Killian
-Kim
-Kimberley
-Kimberly
-Kimmo
-Kimon
-Kin
-Kina
-King
-Kinga
-Kingsley
-Kinik
-Kiper
-Kir
-Kira
-Kiraz
-Kiriaki
-Kiriakitsa
-Kiriakos
-Kirik
-Kirjakos
-Kirk
-Kirman
-Kirsten
-Kirsti
-Kirstie
-Kirstin
-Kis
-Kismet
-Kitidis
-Kitso
-Kitti
-Kitty
-Kivanc
-Kivrak
-Kiyam
-Kiyan
-Kiyas
-Kiyasettin
-Kiymet
-Kjartan
-Kjel
-Kjeld
-Kjell
-Klaas
-Klara
-Klarin
-Klarissa
-Klarlies
-Klas
-Klaudia
-Klaudius
-Klaus
-Klausdieter
-Klauspeter
-Klein
-Klemens
-Klement
-Klementine
-Klements
-Klemenz
-Klenie
-Kleo
-Kleopatra
-Klodwald
-Klos
-Klothilde
-Knapp
-Knobelsdorf
-Knoll
-Knonsani
-Knstantin
-Knud
-Knut
-Knuth
-Kobra
-Kobus
-Koc
-Koca
-Kocademir
-Kocak
-Koclu
-Kocyigit
-Koen
-Koester
-Kofi
-Kofinkansah
-Kofl
-Kohsar
-Koi
-Kolja
-Kolman
-Kolos
-Kolumban
-Komini
-Konca
-Konde
-Konni
-Konny
-Konrad
-Konradin
-Konradine
-Konsantions
-Konstadinos
-Konstance
-Konstand
-Konstandinos
-Konstandinus
-Konstantia
-Konstantin
-Konstantina
-Konstantinas
-Konstantinos
-Konstantinus
-Konstanze
-Koo
-Koop
-Koopman
-Kor
-Kora
-Koral
-Koraltan
-Koray
-Korbinian
-Kord
-Kordel
-Kordi
-Kordmahalleh
-Kordula
-Koreay
-Korina
-Korinna
-Korkut
-Korl
-Kornel
-Kornela
-Kornelia
-Kornelius
-Kosa
-Kosakio
-Kosi
-Kosima
-Kosmas
-Kosta
-Kostak
-Kostakis
-Kostas
-Kourosch
-Kovac
-Koyuncu
-Kraen
-Krafft
-Krasimira
-Kredel
-Kreil
-Krein
-Krenzlin
-Kreske
-Kreszentia
-Kreszenz
-Kreszenzia
-Kriemhild
-Kriemhilde
-Krien
-Krimhild
-Krimhilde
-Krina
-Kriona
-Kris
-Krishna
-Krista
-Kristel
-Kristell
-Kristen
-Krister
-Kristian
-Kristiana
-Kristiane
-Kristin
-Kristina
-Kristine
-Kristjan
-Kristo
-Kristof
-Krste
-Krunoslav
-Kruse
-Krystian
-Krystina
-Krystyna
-Krzystof
-Krzysztof
-Ksenia
-Ksenija
-Kubat
-Kubi
-Kubilay
-Kublay
-Kuddusi
-Kudret
-Kuffour
-Kujtim
-Kukus
-Kula
-Kulak
-Kulem
-Kulwant
-Kum
-Kuman
-Kumar
-Kumro
-Kumru
-Kund
-Kuni
-Kunibert
-Kunigunda
-Kunigunde
-Kuno
-Kunt
-Kunter
-Kuny
-Kurban
-Kurbani
-Kurd
-Kureys
-Kurt
-Kurtbey
-Kurth
-Kurtulus
-Kuryo
-Kuscu
-Kutlu
-Kutluhan
-Kutret
-Kuyumcusu
-Kwadwo
-Kwaku
-Kwame
-Kwane
-Kwasi
-Kypiakos
-Kyra
-Kyriakos
-Kyrill
-Kzim
-Laaraichi
-Labitzue
-Lada
-Ladan
-Ladislau
-Ladislaus
-Ladislav
-Ladislava
-Lado
-Lady
-Lago
-Lahad
-Lahdo
-Lahi
-Laila
-Laios
-Lajos
-Lakdhar
-Lakhdar
-Lakis
-Lal
-Lala
-Lale
-Lam
-Lamadane
-Lambert
-Lambertine
-Lambertus
-Lambrecht
-Lambros
-Lamia
-Lamina
-Lamis
-Lampert
-Lamprecht
-Lampros
-Lana
-Lander
-Landolf
-Lanfranco
-Lans
-Lanz
-Lara
-Larba
-Larisa
-Larissa
-Larkin
-Larrisa
-Larry
-Lars
-Laslo
-Lasse
-Laszek
-Laszlo
-Lateef
-Latif
-Latifa
-Latife
-Lau
-Laura
-Laure
-Laureano
-Laurence
-Laurencja
-Laurent
-Laurentius
-Laurenz
-Laurette
-Lauri
-Lauriano
-Lauritz
-Lauro
-Laus
-Laux
-Lawrence
-Lazar
-Lazara
-Lazare
-Lazaros
-Lazo
-Le
-Lea
-Leal
-Lean
-Leana
-Leander
-Leandro
-Leandros
-Lech
-Leda
-Leen
-Leena
-Leendert
-Lefika
-Leida
-Leidia
-Leif
-Leila
-Leilah
-Leili
-Lein
-Leina
-Leino
-Lejla
-Lekic
-Lel
-Lela
-Lelia
-Lem
-Leman
-Lemke
-Lemme
-Lemonia
-Lemonie
-Lemos
-Lena
-Lenard
-Lenchen
-Lene
-Lengiz
-Lenhard
-Leni
-Lenka
-Lenke
-Lennard
-Lennart
-Lennert
-Leny
-Lenz
-Leo
-Leocadio
-Leocardia
-Leokadia
-Leon
-Leona
-Leonard
-Leonarda
-Leonardo
-Leone
-Leonel
-Leonhard
-Leonhardt
-Leoni
-Leonia
-Leonid
-Leonida
-Leonidas
-Leonides
-Leonids
-Leonie
-Leonisa
-Leonora
-Leonore
-Leontin
-Leontina
-Leontine
-Leopold
-Leopoldine
-Leopolt
-Lepold
-Ler
-Lerna
-Lerzan
-Lesbeth
-Lesley
-Leslie
-Leszek
-Leta
-Letekidan
-Leticia
-Letizia
-Leuk
-Leuthold
-Lev
-Levat
-Leve
-Levent
-Levin
-Levis
-Lew
-Lewe
-Lewis
-Lex
-Ley
-Leyla
-Lia
-Liada
-Liana
-Liane
-Lianne
-Liberal
-Libni
-Liborio
-Liborius
-Libwin
-Lida
-Liddi
-Liddy
-Lidi
-Lidia
-Lidija
-Lidio
-Lido
-Lidwina
-Lie
-Liebella
-Liebgard
-Lien
-Lienhard
-Liesa
-Liesbet
-Liesbeth
-Lieschen
-Liese
-Liesel
-Lieselore
-Lieselott
-Lieselotte
-Lieska
-Liesl
-Liet
-Ligia
-Lihovac
-Liidia
-Lila
-Lile
-Lili
-Lilia
-Lilian
-Liliana
-Liliane
-Lilie
-Lilija
-Lilio
-Lilith
-Lilja
-Liljana
-Lill
-Lilla
-Lilli
-Lillian
-Lilly
-Lilo
-Lily
-Lim
-Liman
-Lin
-Lina
-Linchen
-Lind
-Linda
-Linder
-Lindsey
-Lindy
-Line
-Linea
-Linhs
-Lini
-Link
-Linn
-Lino
-Linus
-Lioba
-Lion
-Lionel
-Lippert
-Lirija
-Lirije
-Lis
-Lisa
-Lisanne
-Lisbet
-Lisbeth
-Lise
-Lisel
-Liselene
-Liselott
-Liselotte
-Lisetta
-Lisette
-Lisi
-Liska
-Lisl
-Lisowicz
-Liss
-Lissa
-Lisse
-Lissi
-Lissy
-Litse
-Litterio
-Liubica
-Liudger
-Liv
-Live
-Livia
-Livio
-Livius
-Liya
-Liza
-Lizette
-Lizzy
-Ljiljana
-Ljow
-Ljuba
-Ljuban
-Ljubica
-Ljubinka
-Ljubisa
-Ljubivoje
-Ljubo
-Ljubomir
-Ljubow
-Ljuca
-Ljudmila
-Llewelyn
-Lloyd
-Lobo
-Loebnitz
-Loher
-Loic
-Lokman
-Lola
-Lolita
-Lolo
-Lona
-Lone
-Longin
-Longina
-Loni
-Lonie
-Lonn
-Lonny
-Lony
-Lookmann
-Lopes
-Lopez
-Lora
-Lorant
-Lorchen
-Lore
-Loredana
-Lorelies
-Loren
-Lorena
-Lorenette
-Lorens
-Lorentz
-Lorenz
-Lorenza
-Lorenze
-Lorenzo
-Loreta
-Loreto
-Loretta
-Lorette
-Lori
-Lorin
-Lorina
-Loris
-Lorita
-Loritz
-Lorle
-Lorna
-Lorraine
-Lory
-Lotar
-Lotfi
-Lotha
-Lothar
-Lother
-Lotje
-Lotta
-Lottchen
-Lotte
-Lottegrete
-Lotti
-Lotty
-Lotz
-Lou
-Louis
-Louisa
-Louise
-Louisette
-Loukas
-Loukili
-Loulou
-Lourdes
-Lourenco
-Lovro
-Loy
-Lrs
-Lu
-Luana
-Luba
-Lubbo
-Lubisch
-Lubitza
-Lubomir
-Luc
-Luca
-Lucan
-Lucano
-Lucas
-Luci
-Lucia
-Lucian
-Luciana
-Luciano
-Lucic
-Lucie
-Lucien
-Lucienne
-Lucija
-Lucina
-Lucinka
-Lucio
-Lucius
-Lucja
-Lucjan
-Lucretia
-Lucrezia
-Lucy
-Lucyna
-Ludgarda
-Ludger
-Ludgera
-Ludgerus
-Ludi
-Ludmila
-Ludmilla
-Ludo
-Ludof
-Ludolf
-Ludolfine
-Ludovic
-Ludovica
-Ludovico
-Ludovika
-Ludowika
-Ludvik
-Ludwig
-Ludwiga
-Ludwik
-Ludwin
-Ludwina
-Ludwine
-Ludwing
-Luer
-Luetfi
-Lui
-Luigi
-Luigia
-Luigino
-Luis
-Luisa
-Luise
-Luisella
-Luitgard
-Luitgart
-Luitjen
-Luitpold
-Luiza
-Luka
-Lukadia
-Lukardis
-Lukas
-Lul
-Lule
-Lulu
-Lulzim
-Luna
-Lund
-Lupo
-Lupold
-Lurtz
-Lusia
-Luta
-Lutfi
-Lutfiye
-Lutger
-Luther
-Lutvi
-Lutvija
-Lutwin
-Lutz
-Luule
-Lux
-Luz
-Luzha
-Luzi
-Luzia
-Luzian
-Luzie
-Luzifer
-Luzine
-Luzy
-Ly
-Lya
-Lyda
-Lydia
-Lydie
-Lydija
-Lykke
-Lyle
-Lynda
-Lynn
-Lynne
-Lysann
-Lyubica
-MEROLA
-Maadour
-Maam
-Maan
-Maarit
-Maat
-Maatje
-Mab
-Mabel
-Mable
-Mabrouk
-Mac
-Machi
-Machir
-Macide
-Maciej
-Macit
-Mack
-Macke
-Madalena
-Maddalena
-Maddy
-Madelaine
-Madeleine
-Madelen
-Madeline
-Madia
-Madina
-Madjid
-Madlen
-Madlena
-Madonna
-Mads
-Madunic
-Mady
-Mae
-Maena
-Mafalda
-Mafuk
-Magareta
-Magarete
-Magaretha
-Magarethe
-Magda
-Magdalen
-Magdalena
-Magdalene
-Magdalina
-Magdelena
-Magdi
-Magdolna
-Magdy
-Maged
-Maggi
-Maggie
-Magidy
-Magita
-Magna
-Magni
-Magno
-Magnus
-Magret
-Magreta
-Magrit
-Magsood
-Mahamoud
-Maharan
-Mahboob
-Mahboub
-Mahbub
-Mahbube
-Mahdi
-Maher
-Mahfooz
-Mahgul
-Mahin
-Mahinic
-Mahir
-Mahitipol
-Mahjouba
-Mahjoubi
-Mahmad
-Mahmat
-Mahmed
-Mahmet
-Mahmmood
-Mahmond
-Mahmood
-Mahmoud
-Mahmound
-Mahmout
-Mahmud
-Mahmure
-Mahmut
-Mahrdeha
-Mahsuni
-Maic
-Maida
-Maide
-Maidel
-Maidlin
-Maija
-Maik
-Maika
-Maike
-Maiken
-Maiko
-Maimana
-Main
-Maina
-Maio
-Maiqorota
-Maira
-Mais
-Maita
-Maja
-Majbritt
-Majda
-Majde
-Majdi
-Majeed
-Majida
-Majna
-Majo
-Majre
-Makas
-Makbule
-Makir
-Maksut
-Malaika
-Malaine
-Malcher
-Malcolm
-Maleika
-Malek
-Malen
-Malene
-Malgorzata
-Mali
-Malic
-Maliehe
-Malies
-Maliha
-Malik
-Malika
-Malike
-Malikejder
-Malimure
-Malin
-Malina
-Malitta
-Malka
-Malki
-Malkic
-Malla
-Malle
-Malou
-Malte
-Malve
-Malwine
-Mamdouh
-Mamo
-Mamoun
-Manada
-Manda
-Mandana
-Mandus
-Mandy
-Manel
-Manfr
-Manfred
-Manfredi
-Manfredo
-Manfried
-Mangold
-Mangrethe
-Mani
-Maniela
-Manik
-Manina
-Manirul
-Manja
-Manjen
-Manoah
-Manola
-Manolito
-Manolya
-Manon
-Manouchehr
-Manrico
-Mansoar
-Mansoor
-Mansour
-Mansueto
-Mansur
-Manu
-Manuel
-Manuela
-Manuele
-Manuelle
-Manutchehr
-Manutschehr
-Many
-Manzoor
-Mao
-Maqsood
-Mara
-Maral
-Marange
-Maranje
-Marat
-Marauge
-Maravge
-Maravgi
-Marc
-Marcel
-Marcela
-Marcelino
-Marcell
-Marcella
-Marcelle
-Marcellina
-Marcello
-Marcelo
-Marchak
-Marcia
-Marciana
-Marciano
-Marcin
-Marcinek
-Marco
-Marcos
-Marcous
-Marcus
-Mardjan
-Mare
-Mareen
-Marei
-Mareike
-Mareile
-Marek
-Mareka
-Mareke
-Marella
-Marem
-Maren
-Marena
-Maresa
-Maresi
-Maret
-Marga
-Margaliese
-Margard
-Margaret
-Margareta
-Margarete
-Margareth
-Margaretha
-Margarethe
-Margarida
-Margarita
-Margaritta
-Margarte
-Margerete
-Margerita
-Marget
-Margherita
-Margid
-Margit
-Margita
-Margite
-Margith
-Margitta
-Margot
-Margotd
-Margott
-Margred
-Margreet
-Margret
-Margrete
-Margreth
-Margrethe
-Margrid
-Margrit
-Margrita
-Margrith
-Marguerite
-Margund
-Mari
-Maria
-Mariam
-Marian
-Mariana
-Mariane
-Mariangela
-Mariann
-Marianna
-Marianne
-Mariano
-Mariawalburg
-Marica
-Marichen
-Marie
-Marieanne
-Mariechen
-Marieen
-Mariela
-Mariele
-Marielen
-Marielena
-Marielies
-Marieliese
-Marielise
-Mariella
-Marielle
-Marielo
-Marielu
-Marieluise
-Marieta
-Marietheres
-Marietta
-Mariette
-Marifa
-Marij
-Marija
-Marijan
-Marijana
-Marijka
-Marijke
-Marik
-Marika
-Marike
-Mariko
-Marile
-Marilen
-Marilena
-Marilene
-Marili
-Marilie
-Marilies
-Marilyn
-Marilyne
-Marin
-Marina
-Marine
-Marinel
-Marinetta
-Marinko
-Marino
-Marinos
-Marinus
-Mario
-Marioara
-Mariola
-Marion
-Mariona
-Maris
-Marisa
-Mariska
-Marisol
-Marit
-Marita
-Maritha
-Maritheres
-Marithres
-Maritta
-Maritza
-Marius
-Mariusz
-Marivan
-Marja
-Marjan
-Marjana
-Marjanna
-Marjeta
-Marjetta
-Marjo
-Marjorie
-Marjut
-Mark
-Market
-Marketa
-Markfried
-Markje
-Markku
-Marko
-Markos
-Markus
-Markward
-Markwart
-Marla
-Marlanne
-Marleen
-Marlen
-Marlena
-Marlene
-Marli
-Marlien
-Marlies
-Marliese
-Marlis
-Marlise
-Marlit
-Marlitt
-Marlon
-Marlow
-Marlowe
-Marly
-Marma
-Marnix
-Marny
-Maro
-Marogi
-Maron
-Marona
-Marouf
-Marrazzo
-Marret
-Marri
-Marry
-Marshall
-Marta
-Marte
-Marten
-Martens
-Martha
-Marthe
-Marthen
-Marthias
-Marti
-Martia
-Martien
-Martin
-Martina
-Martine
-Martinez
-Martinho
-Martino
-Martins
-Martje
-Martl
-Marton
-Martos
-Martti
-Martyna
-Maruf
-Marugi
-Marulyn
-Marus
-Marvin
-Marwan
-Marwin
-Marx
-Mary
-Maryam
-Maryan
-Maryana
-Maryline
-Marylyn
-Maryse
-Marzell
-Marzella
-Marzellin
-Marzena
-Marziye
-Marzouk
-Masa
-Masallah
-Masaud
-Mascha
-Masen
-Mases
-Masha
-Maslu
-Maso
-Masoom
-Masoud
-Masoume
-Masoumeh
-Masoumek
-Masrur
-Massimiliano
-Massimo
-Massoud
-Mastouri
-Masuda
-Masum
-Masut
-Mat
-Mate
-Mateja
-Maternus
-Mathewkutty
-Mathias
-Mathieu
-Mathilde
-Mathilder
-Mathis
-Matias
-Matie
-Matieu
-Matija
-Matije
-Matilda
-Matilde
-Matina
-Matis
-Matka
-Mato
-Matos
-Matouk
-Mats
-Matt
-Matteo
-Matthes
-Mattheus
-Matthew
-Matthia
-Matthias
-Matthis
-Matti
-Mattias
-Matvei
-Maud
-Maude
-Mauran
-Maureen
-Mauri
-Maurice
-Mauricio
-Mauritius
-Mauritz
-Maurizio
-Mauro
-Maus
-Mavis
-Mavizer
-Mawuli
-Max
-Maxi
-Maxim
-Maxime
-Maximilian
-Maximiliane
-Maximino
-Maximo
-Maximus
-Maxwell
-May
-Maya
-Maybrit
-Maybritt
-Maybritta
-Mayed
-Mayer
-Mayir
-Mayk
-Mayr
-Maysar
-Mazen
-Mazgen
-Mazhar
-Mazlum
-Mazlun
-Mcgowan
-Mchael
-Meart
-Meaza
-Mebrat
-Mecatten
-Mecdi
-Mechmet
-Mechtab
-Mechthild
-Mechthilde
-Mechtild
-Mechtilde
-Mecide
-Mecit
-Meclude
-Mecnun
-Medard
-Medardus
-Medea
-Medeni
-Medet
-Media
-Mediha
-Medina
-Medine
-Medini
-Medo
-Medtin
-Medzad
-Medzid
-Mee
-Meena
-Meent
-Meer
-Mefa
-Meftun
-Megan
-Meggi
-Meggie
-Meggy
-Mehamed
-Mehamet
-Mehbube
-Mehdi
-Mehic
-Mehida
-Mehinbasic
-Mehinovic
-Mehir
-Mehmed
-Mehmedalija
-Mehmedov
-Mehment
-Mehmet
-Mehmetali
-Mehmetmusa
-Mehmood
-Mehmut
-Mehrdad
-Mehrdokht
-Mehriban
-Mehtap
-Mehttin
-Mehyieldin
-Meibrit
-Meic
-Meicel
-Meik
-Meike
-Meiko
-Meina
-Meinart
-Meinert
-Meinhard
-Meinhardt
-Meinhart
-Meinhold
-Meino
-Meinolf
-Meinrad
-Meint
-Meio
-Meira
-Meit
-Melahat
-Melaine
-Melakat
-Melani
-Melania
-Melanie
-Melanius
-Melany
-Melba
-Melchior
-Melchiore
-Melchiorre
-Melchor
-Melda
-Melek
-Melemez
-Melet
-Melf
-Melida
-Melih
-Meliha
-Melik
-Melime
-Melina
-Melinda
-Melisa
-Melissa
-Melita
-Melitta
-Melk
-Melki
-Melle
-Melona
-Melsene
-Melven
-Melvin
-Memduh
-Memet
-Memeth
-Memili
-Memis
-Memmo
-Memnuna
-Memsud
-Men
-Menachem
-Menai
-Menda
-Mendel
-Menderes
-Mendrers
-Menduh
-Menekse
-Menelaos
-Menendi
-Meneo
-Mengistn
-Mengonli
-Menke
-Menko
-Menna
-Menne
-Menno
-Meno
-Menotti
-Mensad
-Menso
-Mensur
-Mensure
-Mentor
-Mentz
-Menz
-Meral
-Mercan
-Mercedes
-Mercy
-Merdan
-Merdanovic
-Merdin
-Meredith
-Meremi
-Merete
-Merga
-Mergem
-Meri
-Meriam
-Meric
-Merike
-Meris
-Merit
-Merita
-Meriyem
-Merja
-Merk
-Merle
-Merlin
-Merlut
-Mermet
-Merna
-Merobi
-Merset
-Mert
-Merte
-Merter
-Mertin
-Merve
-Mery
-Meryem
-Meryen
-Meryern
-Merzal
-Meset
-Mesina
-Mesnet
-Mesrur
-Messaoui
-Messelina
-Mestan
-Mesud
-Mesure
-Mesut
-Meta
-Mete
-Metella
-Metha
-Metim
-Metin
-Metiye
-Metodije
-Metta
-Mette
-Mevia
-Mevlit
-Mevludin
-Mevlut
-Meyer
-Meyveci
-Mezakez
-Mezian
-Mezit
-Mfid
-Mgoter
-Mhamed
-Mia
-Miammer
-Mian
-Miane
-Mica
-Micael
-Micaela
-Micah
-Micha
-Michael
-Michaela
-Michaele
-Michaelis
-Michail
-Michal
-Michalakis
-Michale
-Michalina
-Michaly
-Michan
-Miche
-Michel
-Michela
-Michelangelo
-Michele
-Michelina
-Micheline
-Michelino
-Michell
-Michelle
-Michi
-Michiko
-Michle
-Michuael
-Mick
-Mickey
-Micky
-Mico
-Midhad
-Midhat
-Mie
-Mieczylaw
-Mieczyslaw
-Mieczyslawa
-Mieke
-Miena
-Miesa
-Miftar
-Mignon
-Miguel
-Mih
-Mihaela
-Mihai
-Mihail
-Mihajlo
-Mihaly
-Mihat
-Miho
-Mihrali
-Mihran
-Mihriban
-Mihrican
-Miina
-Mijo
-Mika
-Mikael
-Mikaela
-Mikail
-Mikala
-Mikayil
-Mikdat
-Mike
-Mikel
-Mikhail
-Mikie
-Mikki
-Mikko
-Miklos
-Miko
-Mikolaj
-Miktat
-Mila
-Milada
-Milagros
-Milan
-Milana
-Milanka
-Milda
-Mildred
-Mile
-Milena
-Milenka
-Milenko
-Mileva
-Milhazim
-Milica
-Milicia
-Milina
-Milita
-Milivoje
-Miliza
-Miljan
-Miljena
-Miljenka
-Milko
-Milla
-Milli
-Millicent
-Millichent
-Millo
-Milly
-Milomir
-Milorad
-Milos
-Milosev
-Milosz
-Miloud
-Miltiades
-Miltiadis
-Milutin
-Milva
-Milvan
-Mima
-Mimi
-Mimke
-Mimmi
-Mimon
-Mimoun
-Mimount
-Mina
-Minas
-Minchen
-Mine
-Ming
-Minhild
-Mini
-Minje
-Minka
-Minko
-Minna
-Minni
-Minny
-Mino
-Minou
-Mioara
-Miodrag
-Mira
-Mirabi
-Mirahmad
-Mirali
-Miranda
-Mirat
-Mircea
-Mirco
-Mireille
-Mirella
-Mirelle
-Mireme
-Mireya
-Mirgun
-Miri
-Miriam
-Mirijam
-Mirilashvili
-Mirilla
-Mirja
-Mirjam
-Mirjami
-Mirjan
-Mirjana
-Mirka
-Mirko
-Mirma
-Mirna
-Mirnije
-Miro
-Miroljubika
-Miroslaus
-Miroslav
-Miroslava
-Miroslaw
-Miroslawa
-Miroslowa
-Mirsad
-Mirsada
-Mirwais
-Mirwaiss
-Miryam
-Mirza
-Mirzet
-Mirzeta
-Misa
-Misael
-Misali
-Misbah
-Mischa
-Misha
-Misko
-Misto
-Misu
-Misut
-Mita
-Mitat
-Mitchell
-Mithat
-Mithra
-Mitja
-Mitkat
-Mitko
-Mito
-Mitra
-Mitsou
-Miyase
-Mizgin
-Miábach
-Mladen
-Mmartin
-Modest
-Modesta
-Modesto
-Moed
-Mofjtaba
-Mogens
-Moh
-Mohamad
-Mohamed
-Mohamedin
-Mohamer
-Mohammad
-Mohammed
-Mohammet
-Mohammid
-Mohand
-Mohandas
-Mohmadiy
-Mohmand
-Mohmaned
-Mohmud
-Mohsen
-Mohssen
-Mohtaram
-Mohyeldin
-Moia
-Moiken
-Moise
-Moises
-Mojgan
-Mokhtar
-Mokhtet
-Moladad
-Molly
-Molo
-Molood
-Molud
-Momme
-Momoun
-Mona
-Monawara
-Moncef
-Mondher
-Mone
-Monett
-Moni
-Monica
-Moniera
-Monik
-Monika
-Monique
-Monira
-Monita
-Monitore
-Monja
-Monka
-Montesclaros
-Montgomery
-Monzer
-Mopic
-Morad
-Morandinus
-Morat
-Mordai
-Mordan
-Moreira
-Morel
-Morena
-Morice
-Morid
-Morina
-Moris
-Moritz
-Morris
-Morten
-Morteza
-Morton
-Mosa
-Moschos
-Moses
-Mosolf
-Mostafa
-Mostapha
-Mota
-Mote
-Mouloud
-Moumtaz
-Mouna
-Mounir
-Mousa
-Moussa
-Moustafa
-Mouzaffar
-Mrie
-Muaed
-Mualla
-Muamer
-Muammer
-Muammet
-Muatafa
-Mubacher
-Mubarac
-Mubarik
-Mubashar
-Mubasher
-Mudassar
-Muersel
-Mufail
-Mugaddes
-Mugain
-Muha
-Muhabbet
-Muhamad
-Muhamber
-Muhamed
-Muhament
-Muhammad
-Muhammed
-Muhammer
-Muhammet
-Muharem
-Muharema
-Muharram
-Muharrem
-Muharren
-Muharvem
-Muhattin
-Muhiddin
-Muhide
-Muhip
-Muhit
-Muhittin
-Muhlis
-Muho
-Muhsem
-Muhsen
-Muhsin
-Muhsine
-Muhtalip
-Muhteber
-Muhterem
-Muhtesem
-Muhummut
-Muhyettin
-Muir
-Muja
-Mujagic
-Mujgan
-Mujo
-Mukadder
-Mukaddes
-Mukarrem
-Mukheimer
-Mukhtar
-Mukhter
-Mukremin
-Muktet
-Mulawa
-Mulise
-Muljazim
-Mulla
-Mumin
-Mumine
-Mumtaz
-Mun
-Munat
-Munawar
-Mundi
-Mundus
-Munib
-Munir
-Munnawar
-Munnes
-Munur
-Mura
-Murad
-Muradiye
-Murat
-Murath
-Murato
-Murharrem
-Muriel
-Muriye
-Murlat
-Murray
-Mursel
-Mursit
-Murtaza
-Murtez
-Murteze
-Murwan
-Mus
-Musa
-Musaf
-Musaffer
-Musah
-Musan
-Musavet
-Musawar
-Muse
-Mushtao
-Mushtaq
-Musi
-Music
-Musie
-Muslat
-Musli
-Muslih
-Muslim
-Muslu
-Muslum
-Musrettin
-Mussawar
-Mustafa
-Mustaja
-Mustak
-Mustapha
-Mustfa
-Muteber
-Mutlu
-Mutsan
-Muttalig
-Muttalip
-Muvaffak
-Muzafer
-Muzaffar
-Muzaffer
-Muzajfer
-Muzekka
-Muzzafer
-Mviserref
-Myke
-Myrah
-Myren
-Myriam
-Myrjam
-Myrta
-Myrte
-Myrtha
-Myrthe
-Naaman
-Naazar
-Nabahat
-Nabar
-Nabi
-Nabih
-Nabil
-Nabila
-Nabili
-Nacar
-Naci
-Naciye
-Nacrye
-Nada
-Nadedja
-Nadeem
-Nader
-Naderschah
-Nadeschda
-Nadesha
-Nadeshda
-Nadezda
-Nadi
-Nadia
-Nadica
-Nadide
-Nadim
-Nadin
-Nadine
-Nadir
-Nadira
-Nadire
-Nadiya
-Nadiye
-Nadja
-Nadjeschda
-Nadjiba
-Nadjibollah
-Nadschibeh
-Nadya
-Naeem
-Naen
-Nafasat
-Nafees
-Nafi
-Nafia
-Nafis
-Nafisa
-Nafissa
-Nafiye
-Nafiz
-Nafka
-Nafuh
-Nagaschzade
-Nagenguel
-Nagibullah
-Nagihan
-Nagip
-Nagiyen
-Nagkmek
-Naglaa
-Nagwa
-Nahayan
-Nahdia
-Naheem
-Nahid
-Nahide
-Nahim
-Nahit
-Nahmen
-Nahrim
-Naide
-Naig
-Naika
-Nail
-Naile
-Naim
-Naima
-Naime
-Naine
-Naip
-Nais
-Najia
-Najib
-Najiba
-Najibullah
-Najma
-Najmi
-Nake
-Naki
-Nakiye
-Nalan
-Nalis
-Namaz
-Nami
-Namice
-Namik
-Namiye
-Namli
-Namuk
-Nana
-Nancy
-Nand
-Nanda
-Nandi
-Nandlal
-Nandor
-Nanel
-Nanett
-Nanette
-Nanja
-Nanke
-Nanna
-Nanne
-Nannet
-Nannete
-Nannette
-Nanni
-Nanno
-Nanny
-Nante
-Nantke
-Nany
-Naomi
-Napoleon
-Naquiwollah
-Narcelio
-Narciso
-Narges
-Naria
-Narije
-Nariman
-Narin
-Nart
-Nasar
-Naseer
-Naser
-Nasfi
-Nasibe
-Nasife
-Nasih
-Nasiha
-Nasim
-Nasimzabah
-Nasip
-Nasir
-Nasire
-Nasis
-Nasita
-Nasmiye
-Nasouh
-Nasreddin
-Nasreen
-Nasrin
-Nasrullah
-Nasser
-Nassrin
-Nastasi
-Nastasja
-Nasuf
-Nasuh
-Natacha
-Natale
-Natalia
-Natalie
-Natalija
-Natalina
-Natalino
-Natalio
-Natalja
-Nataly
-Natalya
-Natanja
-Natasa
-Natascha
-Natascia
-Natasha
-Nathalia
-Nathalie
-Nathaly
-Nathan
-Natice
-Natik
-Natividad
-Natja
-Natthias
-Natursteine
-Natzie
-Naum
-Naun
-Nausikaa
-Navin
-Naviz
-Nawae
-Nawal
-Nawaz
-Nawzad
-Nayif
-Nayme
-Naymetten
-Nazaire
-Nazan
-Nazar
-Nazareno
-Nazari
-Naze
-Nazi
-Nazif
-Nazife
-Nazih
-Naziha
-Nazije
-Nazik
-Nazike
-Naziker
-Naziknaz
-Nazile
-Nazim
-Nazime
-Nazin
-Nazip
-Nazir
-Nazire
-Nazit
-Naziye
-Nazli
-Nazmettin
-Nazmi
-Nazmije
-Nazmiye
-Nazrul
-Nazzareno
-Neaga
-Neati
-Nebahat
-Nebahattin
-Nebat
-Nebe
-Nebi
-Nebih
-Nebiha
-Nebil
-Nebiye
-Nebojsa
-Necat
-Necati
-Necatin
-Necattin
-Necdet
-Necedet
-Necef
-Necemettin
-Neceti
-Necfa
-Necia
-Necibe
-Necip
-Necit
-Necla
-Necmetin
-Necmettin
-Necmi
-Necmittin
-Necmiye
-Nectet
-Neda
-Nedaret
-Neddal
-Nedeljko
-Nedeltcho
-Nedim
-Nedime
-Nedin
-Nedine
-Nedjalko
-Nedo
-Nedret
-Nedzad
-Neel
-Neeltje
-Neera
-Neeus
-Nefise
-Negar
-Negead
-Nehat
-Nehbatti
-Neidet
-Neidhard
-Neil
-Neithard
-Nejat
-Nejda
-Nejdet
-Nejme
-Nejmi
-Nektarios
-Nela
-Nelda
-Nele
-Nelja
-Nelli
-Nellie
-Nellies
-Nello
-Nelly
-Nelson
-Nelu
-Nena
-Nenad
-Neon
-Neonila
-Nepomuk
-Neral
-Nerdzad
-Nerettin
-Nergis
-Nergiz
-Neriman
-Neriyman
-Nermin
-Nermina
-Nerzat
-Nesanet
-Nesanir
-Nesat
-Nese
-Nesefi
-Neset
-Nesia
-Nesib
-Nesibe
-Neside
-Nesil
-Nesim
-Nesimi
-Nesip
-Neslihan
-Neso
-Nesrim
-Nesrin
-Nessin
-Nestor
-Net
-Neta
-Neto
-Nette
-Neurize
-Neus
-Neusa
-Neuzat
-Neva
-Nevaf
-Neval
-Nevenka
-Neves
-Nevim
-Nevin
-Nevra
-Nevriye
-Nevruz
-Nevsat
-Nevzat
-Nevzet
-Nexhmi
-Neydet
-Nezafet
-Nezahat
-Nezahet
-Nezaket
-Nezamettin
-Nezamuddin
-Nezehat
-Neziah
-Nezih
-Nezihe
-Nezinat
-Nezir
-Nezntet
-Nezra
-Ngoc
-Nia
-Niazi
-Nic
-Nica
-Nicanor
-Nicat
-Niccolo
-Nicholas
-Nichole
-Nicile
-Nick
-Nickel
-Nickels
-Nicklas
-Nickmohammad
-Nickolaus
-Nickolei
-Nicky
-Niclas
-Nico
-Nicodemus
-Nicoie
-Nicol
-Nicola
-Nicolai
-Nicolaie
-Nicolangelo
-Nicolaos
-Nicolas
-Nicolaus
-Nicolay
-Nicold
-Nicole
-Nicolett
-Nicoletta
-Nicolette
-Nicolina
-Nicoline
-Nicolle
-Nicolo
-Nicos
-Nida
-Nidal
-Nidayi
-Nidia
-Niels
-Nies
-Nieves
-Nifiye
-Nigar
-Nigazi
-Nigel
-Nigisti
-Nihad
-Nihal
-Nihan
-Nihat
-Nihayet
-Nijaz
-Nijazi
-Nik
-Nike
-Niki
-Nikifor
-Nikiforos
-Nikita
-Niklaos
-Niklas
-Niklaus
-Niko
-Nikodemus
-Nikodije
-Nikola
-Nikolai
-Nikolaj
-Nikolajewitsch
-Nikolajs
-Nikolaos
-Nikolas
-Nikolaus
-Nikolay
-Nikole
-Nikolei
-Nikoletta
-Nikolina
-Nikoline
-Nikolos
-Nikos
-Niku
-Nil
-Nilay
-Nilefar
-Niler
-Nilgun
-Nilla
-Nilofar
-Nilolaj
-Nils
-Nilufer
-Nima
-Nimer
-Nimet
-Nimettin
-Nimfa
-Nimon
-Nina
-Ninel
-Ninette
-Nini
-Ninja
-Nino
-Ninon
-Nis
-Nisane
-Nisani
-Nisar
-Nisha
-Nisveta
-Nita
-Nives
-Niyazi
-Niyzzi
-Niza
-Nizam
-Nizamethin
-Nizamettin
-Nizami
-Nizomettin
-Nlandu
-Noa
-Noack
-Noah
-Nobert
-Noberto
-Noble
-Noe
-Noel
-Noi
-Noman
-Nomi
-Nomine
-Nonna
-Noor
-Noorahmad
-Noori
-Nopakao
-Nora
-Norban
-Norber
-Norbert
-Norberto
-Norbet
-Norbrt
-Nord
-Nordika
-Nordin
-Nordmann
-Nore
-Noreen
-Norena
-Norfried
-Nori
-Noria
-Noriko
-Norma
-Norman
-Normann
-Normen
-Norna
-Norsen
-Nortje
-Nortrud
-Norwin
-Notburga
-Notger
-Notker
-Notruf
-Nouraddin
-Nourbakhsh
-Nourdin
-Noureddine
-Nouri
-Nouro
-Novica
-Noyal
-Noyan
-Nuammer
-Nubia
-Nuell
-Nufat
-Nuh
-Nuha
-Nuhi
-Nuhmehmet
-Nuho
-Numan
-Nunita
-Nuno
-Nunzia
-Nunziata
-Nunzio
-Nura
-Nurahmet
-Nural
-Nuran
-Nurat
-Nurattin
-Nurau
-Nuray
-Nurbanu
-Nurcan
-Nurcin
-Nurdan
-Nurdane
-Nurden
-Nurdogan
-Nure
-Nureddin
-Nurel
-Nuretin
-Nurettin
-Nureyttin
-Nurhan
-Nurhayat
-Nurhayaz
-Nurhayet
-Nuri
-Nuria
-Nurittin
-Nuriye
-Nurkan
-Nurma
-Nurretin
-Nursan
-Nursefa
-Nursel
-Nursen
-Nursun
-Nurten
-Nurulla
-Nurullah
-Nurzettin
-Nuserettin
-Nusiys
-Nusrat
-Nusret
-Nusse
-Nydia
-Oalf
-Oba
-Obaid
-Obdulia
-Obed
-Occo
-Ocke
-Octavia
-Octavian
-Octavio
-Oda
-Odabas
-Odal
-Odett
-Odetta
-Odette
-Odile
-Odilia
-Odilie
-Odin
-Odo
-Odri
-Odysseus
-Oed
-Oehmer
-Oemer
-Oentwerk
-Oezdemir
-Oezel
-Oezer
-Oflu
-Ogul
-Ogun
-Oguz
-Oguzhan
-Oguzkan
-Ohannes
-Okan
-Okay
-Okban
-Okcan
-Okcu
-Oke
-Okko
-Oksan
-Oktan
-Oktav
-Oktay
-Okumus
-Okutan
-Ola
-Olaf
-Olav
-Olberz
-Olcay
-Olcayto
-Olda
-Oldrich
-Ole
-Oleg
-Olegario
-Olena
-Olev
-Olf
-Olga
-Olgan
-Olgierd
-Olgun
-Olimpia
-Olimpio
-Olina
-Olinda
-Oliva
-Olive
-Olivella
-Oliver
-Oliveri
-Olivia
-Olivie
-Olivier
-Oliviero
-Oliwa
-Olla
-Olli
-Olly
-Olof
-Olrik
-Olsay
-Oltmann
-Olu
-Oluf
-Olympia
-Omana
-Omar
-Omareit
-Ome
-Omer
-Ommo
-Omri
-Ona
-Onat
-Onay
-Onder
-Onesimus
-Onke
-Onmaz
-Onnen
-Onner
-Onnik
-Onno
-Onofrio
-Onorato
-Ontje
-Onu
-Onur
-Onzas
-Ophelia
-Opitz
-Orak
-Oranna
-Orazia
-Orazio
-Orbay
-Orcun
-Ored
-Orest
-Oreste
-Orestis
-Orhan
-Orhankazi
-Orhant
-Orhun
-Oriano
-Orkun
-Orlando
-Orlega
-Orlinde
-Orman
-Ornan
-Ornella
-Oronzo
-Orpa
-Orpha
-Orpheus
-Orta
-Ortlieb
-Ortraud
-Ortrud
-Ortrun
-Ortwin
-Oruc
-Osama
-Osazee
-Osborne
-Oscar
-Oschwald
-Ose
-Osei
-Osgit
-Oshan
-Oskar
-Osman
-Osmanzisan
-Osmar
-Osmic
-Osmo
-Ossamah
-Ossana
-Ossi
-Ostaja
-Osvaldo
-Oswald
-Oswaldo
-Oswalt
-Oswin
-Oswina
-Otfried
-Otger
-Othman
-Othmar
-Otilia
-Otilie
-Otmar
-Oto
-Ott
-Ottaviano
-Ottavio
-Ottfried
-Ottheinrich
-Otti
-Ottilde
-Ottilia
-Ottilie
-Ottillie
-Ottmar
-Otto
-Ottokar
-Ottomar
-Otty
-Otward
-Otwin
-Otylia
-Ouahid
-Ouba
-Oussama
-Out
-Outi
-Ova
-Ovali
-Ove
-Ovid
-Ovidio
-Ovidiu
-Owe
-Oxana
-Oya
-Oymak
-Ozan
-Ozcan
-Ozimek
-Ozkan
-Ozlem
-Ozra
-Paavo
-Pablo
-Paca
-Pacifico
-Paco
-Paddlel
-Pagona
-Paisan
-Pak
-Pakize
-Pal
-Pala
-Palizdar
-Palle
-Palma
-Paloma
-Pam
-Pamela
-Pamin
-Pamuk
-Pan
-Panagiatis
-Panagiodis
-Panagiota
-Panagiotes
-Panagiotis
-Panagrotis
-Panahi
-Panayota
-Panayotis
-Pancrazio
-Pandora
-Pankraz
-Pano
-Pantaleo
-Pantaleon
-Panteleimon
-Pantelis
-Panthelis
-Paola
-Paolini
-Paolo
-Papatya
-Paplos
-Paquito
-Parameswara
-Paraschos
-Paraskevi
-Paraskiewa
-Parfen
-Parfenowitsch
-Paricia
-Paridocht
-Parthena
-Partow
-Parvaneh
-Parvez
-Parvin
-Parvis
-Parviz
-Parwis
-Pasa
-Pasaga
-Pasal
-Pasan
-Pasana
-Pascal
-Pascale
-Pascha
-Paschale
-Paschalina
-Paschalis
-Pasin
-Paskal
-Paso
-Pasqale
-Pasqua
-Pasquale
-Pasqualina
-Passos
-Pastore
-Pat
-Patience
-Patric
-Patrice
-Patricia
-Patricio
-Patrick
-Patrik
-Patriz
-Patrizia
-Patrizio
-Patrtrick
-Patrus
-Patrycja
-Patti
-Patze
-Pau
-Paul
-Paula
-Paule
-Paulette
-Pauli
-Paulin
-Paulina
-Pauline
-Paulino
-Paulo
-Paulos
-Paulsen
-Paulus
-Pauna
-Pavel
-Pavlicek
-Pavlina
-Pavlos
-Pavo
-Pawel
-Pax
-Payan
-Paylos
-Pea
-Pecunia
-Pedro
-Peer
-Peggi
-Peggy
-Pehlivan
-Peinhard
-Pejo
-Pekin
-Pekka
-Peko
-Pelagia
-Pelin
-Pellegrina
-Pellegrino
-Pembe
-Penelope
-Penpe
-Pepe
-Pepi
-Peppi
-Peppino
-Pepsi
-Per
-Peran
-Peraya
-Percy
-Perdita
-Pere
-Pereira
-Perez
-Peri
-Periha
-Perihan
-Perikles
-Periklis
-Peris
-Perisan
-Peristera
-Periza
-Perjan
-Pernille
-Pero
-Perpetua
-Perplies
-Perry
-Persida
-Persieval
-Perta
-Peruz
-Pervin
-Peta
-Petar
-Pete
-Peter
-Peteris
-Peters
-Petra
-Petrat
-Petre
-Petrea
-Petri
-Petrick
-Petrina
-Petro
-Petronela
-Petronella
-Petronilla
-Petros
-Petru
-Petrus
-Petruschka
-Petter
-Peupe
-Pevrul
-Peyman
-Peymaneh
-Peyton
-Pha
-Pharam
-Phil
-Philhard
-Philine
-Philip
-Philipe
-Philipp
-Philippa
-Philippe
-Philippine
-Philippo
-Philippos
-Phillip
-Philomena
-Philomene
-Phyllis
-Pia
-Pidder
-Piek
-Pier
-Pierangelo
-Piere
-Piergiorgio
-Pierino
-Pierluigi
-Piermaurizio
-Piero
-Pierre
-Piers
-Pieruschka
-Piesztal
-Piet
-Pieter
-Pietra
-Pietro
-Pietsch
-Pilar
-Pile
-Pilgrim
-Piliz
-Pillai
-Pina
-Pinar
-Pinarbasi
-Pine
-Ping
-Pino
-Pio
-Piotr
-Piperre
-Pippa
-Pippo
-Piraye
-Pire
-Piri
-Pirino
-Pirjo
-Pirkko
-Pirmin
-Pirminius
-Piroska
-Piruz
-Pit
-Pitt
-Pius
-Pjeer
-Placido
-Plato
-Platon
-Plutarch
-Poeten
-Pol
-Polat
-Polatkan
-Pole
-Polikarpos
-Polina
-Polixeni
-Polte
-Polykarpos
-Polyxeni
-Pompeo
-Pompeyo
-Popke
-Popoola
-Porgy
-Porkash
-Posavec
-Pour
-Powel
-Poyraz
-Prachuap
-Praxedis
-Preben
-Predrag
-Prguda
-Primiano
-Primino
-Primo
-Prince
-Princeford
-Prisca
-Priscilla
-Priska
-Prokop
-Prosper
-Prospero
-Protas
-Provino
-Pru
-Publio
-Punito
-Pura
-Pyro
-Qadi
-Qadir
-Qamar
-Qasim
-Quadeer
-Quasam
-Qudratullah
-Queenie
-Quincy
-Quintino
-Quinto
-Quintus
-Quirin
-Quirina
-Quirino
-Quiroga
-Raaemallah
-Raas
-Rab
-Raba
-Rabab
-Raban
-Rabbah
-Rabbani
-Rabe
-Rabea
-Rabi
-Rabia
-Rabieh
-Rabih
-Rabii
-Rabija
-Rabiou
-Rabiye
-Rabo
-Rached
-Rachel
-Rachid
-Rachida
-Raci
-Radek
-Radela
-Radhika
-Radi
-Radic
-Radinka
-Radir
-Radisa
-Radivoj
-Radivoje
-Radmila
-Radmilla
-Radoja
-Radojka
-Radolf
-Radomir
-Radoslav
-Radoslaw
-Radoslay
-Radovan
-Raduolf
-Rae
-Raed
-Raf
-Rafa
-Rafael
-Rafaela
-Rafaele
-Rafal
-Rafaquat
-Rafat
-Rafe
-Rafet
-Raff
-Raffael
-Raffaela
-Raffaele
-Raffaella
-Raffaello
-Rafida
-Rafie
-Rafik
-Rafiq
-Rafique
-Ragiba
-Ragip
-Ragna
-Ragnar
-Ragnhild
-Rahal
-Rahali
-Raham
-Rahel
-Rahela
-Rahim
-Rahima
-Rahime
-Rahina
-Rahine
-Rahman
-Rahmat
-Rahmer
-Rahmi
-Rahnlid
-Rahoul
-Rahsan
-Raide
-Raif
-Raife
-Raija
-Raik
-Raika
-Raila
-Raili
-Raimar
-Raimer
-Raimo
-Raimon
-Raimond
-Raimondo
-Raimund
-Raimundo
-Raina
-Rainald
-Raine
-Rainer
-Rainfred
-Raingard
-Rainhard
-Rainhardt
-Rainhart
-Raino
-Raisa
-Raissa
-Raja
-Rajab
-Rajesh
-Rajha
-Raji
-Rajif
-Rajko
-Rajna
-Raju
-Rakip
-Ralf
-Raliner
-Ralp
-Ralph
-Raluca
-Ram
-Rama
-Ramachandra
-Ramadam
-Ramadan
-Ramadon
-Raman
-Ramasan
-Ramaza
-Ramazan
-Ramazen
-Ramazon
-Rami
-Ramie
-Ramin
-Ramiro
-Ramis
-Ramiz
-Ramiza
-Ramo
-Ramon
-Ramona
-Ramosan
-Ramsan
-Ramzi
-Ramzo
-Rana
-Ranalt
-Rancke
-Randa
-Randall
-Randi
-Randle
-Rando
-Randolf
-Randolph
-Randy
-Ranghild
-Rania
-Ranja
-Ranjan
-Ranka
-Ranko
-Rano
-Raomonoff
-Raoul
-Raphael
-Raphaela
-Raphaele
-Raquel
-Raschid
-Rashed
-Rasheed
-Rashid
-Rashida
-Rashied
-Rasi
-Rasid
-Rasih
-Rasiha
-Rasim
-Rasime
-Rasin
-Rasit
-Rasma
-Rasmus
-Rassan
-Rassoolbibi
-Rath
-Rathard
-Ratib
-Ratka
-Ratko
-Rauazan
-Rauf
-Raul
-Rautgundis
-Raven
-Rawah
-Rawi
-Ray
-Raya
-Rayan
-Rayk
-Rayko
-Raymond
-Raymund
-Raymundo
-Razak
-Razamahmood
-Razija
-Razit
-Raziye
-Re
-Rea
-Read
-Rebeca
-Rebecca
-Rebekka
-Rebelo
-Rebenaque
-Recai
-Recaj
-Recef
-Recep
-Recet
-Rechi
-Records
-Reda
-Redmer
-Redzep
-Redziba
-Reemt
-Reena
-Reent
-Refa
-Refat
-Refayeddin
-Refet
-Refi
-Refik
-Refika
-Refko
-Rega
-Regelinde
-Regina
-Reginald
-Reginaldo
-Reginbert
-Regine
-Regino
-Regula
-Reha
-Rehan
-Rehana
-Rehani
-Rehm
-Rehsan
-Reichert
-Reid
-Reider
-Reidun
-Reihhold
-Reihim
-Reijo
-Reik
-Reiko
-Reimar
-Reimer
-Reimo
-Reimond
-Reimund
-Reina
-Reinald
-Reinalde
-Reinar
-Reinard
-Reinbold
-Reinelde
-Reiner
-Reinert
-Reinfred
-Reinfried
-Reingard
-Reingold
-Reinhard
-Reinhardt
-Reinhart
-Reinhild
-Reinhilde
-Reinhold
-Reinholdt
-Reinholf
-Reinhyard
-Reini
-Reinke
-Reinlinde
-Reinmer
-Reino
-Reinold
-Reint
-Reintraud
-Reintraude
-Reintraut
-Reinulf
-Reinwald
-Reionhold
-Rejai
-Reka
-Rekabi
-Rekardo
-Rekawt
-Rela
-Releff
-Relinde
-Relindis
-Rella
-Rem
-Rembert
-Reme
-Remedios
-Remi
-Remig
-Remigius
-Remme
-Remmer
-Remmert
-Remmo
-Remo
-Remon
-Remus
-Remy
-Remzedin
-Remzi
-Remzia
-Remzige
-Remzija
-Remziye
-Remziyer
-Remzye
-Ren
-Rena
-Renald
-Renaldo
-Renan
-Renat
-Renata
-Renate
-Renato
-Renaud
-Rendel
-Rene
-Renee
-Reni
-Renilde
-Renke
-Renko
-Renne
-Reno
-Rens
-Renskea
-Rente
-Renz
-Renzi
-Renzo
-Res
-Resa
-Resad
-Resai
-Resat
-Rese
-Resel
-Resep
-Reserl
-Resi
-Resie
-Resit
-Resk
-Resli
-Resmi
-Resmiye
-Ressu
-Restom
-Resul
-Reta
-Retlaw
-Reto
-Retse
-Reuben
-Revisor
-Rewert
-Rex
-Rexford
-Reyan
-Reyhan
-Reymund
-Reynaldo
-Reza
-Rezan
-Rezene
-Rezvan
-Rheinhold
-Rhena
-Rhian
-Rhonda
-Rhun
-Ria
-Riad
-Rian
-Ric
-Rica
-Ricard
-Ricarda
-Ricardo
-Riccarda
-Riccardo
-Ricco
-Rich
-Richard
-Richarda
-Richardis
-Richardo
-Richards
-Richardt
-Richmond
-Richy
-Ricia
-Rick
-Ricklef
-Ricky
-Rico
-Ricus
-Rida
-Riduan
-Ridvan
-Rieke
-Riem
-Riemer
-Ries
-Rifar
-Rifat
-Rifi
-Rifki
-Rifo
-Rigas
-Rigat
-Riglef
-Rigmor
-Rigo
-Rigobert
-Rigoletto
-Rihani
-Riitta
-Rijelha
-Rik
-Rika
-Rike
-Riken
-Rikke
-Riko
-Rikus
-Riley
-Rim
-Rima
-Rime
-Rimon
-Rina
-Rinaldo
-Rinda
-Rinelde
-Ringo
-Rinhard
-Rinje
-Rino
-Riprand
-Risa
-Risto
-Rita
-Ritha
-Riti
-Ritta
-Rittana
-Ritva
-Ritz
-Riyad
-Riyat
-Riza
-Rizah
-Rizali
-Rizja
-Rizo
-Rizvan
-Rizvi
-Rizwana
-Roald
-Rob
-Robabeh
-Robbert
-Robby
-Robedrt
-Robert
-Roberta
-Robertino
-Roberto
-Robertus
-Robil
-Robin
-Robina
-Robinson
-Robyn
-Rocco
-Rochus
-Rocio
-Rockson
-Rocky
-Rode
-Roderich
-Roderick
-Roderik
-Rodger
-Rodi
-Rodica
-Rodina
-Rodion
-Rodja
-Rodney
-Rodolfo
-Rodrigo
-Rodrigues
-Rodriguez
-Roef
-Roel
-Roelaf
-Roelof
-Roemer
-Roerd
-Rof
-Rogan
-Roger
-Rogerio
-Rohan
-Rohde
-Rois
-Roisin
-Roja
-Roland
-Rolando
-Rolende
-Rolf
-Rolfe
-Rolka
-Rolla
-Rolo
-Rolph
-Roma
-Romain
-Roman
-Romana
-Romando
-Romano
-Romanus
-Romas
-Romeo
-Romer
-Romi
-Romijn
-Romina
-Rommy
-Romolo
-Romu
-Romuald
-Romualda
-Romualdas
-Romualdo
-Romulo
-Romulus
-Romy
-Ron
-Rona
-Ronald
-Ronaldo
-Ronalt
-Ronda
-Rong
-Roni
-Ronja
-Ronne
-Ronni
-Ronnie
-Ronny
-Rony
-Roohollah
-Rook
-Roolf
-Roos
-Ropbert
-Roque
-Rosa
-Rosalba
-Rosalia
-Rosalie
-Rosalina
-Rosalind
-Rosalinde
-Rosalta
-Rosamaria
-Rosamarie
-Rosamma
-Rosamunde
-Rosan
-Rosana
-Rosanda
-Rosania
-Rosanna
-Rosanne
-Rosaria
-Rosario
-Rosarita
-Rose
-Rosegund
-Rosel
-Roseli
-Roselie
-Roselies
-Roseliese
-Roselinde
-Rosella
-Roselore
-Roselyne
-Rosemaria
-Rosemarie
-Rosemary
-Rosemie
-Rosetta
-Rosi
-Rosia
-Rosie
-Rosieta
-Rosika
-Rosin
-Rosina
-Rosita
-Rositha
-Rosl
-Roslena
-Rosmarie
-Rosmary
-Rosolino
-Ross
-Rossana
-Rossi
-Rosslan
-Rostam
-Rosute
-Roswita
-Roswith
-Roswitha
-Rosy
-Rotafsa
-Rothauge
-Roto
-Rotraud
-Rotraut
-Rouajda
-Rouchsen
-Roussos
-Rouven
-Rowena
-Rowitha
-Roxana
-Roxane
-Roy
-Roya
-Royce
-Roza
-Rozalia
-Rozita
-Rozsa
-Rrustem
-Ruben
-Rubert
-Rubin
-Rubina
-Rubini
-Rubino
-Ruby
-Ruc
-Rude
-Rudhard
-Rudhardt
-Rudhild
-Rudi
-Rudina
-Rudl
-Rudo
-Rudolf
-Rudolfine
-Rudolfo
-Rudolfs
-Rudolph
-Rudy
-Ruediger
-Ruesdue
-Ruestam
-Rufaida
-Rufat
-Rufina
-Rufino
-Rufus
-Ruggiero
-Ruhan
-Ruhi
-Ruhin
-Ruhine
-Ruhsar
-Ruhsen
-Rui
-Rukije
-Rukiye
-Rul
-Rula
-Ruland
-Rulf
-Rulmann
-Rumen
-Rumiye
-Rumjana
-Rumo
-Runa
-Rune
-Runwald
-Rupert
-Ruperta
-Ruperto
-Rupertus
-Rupi
-Ruppert
-Ruppiner
-Rupprecht
-Ruprecht
-Rusanna
-Rusen
-Rusia
-Rusmila
-Rusmir
-Russell
-Rustem
-Rustico
-Rut
-Ruta
-Ruth
-Ruthard
-Rutherford
-Ruthild
-Ruthilde
-Ruthwitha
-Ruwald
-Ruward
-Ruy
-Ruya
-Ruza
-Ruzdija
-Ruzica
-Ruzuna
-Ryan
-Rymund
-Ryszard
-Saad
-Saadet
-Saadia
-Saaed
-Saara
-Saarez
-Saba
-Sabadin
-Sabah
-Sabahaddin
-Sabahadtin
-Sabahaldin
-Sabahat
-Sabahatdin
-Sabahattin
-Sabahattun
-Sabahiddin
-Sabahudin
-Saban
-Sabani
-Sabas
-Sabastian
-Sabat
-Sabatin
-Sabatino
-Sabato
-Sabbas
-Sabdi
-Sabe
-Sabella
-Saber
-Sabetay
-Sabi
-Sabia
-Sabien
-Sabiene
-Sabiha
-Sabin
-Sabina
-Sabine
-Sabino
-Sabir
-Sabire
-Sabit
-Sabiye
-Sabo
-Saboheta
-Saboor
-Sabra
-Sabri
-Sabrija
-Sabrina
-Sabriya
-Sabriye
-Sach
-Sacha
-Sachin
-Sacid
-Sacide
-Sacit
-Sadan
-Sadegh
-Sadet
-Sadeta
-Sadetti
-Sadettin
-Sadi
-Sadidin
-Sadife
-Sadig
-Sadija
-Sadik
-Sadika
-Sadin
-Sadiq
-Sadiye
-Sado
-Sadok
-Sadrettin
-Sadri
-Sadro
-Sadt
-Sadulla
-Sadullah
-Sadun
-Sady
-Saeed
-Saeedeh
-Saeid
-Saem
-Saer
-Saettin
-Safa
-Safaettin
-Safahat
-Safak
-Safeer
-Safer
-Safet
-Safeta
-Saffer
-Saffet
-Saffettin
-Safi
-Safia
-Safien
-Safija
-Safiya
-Safiye
-Safo
-Safoka
-Safularli
-Safwan
-Sagheer
-Saglam
-Saglik
-Sagrario
-Saha
-Sahab
-Sahadettin
-Sahali
-Sahamettin
-Sahan
-Sahap
-Sahaydar
-Saheb
-Saheila
-Sahhanim
-Sahib
-Sahika
-Sahime
-Sahimerdan
-Sahin
-Sahina
-Sahine
-Sahir
-Sahismail
-Sahit
-Sahize
-Sahizer
-Sahlay
-Sahli
-Sahra
-Sahraban
-Sahser
-Sahset
-Sahsigul
-Sahsinem
-Sahverdi
-Said
-Saida
-Saide
-Saidi
-Saidt
-Saika
-Saila
-Saim
-Saima
-Saime
-Saimi
-Sainah
-Sainer
-Saip
-Sait
-Saiyed
-Sajda
-Sajeda
-Sak
-Saka
-Sakar
-Sakari
-Sakarya
-Sake
-Saki
-Sakib
-Sakibe
-Sakiha
-Sakim
-Sakin
-Sakine
-Sakip
-Sakir
-Sakire
-Sako
-Sakriye
-Sal
-Sala
-Salah
-Salahadin
-Salahattin
-Salame
-Salameh
-Salan
-Saldiray
-Sale
-Saleem
-Saleh
-Salem
-Salhattin
-Sali
-Saliba
-Salice
-Salih
-Saliha
-Salik
-Salika
-Salim
-Salime
-Salin
-Salina
-Salindar
-Salise
-Salitt
-Saliye
-Salka
-Salkan
-Salke
-Salko
-Sallam
-Sallo
-Sally
-Salma
-Salmai
-Salman
-Salme
-Salmina
-Salome
-Salomea
-Salomon
-Salomone
-Saltan
-Salum
-Salustiano
-Salvador
-Salvadore
-Salvator
-Salvatora
-Salvatore
-Salvatrice
-Salve
-Salvina
-Salvino
-Salvo
-Salwa
-Sam
-Sama
-Samad
-Samai
-Saman
-Samantha
-Samar
-Samara
-Samareh
-Samas
-Sambol
-Samca
-Samed
-Samedin
-Samee
-Sameh
-Samel
-Samer
-Samera
-Samet
-Samettin
-Samhal
-Sami
-Samica
-Samih
-Samil
-Samim
-Samir
-Samira
-Samirah
-Samiye
-Samla
-Sammai
-Sammar
-Sammy
-Samojla
-Sampri
-Sampson
-Samson
-Samu
-Samuel
-Samuli
-Samuray
-Samy
-San
-Sana
-Sanaz
-Sancar
-Sancaroglu
-Sancho
-Sanda
-Sander
-Sandor
-Sandorf
-Sandra
-Sandrina
-Sandrine
-Sandro
-Sandy
-Saner
-Sanfila
-Sang
-Sangat
-Sani
-Sanita
-Saniye
-Saniyi
-Sanja
-Sanli
-Sanna
-Sanni
-Santa
-Santangelo
-Sante
-Santiago
-Santina
-Santino
-Santo
-Santos
-Sanur
-Sanver
-Saou
-Sapahaet
-Saphi
-Saphia
-Sara
-Sarac
-Sarafettin
-Sarah
-Saramma
-Saran
-Sarantis
-Sarar
-Saras
-Sargin
-Sargon
-Sari
-Saria
-Saricam
-Sarie
-Sarike
-Sarina
-Sarine
-Sarino
-Sarira
-Sarita
-Sariye
-Sarkawt
-Sarmina
-Saro
-Sartaj
-Sarwar
-Sas
-Sasa
-Sascha
-Sasha
-Saskia
-Sati
-Satilmis
-Satimis
-Satirios
-Satiye
-Satoshi
-Sattler
-Satu
-Saturnina
-Saturnino
-Saudettin
-Saumi
-Savas
-Savasan
-Saveria
-Saverino
-Saverio
-Savina
-Savine
-Savino
-Savli
-Savmi
-Savun
-Savure
-Savvas
-Sawato
-Sawats
-Sawsa
-Say
-Sayar
-Sayd
-Sayde
-Sayed
-Sayer
-Sayeste
-Sayf
-Saygi
-Sayim
-Sayime
-Sayin
-Sayo
-Sayri
-Saziye
-Scarlett
-Schadi
-Schadja
-Schafa
-Schalk
-Schamela
-Schangy
-Scharifa
-Schauckat
-Schaudt
-Scheerien
-Scheila
-Scher
-Schorsch
-Scopece
-Scott
-Seabastian
-Sean
-Sebaattin
-Sebahat
-Sebahattin
-Sebahedin
-Sebahi
-Sebald
-Sebastian
-Sebastiana
-Sebastiane
-Sebastiano
-Sebastiao
-Sebastien
-Sebat
-Sebati
-Sebatino
-Sebatratin
-Sebattin
-Seber
-Sebert
-Sebiha
-Sebile
-Sebina
-Sebnem
-Sebnen
-Sebohat
-Sebri
-Secaat
-Secahattin
-Secat
-Secati
-Secattin
-Secda
-Secgin
-Seckin
-Seco
-Secundino
-Seda
-Sedan
-Sedat
-Sede
-Sedef
-Sedegi
-Sedki
-Seeben
-Seeko
-Sefa
-Sefattin
-Sefcet
-Sefedin
-Sefeldin
-Sefer
-Seffer
-Seffet
-Sefija
-Sefik
-Sefika
-Sefike
-Sefil
-Sefkati
-Sefket
-Sefter
-Seger
-Segolia
-Segundo
-Segura
-Sehavet
-Seher
-Sehid
-Sehida
-Sehil
-Sehmis
-Sehnaz
-Sehniban
-Seho
-Sehriba
-Sehriban
-Sehymus
-Sehzad
-Seida
-Seidel
-Seidi
-Seidnour
-Seiehattin
-Seifried
-Seija
-Seinab
-Seip
-Seir
-Seitz
-Sejad
-Sejd
-Sejdi
-Sejfula
-Sejike
-Sejla
-Seka
-Seker
-Sekine
-Sekip
-Seko
-Sel
-Sela
-Selahaddin
-Selahatin
-Selahattin
-Selahittin
-Selaini
-Selamet
-Selami
-Selattin
-Selcak
-Selcihan
-Selcuk
-Selda
-Seldhattin
-Sele
-Seled
-Selek
-Selem
-Selen
-Selfet
-Selguk
-Selhattin
-Selim
-Selime
-Selin
-Selina
-Selke
-Sella
-Sellhattin
-Selma
-Selman
-Selmani
-Selmar
-Selmet
-Selmi
-Selmon
-Seloski
-Selva
-Selver
-Selvet
-Selveta
-Selvi
-Selvija
-Selvin
-Selviye
-Selwyn
-Selyna
-Sema
-Semahat
-Seman
-Semanuo
-Semen
-Semi
-Semic
-Semih
-Semiha
-Semihan
-Semije
-Semiko
-Semin
-Semira
-Semiramis
-Semiran
-Semire
-Semistan
-Semit
-Semith
-Semitra
-Semjon
-Semjonowitsch
-Semka
-Semma
-Sempa
-Sempaetin
-Semra
-Semran
-Semri
-Semsdin
-Semse
-Semsedin
-Semsethin
-Semsettin
-Semsi
-Semsinur
-Semso
-Semsudin
-Semun
-Semund
-Senada
-Senahid
-Senai
-Senal
-Senan
-Senay
-Senayi
-Senayte
-Sencan
-Senda
-Sendogan
-Sendra
-Senef
-Senel
-Senem
-Sener
-Senferanius
-Sengul
-Senih
-Senija
-Senim
-Senistan
-Senita
-Seniye
-Seniz
-Senkaya
-Senko
-Senni
-Sennon
-Sennur
-Seno
-Senol
-Senoy
-Senquel
-Sens
-Sensettin
-Sensoy
-Senta
-Senze
-Senzel
-Senzka
-Seperovic
-Sepgef
-Sepp
-Seppel
-Seppl
-Seppo
-Sera
-Serafadelin
-Serafeddin
-Serafedin
-Serafet
-Serafetling
-Serafettin
-Seraffetin
-Serafim
-Serafin
-Serafina
-Serafine
-Serafino
-Serafttin
-Seragettin
-Serai
-Serap
-Seraphim
-Seraphin
-Seraphine
-Serat
-Seravettin
-Seray
-Serban
-Sercan
-Serda
-Serdal
-Serdanur
-Serdar
-Serdas
-Seref
-Serefettin
-Serella
-Seren
-Serena
-Seret
-Serf
-Serfinaz
-Serge
-Sergei
-Sergeij
-Sergej
-Sergey
-Sergi
-Sergine
-Sergio
-Sergius
-Serguei
-Sergun
-Sergy
-Serhan
-Serhap
-Serhat
-Seriban
-Serieh
-Serif
-Serife
-Serikan
-Serim
-Serin
-Serina
-Serinci
-Serit
-Serkal
-Serkan
-Serket
-Serki
-Serkis
-Serkiz
-Serla
-Sermet
-Sermin
-Sernat
-Seror
-Serpil
-Serpuhi
-Serrano
-Sert
-Sertel
-Sertip
-Servan
-Servando
-Servatius
-Server
-Servet
-Servete
-Servinaz
-Serzin
-Sestilio
-Sestino
-Seta
-Seth
-Sethan
-Settar
-Setzidan
-Seuda
-Seugi
-Seuket
-Seuleymann
-Sevafettin
-Seval
-Sevasti
-Sevban
-Sevcan
-Sevcihan
-Sevda
-Sevdija
-Sevdije
-Seve
-Seven
-Sever
-Severin
-Severine
-Severino
-Sevgi
-Sevgil
-Sevi
-Sevig
-Sevil
-Sevilay
-Sevilcan
-Sevilmis
-Sevim
-Sevin
-Sevinc
-Sevindik
-Sevine
-Sevket
-Sevki
-Sevkiye
-Sevze
-Sewi
-Seyahn
-Seycan
-Seyda
-Seyde
-Seydi
-Seydo
-Seyedeh
-Seyfeddin
-Seyfettin
-Seyfi
-Seyfulla
-Seyfullah
-Seyhamit
-Seyhan
-Seyhat
-Seyhmus
-Seyhmuslum
-Seyho
-Seyit
-Seyitham
-Seyithan
-Seyithann
-Seymen
-Seyoi
-Seyran
-Seza
-Sezahl
-Sezai
-Sezair
-Sezayi
-Sezcan
-Sezen
-Sezer
-Sezgin
-Sezou
-Shaahin
-Shaban
-Shabani
-Shabbir
-Shadan
-Shadie
-Shafi
-Shafie
-Shafig
-Shafiq
-Shah
-Shahadat
-Shahed
-Shaheen
-Shahida
-Shahidul
-Shahin
-Shahram
-Shahryar
-Shahwali
-Shahwaz
-Shaira
-Shakeel
-Shakib
-Shakil
-Shakor
-Shameem
-Shamim
-Shamlal
-Shamsalhag
-Shanab
-Shane
-Shapur
-Sharaf
-Sharif
-Sharifa
-Sharifzadeh
-Sharon
-Shatur
-Shaun
-Shawn
-Sheba
-Shefget
-Shehzad
-Sheikh
-Sheila
-Sheima
-Shelagh
-Shemol
-Shemsi
-Shemus
-Sher
-Sherco
-Sheri
-Sherida
-Sherif
-Sherin
-Sherry
-Shevket
-Shibbir
-Shila
-Shina
-Shir
-Shireen
-Shirin
-Shirley
-Shoaib
-Shohreh
-Shoka
-Shokrollah
-Shorab
-Shoshana
-Shpen
-Shpresa
-Shuichi
-Shujah
-Sia
-Siamak
-Siamek
-Sian
-Siany
-Siavash
-Siba
-Sibel
-Sibilla
-Sibille
-Sibrigdina
-Sibyll
-Sibylla
-Sibylle
-Sid
-Sida
-Sidan
-Siddig
-Siddik
-Siddique
-Sider
-Sidika
-Sidney
-Sidny
-Sido
-Sidonia
-Sidonie
-Sidonius
-Sidou
-Siebel
-Siebelt
-Siebert
-Siebo
-Sied
-Siegbert
-Siegburg
-Siegesmund
-Siegfr
-Siegfrid
-Siegfried
-Sieghard
-Sieghardt
-Sieghart
-Sieghilde
-Siegholde
-Siegismund
-Sieglind
-Sieglinde
-Siegmar
-Siegmund
-Siegrid
-Siegried
-Siegrun
-Siegtrud
-Siegurd
-Siegwald
-Siegward
-Siegwin
-Sieke
-Siemen
-Siemon
-Siene
-Sientje
-Siet
-Sievert
-Sievi
-Siewert
-Sifi
-Sig
-Siga
-Siganur
-Sigard
-Sigbert
-Sigehardus
-Sigfrid
-Sigfried
-Siggi
-Sighard
-Sighild
-Sighilde
-Sigi
-Sigisbert
-Sigismund
-Sigit
-Siglinde
-Sigmar
-Sigmund
-Signe
-Sigold
-Sigrid
-Sigried
-Sigrit
-Sigrun
-Sigtraud
-Sigulf
-Sigurd
-Sigvard
-Sigward
-Sihan
-Sihmehmet
-Siho
-Siim
-Siiri
-Sija
-Sika
-Sike
-Sikiru
-Sikko
-Sikret
-Sikri
-Sikrite
-Sila
-Silahattin
-Silana
-Silas
-Sile
-Silesia
-Silfigar
-Silja
-Silka
-Silke
-Silki
-Silko
-Silmi
-Silo
-Silva
-Silvan
-Silvana
-Silvano
-Silver
-Silverio
-Silverius
-Silvester
-Silvestra
-Silvestre
-Silvestro
-Silvia
-Silvie
-Silvin
-Silvino
-Silvio
-Silviu
-Silvo
-Silwa
-Sim
-Sima
-Sime
-Simen
-Simendiene
-Simeon
-Simeone
-Simin
-Simisa
-Simke
-Simo
-Simom
-Simon
-Simona
-Simone
-Simonetta
-Simonic
-Simos
-Simpert
-Simpson
-Simsek
-Simun
-Sina
-Sinac
-Sinaida
-Sinan
-Sinasi
-Sinaver
-Sine
-Sinel
-Singh
-Sinikka
-Sinisa
-Sinja
-Sinje
-Sintje
-Siobhan
-Sion
-Sipahi
-Sirak
-Sirdin
-Siri
-Sirid
-Sirikit
-Sirin
-Sirke
-Sirko
-Siro
-Sirous
-Sirpa
-Sirri
-Sirvar
-Sirvi
-Sirzat
-Sissi
-Sissy
-Sisto
-Sita
-Sitel
-Sitke
-Sitki
-Sitti
-Siumei
-Siv
-Siva
-Sivalingam
-Sivi
-Sivia
-Sixto
-Sixtus
-Siyami
-Siyret
-Sjut
-Skender
-Sladjan
-Sladjana
-Slata
-Slava
-Slavica
-Slavisa
-Slavka
-Slavko
-Slavna
-Slavojka
-Slavomir
-Slawek
-Slawomir
-Slawomiv
-Sleiman
-Slobodan
-Slobodanka
-Smajl
-Smriko
-Snezana
-Snjezana
-Sobehi
-Sobhy
-Sobiech
-Sodik
-Soenke
-Soeren
-Sofi
-Sofia
-Sofian
-Sofie
-Sofija
-Sofirios
-Sofoklis
-Softic
-Sogny
-Sografa
-Sohail
-Sohaila
-Sohar
-Sohila
-Sohrab
-Soichrio
-Soizic
-Sokol
-Sokratis
-Solange
-Soldan
-Soledad
-Solgado
-Soli
-Soliman
-Solmaz
-Solomon
-Soltan
-Soltana
-Solveg
-Solveig
-Solveigh
-Solvey
-Solvig
-Solweyg
-Solwieg
-Soma
-Somboon
-Somer
-Somkhid
-Sona
-Sonat
-Sonay
-Sonbahar
-Sondra
-Sone
-Soner
-Songer
-Songul
-Soni
-Sonia
-Sonja
-Sonnhild
-Sonnhilde
-Sonni
-Sonny
-Sonya
-Sophia
-Sophie
-Sophieu
-Sophus
-Sopia
-Soraja
-Soraya
-Soren
-Sorina
-Sorka
-Sosi
-Sosthenes
-Sosun
-Sotere
-Sotilia
-Sotinos
-Sotirios
-Sotiris
-Soubhi
-Soudabe
-Soudabeh
-Souli
-Soumela
-Soumer
-Sousa
-Sousan
-Soussan
-Soyer
-Soylu
-Spahic
-Spiridon
-Spiridoula
-Spiro
-Spiros
-Splinter
-Spomenka
-Sport
-Spyridon
-Spyridou
-Srbislav
-Srboljub
-Sreten
-Sri
-Ssekina
-Sta
-Staats
-Stacey
-Stade
-Stamatios
-Stamatis
-Stan
-Stana
-Stani
-Stanica
-Stanimir
-Stanisa
-Stanislao
-Stanislaus
-Stanislav
-Stanislaw
-Stanislawa
-Stanko
-Stanley
-Stanoje
-Star
-Stasys
-Statnam
-Stavros
-Stec
-Steen
-Stefaie
-Stefan
-Stefana
-Stefani
-Stefania
-Stefanie
-Stefanile
-Stefano
-Stefanos
-Stefcia
-Stefen
-Steffan
-Steffen
-Steffi
-Steffie
-Stefi
-Stefos
-Stefphan
-Steganie
-Steinbach
-Steiner
-Steinert
-Steinmeyer
-Stejepan
-Stela
-Stele
-Stelian
-Stelio
-Stella
-Sten
-Stenin
-Stephan
-Stephane
-Stephanie
-Stephanis
-Stephanos
-Stephanus
-Stephen
-Stephn
-Stepthan
-Stergios
-Stevan
-Steve
-Steven
-Stevens
-Stevie
-Stevlinaz
-Stevo
-Stewart
-Stiene
-Stientje
-Stig
-Stilianos
-Stilla
-Stiller
-Stinnes
-Stipan
-Stipe
-Stipica
-Stipo
-Stjepan
-Stjerne
-Stoffel
-Stoja
-Stojan
-Stojance
-Storai
-Storandt
-Storei
-Storm
-Stratos
-Strauá
-Strobl
-Stuart
-Stultan
-Stylianos
-Su
-Suad
-Suada
-Suat
-Suavi
-Suayip
-Subasi
-Subhani
-Subhi
-Subutay
-Suco
-Sucro
-Sudi
-Suekran
-Suekrue
-Suelami
-Sueleyman
-Suevis
-Suha
-Suhdo
-Suheyla
-Suhir
-Suhny
-Suhr
-Suitbert
-Sujit
-Sukran
-Sukriye
-Sukru
-Sula
-Sulaf
-Sulaiman
-Sulamith
-Sule
-Sulejman
-Suleman
-Suleyman
-Sulgai
-Sulhaddin
-Suliman
-Suljo
-Sulta
-Sultan
-Sultana
-Sulymann
-Sumitra
-Summani
-Suna
-Sunal
-Sunay
-Sunel
-Sungu
-Sungur
-Sunhild
-Suni
-Sunny
-Suntay
-Suntka
-Suntke
-Suphi
-Supin
-Suppatra
-Suprimi
-Sur
-Suraye
-Sureyya
-Surmeli
-Surure
-Sururi
-Susa
-Susan
-Susana
-Susane
-Susann
-Susanna
-Susanne
-Suse
-Susen
-Susi
-Sussan
-Susy
-Suvad
-Suvada
-Suvis
-Suyad
-Suza
-Suzan
-Suzana
-Suzann
-Suzanna
-Suzanne
-Suzie
-Svanhild
-Svantje
-Svea
-Svein
-Sven
-Svena
-Svend
-Svenja
-Svenn
-Svetislav
-Svetlana
-Svjetlana
-Swaen
-Swanette
-Swantje
-Swen
-Swena
-Swenja
-Sweta
-Swetlana
-Swibertus
-Swonko
-Sybil
-Sybilla
-Sybille
-Sybren
-Sybylle
-Sydney
-Syed
-Syike
-Syivana
-Syla
-Sylemani
-Sylke
-Sylla
-Sylta
-Sylva
-Sylvain
-Sylvan
-Sylvana
-Sylvanus
-Sylveli
-Sylvere
-Sylvester
-Sylvestre
-Sylvi
-Sylvia
-Sylviane
-Sylvie
-Sylvio
-Sylwia
-Sylyia
-Syndi
-Syrus
-Sys
-Sysel
-Sytti
-Szabo
-Szilvia
-Tabea
-Tabeia
-Tabita
-Tabitha
-Taby
-Tacettin
-Tacittin
-Tadeus
-Tadeusz
-Tadija
-Tado
-Tagi
-Tahamtan
-Tahangir
-Tahar
-Taher
-Tahere
-Tahereh
-Tahic
-Tahir
-Tahire
-Tahlo
-Tahseen
-Tahsin
-Taib
-Taibe
-Taiga
-Taina
-Tairi
-Taisir
-Taissir
-Tajana
-Tajdin
-Tajib
-Tajo
-Tajrioui
-Takashi
-Take
-Taki
-Takiba
-Takin
-Tala
-Talat
-Talea
-Talet
-Taleus
-Talha
-Tali
-Talia
-Talin
-Talip
-Taliye
-Talke
-Tam
-Taman
-Tamar
-Tamara
-Tamas
-Tambul
-Tame
-Tamel
-Tamen
-Tamer
-Tamila
-Tamino
-Tamme
-Tammo
-Tammy
-Tan
-Tana
-Tanar
-Tanasije
-Tane
-Taner
-Tani
-Tania
-Tanis
-Tanja
-Tanju
-Tankred
-Tannitza
-Tannried
-Tansel
-Tanveer
-Tanvir
-Tanwadee
-Tanya
-Tapani
-Tapeten
-Tara
-Tarek
-Tareq
-Tarhar
-Tarhini
-Tari
-Tarig
-Tarik
-Tarim
-Tariq
-Tarja
-Tarjan
-Tarjit
-Tarkan
-Tas
-Tasdemir
-Tasduran
-Tasek
-Tasgir
-Tasim
-Tasio
-Taskin
-Tasneem
-Tasnim
-Tassilo
-Tasso
-Tatar
-Tatia
-Tatiana
-Tatic
-Tatjana
-Tatli
-Tauqir
-Tavas
-Tawfig
-Tay
-Tayebeh
-Tayfun
-Taylan
-Taysir
-Tayyaba
-Tayyar
-Tayyor
-Tazebey
-Teaghes
-Team
-Tebbe
-Teceddin
-Tecla
-Ted
-Teda
-Teddy
-Tedoris
-Tedras
-Tehua
-Teike
-Teilo
-Teimour
-Teisir
-Teja
-Tek
-Tekcan
-Tekci
-Tekin
-Tekiner
-Tekla
-Tekle
-Teksin
-Telat
-Telemachos
-Teleyildirim
-Tella
-Telli
-Telma
-Telsche
-Telse
-Temel
-Temir
-Temmo
-Temorschah
-Temur
-Tena
-Tenhar
-Tennor
-Tensi
-Tenzile
-Teo
-Teodor
-Teodora
-Teodoro
-Teodosia
-Teofanis
-Teofiel
-Teofilo
-Teoman
-Terek
-Terekelli
-Terence
-Teresa
-Terese
-Teresia
-Teresina
-Teresita
-Tereza
-Terezia
-Terezija
-Terhat
-Terlan
-Terry
-Terzia
-Terzioglu
-Terzo
-Tesfamariam
-Teshome
-Tesier
-Tessa
-Tessie
-Tessy
-Tete
-Teter
-Teufik
-Tevfik
-Tevik
-Tevrat
-Tevtik
-Tewfik
-Tex
-Teyfik
-Teymur
-Teyzullah
-Tezcan
-Thad
-Thaddeus
-Thadeus
-Thahir
-Thalia
-Thalke
-Thamara
-Thamm
-Thaschwa
-Thassoula
-Thatjana
-The
-Thea
-Theda
-Thedeus
-Thedor
-Thees
-Thehaxis
-Theis
-Thekla
-Themistoklis
-Theo
-Theobald
-Theocharis
-Theodolinde
-Theodoor
-Theodor
-Theodora
-Theodore
-Theodoros
-Theodorus
-Theodosia
-Theodosio
-Theodosios
-Theodule
-Theofani
-Theofila
-Theofilos
-Theoklitos
-Theophil
-Theophilus
-Theres
-Theresa
-Therese
-Theresia
-Theresina
-Therezia
-Thersia
-Thesi
-Thessy
-Thesy
-Thiel
-Thiele
-Thiemo
-Thierry
-Thies
-Thiess
-Thietmar
-Thieá
-Thilde
-Thilo
-Thim
-Thimo
-Thino
-Thmmo
-Thobias
-Thoma
-Thomas
-Thomi
-Thoms
-Thora
-Thorai
-Thorald
-Thoralf
-Thorben
-Thordis
-Thore
-Thoren
-Thorge
-Thorger
-Thorgund
-Thorolf
-Thorsten
-Thorwald
-Thoukididis
-Thresiamma
-Thrsten
-Thua
-Thure
-Thurid
-Thusnelda
-Thyella
-Thyge
-Tia
-Tiada
-Tib
-Tiba
-Tiberiu
-Tiberius
-Tibet
-Tibor
-Tibri
-Tican
-Tiddo
-Tido
-Tidora
-Tiemo
-Tien
-Tieno
-Tigran
-Tiina
-Til
-Tilbert
-Tilde
-Tile
-Till
-Tilla
-Tilli
-Tillmann
-Tilly
-Tilman
-Tilmann
-Tilmar
-Tilo
-Tim
-Tima
-Timandra
-Timm
-Timme
-Timmie
-Timmy
-Timo
-Timon
-Timona
-Timor
-Timotheus
-Timothy
-Timucin
-Timur
-Timursah
-Tin
-Tina
-Tinaz
-Tindaro
-Tine
-Tineke
-Tini
-Tinny
-Tino
-Tinoush
-Tinus
-Tiny
-Tiras
-Tireze
-Tiro
-Tirsten
-Tirza
-Tislaus
-Tite
-Titi
-Tito
-Titos
-Titus
-Tiziana
-Tiziano
-Tjaard
-Tjabo
-Tjade
-Tjadina
-Tjado
-Tjark
-Tjarko
-Tjebbe
-Tjelaletin
-Tlyas
-Toabias
-Tobe
-Tobeja
-Tobi
-Tobia
-Tobias
-Toby
-Todd
-Todor
-Tofwig
-Togluk
-Toivo
-Tok
-Tokmak
-Toktas
-Tolun
-Tom
-Toma
-Toman
-Tomas
-Tomaso
-Tomasz
-Tome
-Tomic
-Tomislav
-Tomislaw
-Tomke
-Tomma
-Tommas
-Tommaso
-Tommie
-Tommy
-Tomo
-Tomris
-Toms
-Tomy
-Tona
-Toni
-Tonia
-Tonino
-Tonio
-Tonis
-Tonius
-Tonja
-Tonko
-Tonny
-Tony
-Top
-Topal
-Topdur
-Toprak
-Toptas
-Torald
-Toralf
-Toran
-Torben
-Tordis
-Torge
-Toribio
-Torill
-Toris
-Torsten
-Toru
-Torun
-Tory
-Tosca
-Toshio
-Toska
-Tosun
-Touhoufat
-Toujic
-Touradj
-Touran
-Towfic
-Toy
-Tracey
-Tracy
-Traian
-Trajce
-Trajko
-Trane
-Trans
-Trapp
-Traudchen
-Traude
-Traudel
-Traudi
-Traudl
-Traugott
-Traut
-Trautchen
-Traute
-Trautelotte
-Trauthilde
-Trauti
-Trautl
-Trautlieb
-Trautwein
-Treuhild
-Treuhilde
-Trevor
-Triantafilos
-Trientje
-Trifon
-Trigga
-Trina
-Trinchen
-Trinette
-Trinidad
-Triningsih
-Trinus
-Tristan
-Trixi
-Trudbert
-Trude
-Trudel
-Trudi
-Trudl
-Trudlinde
-Trudpert
-Trukie
-Truus
-Trynke
-Tsadik
-Tsampikos
-Tsegereda
-Tsiotsios
-Tuba
-Tudor
-Tufan
-Tufik
-Tugaj
-Tugay
-Tugn
-Tugran
-Tugrul
-Tulay
-Tulin
-Tulio
-Tullio
-Tuna
-Tunal
-Tunay
-Tunc
-Tunca
-Tuncay
-Tuncel
-Tuncer
-Tuncuy
-Tunjo
-Turabi
-Tural
-Turali
-Turan
-Turay
-Turek
-Turgay
-Turgut
-Turhan
-Turic
-Turid
-Turkan
-Turkay
-Turna
-Tursun
-Tusnelda
-Tutca
-Tuula
-Tyrone
-Tzengis
-UIrich
-Ubaldo
-Ubbo
-Ubeydullah
-Uca
-Ucar
-Ucek
-Uckun
-Uda
-Ude
-Udo
-Ueli
-Uezeyir
-Ufuk
-Ugar
-Ugo
-Ugor
-Ugur
-Ugurlu
-Uguv
-Uguvcan
-Uhannis
-Uje
-Uka
-Uko
-Ulas
-Ulbrich
-Ulf
-Ulfert
-Ulfried
-Ulfvon
-Ulhild
-Uli
-Ulian
-Ulika
-Ulises
-Ulkani
-Ulker
-Ulla
-Ulli
-Ullmann
-Ullrich
-Ully
-Ulrich
-Ulricke
-Ulrik
-Ulrika
-Ulrike
-Ultich
-Uluc
-Uluer
-Ulus
-Ulusoy
-Ulutas
-Ulvi
-Ulvija
-Ulviye
-Ulyiye
-Umac
-Umar
-Umberto
-Umeer
-Umit
-Ummahan
-Ummihan
-Ummuhan
-Ummuhani
-Umran
-Umuhan
-Umut
-Una
-Unai
-Unan
-Undine
-Uni
-Unna
-Unni
-Uqur
-Ural
-Uran
-Urban
-Urbanek
-Urda
-Urfet
-Urhan
-Uri
-Urkin
-Urlsula
-Uros
-Urs
-Ursa
-Urschi
-Ursel
-Ursela
-Ursi
-Ursula
-Ursular
-Urszula
-Urte
-Urufi
-Usa
-Usama
-Uschi
-Uschka
-Uschy
-Usiu
-Uslu
-Usman
-Usmanbabar
-Usnla
-Ussat
-Usta
-Ustabas
-Uta
-Ute
-Utemaria
-Uto
-Utta
-Utto
-Utz
-Uunda
-Uusa
-Uuwe
-Uve
-Uwe
-Uws
-Uyanik
-Uyanin
-Uyar
-Uygur
-Uypm
-Uysal
-Uz
-Uzaldi
-Uzan
-Uzar
-Uzun
-Vaas
-Vacit
-Vaclav
-Vade
-Vadettin
-Vadim
-Vadimir
-Vadzit
-Vaes
-Vahaddin
-Vahap
-Vahdeffin
-Vahdet
-Vahdettin
-Vahdi
-Vahi
-Vahid
-Vahide
-Vahip
-Vahit
-Vahlt
-Vaic
-Vail
-Vaino
-Vaios
-Vait
-Vaitsis
-Vakkas
-Val
-Valborg
-Valbrecht
-Valda
-Valde
-Valdemar
-Valdi
-Valdimir
-Valdis
-Valdo
-Vale
-Valeida
-Valeissia
-Valent
-Valentin
-Valentina
-Valentine
-Valenting
-Valentino
-Valeri
-Valeria
-Valerian
-Valerie
-Valerij
-Valerio
-Valeris
-Valerius
-Valery
-Valeska
-Valfredo
-Vali
-Valko
-Van
-Vanco
-Vanda
-Vanessa
-Vanja
-Var
-Vara
-Varli
-Varlik
-Varol
-Varvara
-Vasco
-Vasfi
-Vasfiye
-Vasif
-Vasil
-Vasile
-Vasileios
-Vasilelos
-Vasili
-Vasilici
-Vasilie
-Vasilij
-Vasiliki
-Vasilio
-Vasilios
-Vasiliái
-Vasken
-Vasko
-Vassili
-Vassiliki
-Vassilios
-Vassilos
-Vassjlios
-Vasva
-Vasvija
-Veap
-Veba
-Vecdet
-Vecdi
-Veciha
-Vecihe
-Vedad
-Vedat
-Vedi
-Vedran
-Veena
-Veerle
-Vefi
-Vefik
-Vehbi
-Vehid
-Veikko
-Veiko
-Veit
-Veitel
-Veith
-Vejislar
-Veladzic
-Veli
-Velibor
-Velinka
-Velji
-Veljko
-Velma
-Veloozic
-Velta
-Velten
-Vendel
-Vendula
-Venetia
-Veniero
-Venizelos
-Venka
-Veno
-Ventura
-Vera
-Veran
-Verda
-Verde
-Verena
-Vereni
-Verenz
-Vergili
-Verginia
-Verica
-Veriman
-Veritas
-Verna
-Verner
-Vernon
-Vernonika
-Verona
-Veronica
-Veronika
-Veronique
-Vesa
-Vesel
-Vesile
-Vesim
-Vesna
-Vesper
-Veysal
-Veysel
-Veysi
-Vezir
-Vial
-Vibeke
-Vicdan
-Vicente
-Vicki
-Vicky
-Victor
-Victoria
-Victorino
-Victorio
-Vicy
-Vida
-Vidal
-Vidan
-Vidmantas
-Vido
-Vidosava
-Vidovic
-Vig
-Vigil
-Viktor
-Viktori
-Viktoria
-Viktorija
-Vildan
-Vildana
-Vilis
-Vilja
-Vilma
-Vilmos
-Vilonika
-Vincenco
-Vincenso
-Vincent
-Vincente
-Vincenz
-Vincenza
-Vincenzo
-Vinicio
-Vinicius
-Vinka
-Vinko
-Vinska
-Vinzenz
-Viola
-Violanta
-Violet
-Violeta
-Violetta
-Violette
-Viorel
-Vira
-Virgil
-Virgile
-Virgilia
-Virgilio
-Virgilius
-Virginia
-Virginian
-Virginie
-Virginio
-Virgit
-Virna
-Viron
-Virtus
-Viso
-Visus
-Vit
-Vita
-Vital
-Vitale
-Vitali
-Vitalij
-Vitalis
-Vitalji
-Vitangelo
-Vithania
-Vito
-Vitomir
-Vitor
-Vittoria
-Vittorino
-Vittorio
-Vitus
-Viva
-Vivaldo
-Viveka
-Vivendi
-Vivian
-Viviana
-Viviane
-Vivien
-Vladimir
-Vladislav
-Vlado
-Vlajko
-Vlasta
-Vlatko
-Vojislav
-Vola
-Volanis
-Volbert
-Voldemars
-Voler
-Volf
-Volger
-Volkan
-Volker
-Volkeron
-Volkert
-Volkfried
-Volkhard
-Volkhardt
-Volkhart
-Volkher
-Volkmar
-Volkmer
-Volko
-Volkwart
-Volkwin
-Vollert
-Vollmar
-Vollrad
-Vollrath
-Volmar
-Volmer
-Volodia
-Volz
-Vos
-Vroni
-Vujica
-Vural
-Vurande
-Vuranok
-Vurat
-Vurgun
-Waas
-Wachtel
-Wacker
-Wade
-Wadim
-Wadnan
-Wafa
-Wafaa
-Wafic
-Wafig
-Wafik
-Wagner
-Waheed
-Wahid
-Wahidullah
-Wahnfried
-Waide
-Waiel
-Waios
-Waitraud
-Wajdi
-Wala
-Walafried
-Walawal
-Walburg
-Walburga
-Walburgis
-Walda
-Waldburga
-Waldefried
-Waldemar
-Waldfried
-Waldi
-Waldislawa
-Waldo
-Waldraut
-Waldtraut
-Waldu
-Wale
-Walentin
-Walentina
-Walenty
-Waleri
-Walerian
-Walfried
-Walfriede
-Wali
-Waliuollah
-Walja
-Waljor
-Wallace
-Walle
-Walli
-Wally
-Walpurga
-Walpurgis
-Waltemart
-Walter
-Walterio
-Walters
-Walther
-Waltin
-Waltr
-Waltraud
-Waltraude
-Waltraudt
-Waltraund
-Waltraut
-Waltraute
-Waltrud
-Waltrude
-Waltrun
-Wanda
-Wandine
-Wane
-Waqaf
-Ward
-Warin
-Warja
-Warnfried
-Warren
-Warrilow
-Warwara
-Waseem
-Wasil
-Wasili
-Wasiliki
-Wasilios
-Wasilius
-Wasiljewitsch
-Wasim
-Wasji
-Wasse
-Wassilew
-Wassili
-Wassilij
-Wassiliki
-Wassilios
-Wayne
-Wazir
-Wedel
-Wedsad
-Weert
-Wegayehu
-Wegener
-Weike
-Weinhold
-Weizis
-Welda
-Welf
-Welly
-Welmoed
-Wencke
-Wendel
-Wendela
-Wendelin
-Wendeline
-Wendo
-Wendula
-Wendy
-Wener
-Wenke
-Wennemar
-Wenz
-Wenzel
-Wenzeslaus
-Wenzl
-Wera
-Werburg
-Werena
-Werenfried
-Werer
-Werkgruppe
-Werkzeugbau
-Wermer
-Werner
-Wernfried
-Werra
-Wesche
-Wesley
-Wessel
-Westermann
-Wetzel
-Weysel
-Wharda
-Whlhelmine
-Wiard
-Wibke
-Wichard
-Wichmann
-Wida
-Wido
-Widukind
-Wiebke
-Wiegand
-Wiegmann
-Wieke
-Wieland
-Wielfried
-Wiemer
-Wien
-Wienfried
-Wies
-Wieslaw
-Wieslawa
-Wiete
-Wifried
-Wiga
-Wigand
-Wigbert
-Wigg
-Wiggert
-Wihelm
-Wihlhelm
-Wija
-Wiktor
-Wiktoria
-Wil
-Wilbert
-Wildan
-Wildo
-Wilf
-Wilfgang
-Wilfr
-Wilfred
-Wilfredo
-Wilfrid
-Wilfried
-Wilfriede
-Wilgard
-Wilgart
-Wilh
-Wilhard
-Wilhe
-Wilheim
-Wilhel
-Wilhelm
-Wilhelma
-Wilhelmina
-Wilhelmine
-Wilhelmus
-Wilhem
-Wiliam
-Wilja
-Wilke
-Wilken
-Wilko
-Will
-Willebold
-Willem
-Willer
-Willfried
-Willhart
-Willhelm
-Willi
-William
-Williams
-Willibald
-Willibalt
-Willibert
-Willibrord
-Willie
-Willigis
-Willmuth
-Willo
-Willtrud
-Willy
-Willybald
-Wilm
-Wilma
-Wilman
-Wilmar
-Wilmut
-Wilrich
-Wilson
-Wilters
-Wiltraud
-Wiltraut
-Wiltrud
-Wim
-Winand
-Wincenza
-Winfr
-Winfred
-Winfrid
-Winfried
-Winfriede
-Winhard
-Winhold
-Winifred
-Winifrid
-Winifried
-Winnefred
-Winnes
-Winni
-Winnie
-Winnifred
-Winold
-Winrich
-Wioletta
-Wira
-Wisar
-Wise
-Wissam
-Witali
-Wito
-Witold
-Witte
-Wittich
-Wjatscheslaw
-Wladimir
-Wladinir
-Wladislaus
-Wladislav
-Wladislaw
-Wladislawa
-Wladyslaw
-Wladyslawa
-Wlodzimierz
-Wobina
-Wobkea
-Wofgang
-Wofram
-Wohnstift
-Wojciech
-Wojcieck
-Wojtek
-Wolbert
-Wolde
-Woldemar
-Woldy
-Wolf
-Wolfgang
-Wolfhard
-Wolfhardt
-Wolfhart
-Wolfman
-Wolfram
-Wolfried
-Wolgang
-Wolgard
-Wolgfgang
-Wolrad
-Wolter
-World
-Wotan
-Wouter
-Wulf
-Wulff
-Wulfhardt
-Wulfhild
-Wunibald
-Wybren
-Xanthippos
-Xaver
-Xavier
-Xenia
-Xhavit
-Ximena
-Yacob
-Yacoub
-Yacub
-Yade
-Yadigar
-Yadikar
-Yadilyas
-Yadullah
-Yael
-Yafes
-Yagiz
-Yagmur
-Yahia
-Yahko
-Yahti
-Yahya
-Yako
-Yakob
-Yakub
-Yakup
-Yakut
-Yakya
-Yalan
-Yalcim
-Yalcin
-Yalcintas
-Yaldirak
-Yalkin
-Yalman
-Yama
-Yaman
-Yamina
-Yan
-Yanar
-Yaneuz
-Yanik
-Yanit
-Yank
-Yann
-Yannic
-Yannick
-Yanus
-Yanya
-Yao
-Yapishan
-Yar
-Yara
-Yarar
-Yardim
-Yarsar
-Yasabey
-Yasar
-Yasariye
-Yasas
-Yasattin
-Yaschar
-Yasemen
-Yasemin
-Yaser
-Yasime
-Yasin
-Yasir
-Yasmin
-Yasmina
-Yasmine
-Yasor
-Yasser
-Yassine
-Yassir
-Yauruz
-Yausi
-Yaver
-Yavuz
-Yaw
-Yawuz
-Yayla
-Yayli
-Yazan
-Yazar
-Yazgan
-Yazgi
-Yazicioglu
-Yazile
-Ydmaz
-Yefim
-Yehia
-Yekta
-Yelal
-Yelda
-Yelemerli
-Yeliz
-Yener
-Yenev
-Yenice
-Yenievdi
-Yenny
-Yesica
-Yesil
-Yesildag
-Yesim
-Yesirci
-Yesmin
-Yesna
-Yeter
-Yetis
-Yetkin
-Yevhen
-Yevsi
-Yeysel
-Yeziri
-Yidiz
-Yigit
-Yigiter
-Yikar
-Yilderem
-Yildiran
-Yildiray
-Yildirim
-Yildiz
-Yildizhan
-Yildrim
-Yilgez
-Yilmar
-Yilmas
-Yilmaz
-Yilmazer
-Yilmikar
-Yiyen
-Ylker
-Ylmaz
-Ylva
-Ymer
-Yoann
-Yoao
-Yodit
-Yolanda
-Yoma
-Yonca
-Yonis
-Yonus
-York
-Yosemeh
-Yoshihiko
-Yoshiko
-Yosief
-Yosma
-Yosuf
-Yosun
-Younes
-Youness
-Young
-Youri
-Yousef
-Yousif
-Youssef
-Youssouf
-Yousuf
-Yozef
-Yozo
-Ysar
-Ysuf
-Yubivoje
-Yucel
-Yuecel
-Yueksel
-Yuhannun
-Yui
-Yuksel
-Yunes
-Yunis
-Yuntdag
-Yunus
-Yuosuf
-Yurdaer
-Yurdaguel
-Yurdakul
-Yurdal
-Yurdanur
-Yurga
-Yuri
-Yuriy
-Yusuf
-Yusulf
-Yusut
-Yvan
-Yvelise
-Yves
-Yvetta
-Yvette
-Yvona
-Yvone
-Yvonn
-Yvonne
-Zaber
-Zabihulla
-Zabit
-Zacarias
-Zacharias
-Zacharie
-Zachary
-Zada
-Zadeh
-Zadran
-Zafar
-Zafer
-Zaferhan
-Zafir
-Zagal
-Zaged
-Zagorka
-Zaharias
-Zaheer
-Zahid
-Zahida
-Zahide
-Zahie
-Zahir
-Zahire
-Zahoor
-Zahoov
-Zahra
-Zahredine
-Zaid
-Zaida
-Zaik
-Zaika
-Zain
-Zainal
-Zaja
-Zakaria
-Zakir
-Zakira
-Zakiyh
-Zalmai
-Zaman
-Zamora
-Zanani
-Zandra
-Zaneta
-Zanko
-Zara
-Zarah
-Zareena
-Zarif
-Zarifa
-Zarife
-Zarip
-Zarko
-Zati
-Zayakh
-Zber
-Zbeyde
-Zbeyir
-Zbigniew
-Zdenek
-Zdenka
-Zdenko
-Zdislaw
-Zdravka
-Zdravko
-Zdzislaw
-Zdzislawa
-Zech
-Zef
-Zehide
-Zehiralden
-Zehni
-Zehra
-Zeiad
-Zeid
-Zeinab
-Zeinas
-Zejdi
-Zejna
-Zejnel
-Zejnil
-Zeka
-Zekai
-Zekariya
-Zekayi
-Zeke
-Zekerijah
-Zekeriya
-Zekeriye
-Zekeriyen
-Zekerya
-Zekerye
-Zeki
-Zekige
-Zekije
-Zekine
-Zekirija
-Zekiye
-Zelena
-Zelic
-Zeliha
-Zelika
-Zeliko
-Zelinda
-Zeljka
-Zeljko
-Zelko
-Zemedkun
-Zemina
-Zemine
-Zemira
-Zemra
-Zena
-Zenaida
-Zenan
-Zenepe
-Zengin
-Zenita
-Zennet
-Zennure
-Zeno
-Zenon
-Zenona
-Zenta
-Zenzi
-Zenzl
-Zerdal
-Zeren
-Zeria
-Zerin
-Zerise
-Zernisan
-Zero
-Zerrin
-Zexnep
-Zeya
-Zeycan
-Zeyhu
-Zeynal
-Zeynat
-Zeynel
-Zeynelabidin
-Zeynep
-Zeyni
-Zeytin
-Zeytun
-Zhal
-Zhre
-Zhtu
-Zia
-Ziad
-Ziaullah
-Ziba
-Zidi
-Ziekeriya
-Zieler
-Ziena
-Ziga
-Zigo
-Ziher
-Zihni
-Zihnullah
-Zija
-Zijad
-Ziki
-Zikos
-Zikrija
-Zikriye
-Zilfo
-Zilkijad
-Zilli
-Zilon
-Zin
-Zina
-Zinaida
-Zine
-Zinet
-Zineta
-Zineti
-Zinnecker
-Zinnet
-Zinnur
-Zion
-Zissi
-Zissis
-Zita
-Zitta
-Ziver
-Zivko
-Zivojin
-Zivomir
-Zivorad
-Ziya
-Ziyad
-Ziyaeddin
-Ziyaedtin
-Ziyaettin
-Ziyamet
-Ziyattin
-Ziynet
-Zlal
-Zlatho
-Zlatimir
-Zlatko
-Zlbiye
-Zlestin
-Zleyha
-Zleyka
-Zlfi
-Zlfikan
-Zlfikar
-Zlgane
-Zoe
-Zofia
-Zohar
-Zohreh
-Zoi
-Zoila
-Zoltan
-Zonko
-Zora
-Zoran
-Zoric
-Zorica
-Zorka
-Zosimo
-Zoulikha
-Zourab
-Zozan
-Zsolt
-Zsuzsa
-Zubair
-Zubeyde
-Zuhai
-Zuhair
-Zuhal
-Zuhayla
-Zuhdija
-Zulcufli
-Zuleyha
-Zuleyka
-Zulfi
-Zulfigar
-Zulfiqar
-Zulkf
-Zunal
-Zuri
-Zusanne
-Zuzana
-Zvi
-Zvijezdan
-Zvonimir
-Zvonko
-Zwanette
-Zwantien
-Zwier
-Zygfryd
-Zygmunt
-Zylvia
-Zyriak
-cal
-cler
-gauer
-gidius
-ice
-kce
-kkes
-ktem
-letro
-lker
-lle
-lmez
-mer
-met
-mmehan
-mmet
-mmu
-mmuhan
-mran
-mrol
-nal
-naldi
-nay
-ncel
-ncoy
-nder
-nne
-nni
-nny
-nsal
-nver
-ozevim
-techn
-tuning
-usuf
-yvind
-zalp
-zay
-zbay
-zbek
-zcab
-zcakir
-zcan
-zcanli
-zcelik
-zciger
-zdamar
-zdan
-zdemir
-zden
-zdilek
-zdogan
-zel
-zen
-zenyir
-zer
-zeyie
-zeyier
-zeyin
-zeyir
-zgen
-zgevran
-zhan
-zicer
-zkalp
-zkan
-zkemal
-zkiran
-zlem
-zler
-zmekik
-zmen
-znur
-zsahin
-zsan
-zsoy
-ztan
-ztas
-ztekin
-ztekin
-ztrk
-zver
-zyilmaz
-zyurt
\ No newline at end of file
diff --git a/example-projects/GermanNovels/resources/GeneralTitles.txt b/example-projects/GermanNovels/resources/GeneralTitles.txt
deleted file mode 100644
index 7cde4e4..0000000
--- a/example-projects/GermanNovels/resources/GeneralTitles.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-﻿Bürger
-Bürger
-Bürgerin
-Candidat
-Candidatin
-Ehrenbürger
-Ehrenbürgerin
-Familie
-Frau
-Freund
-Freundin
-Fräulein
-Herr
-Herrin
-Herrn
-Jungfer
-Junker
-Kandidat
-Kandidatin
-Lady
-Madame
-Master
-Meister
-Miss
-Mister
-Mistress
-Mr.
-Mrs.
-Ms.
-Nachbar
-Nachbarin
-Waschfrau
-Weib
\ No newline at end of file
diff --git a/example-projects/GermanNovels/resources/IMPhrases.txt b/example-projects/GermanNovels/resources/IMPhrases.txt
deleted file mode 100644
index 638e02f..0000000
--- a/example-projects/GermanNovels/resources/IMPhrases.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-Ich bin
-Ich bin
-Ich heiße
-Mein Name ist
\ No newline at end of file
diff --git a/example-projects/GermanNovels/resources/Jobs.txt b/example-projects/GermanNovels/resources/Jobs.txt
deleted file mode 100644
index 07ca740..0000000
--- a/example-projects/GermanNovels/resources/Jobs.txt
+++ /dev/null
@@ -1,56 +0,0 @@
-﻿Advokat
-Advokat
-Advokatin
-Anwalt
-Anwältin
-Arzt
-Ärztin
-Autor
-Autorin
-Bäcker
-Bäckerin
-Banquier
-Bauer
-Bäuerin
-Beamter
-Beamtin
-Bürgermeister
-Bürgermeisterin
-Diener
-Dienerin
-Doctor
-Doktor
-Doktorin
-Dr.
-Förster
-Gouvernante
-Hirte
-Hirtin
-Kalkulator
-Kalkulatorin
-Kantor
-Kapellmeister
-Kaufmann
-Künstler
-Künstlerin
-Legationssekretär
-Legationssekretärin
-Lehrer
-Lehrerin
-Maler
-Malerin
-Metzger
-Metzgerin
-Pastor
-Pfarrer
-Polizist
-Polizistin
-Professor
-Professorin
-Sänger
-Sängerin
-Schriftsteller
-Schriftstellerin
-Sekretär
-Sekretärin
-Wirt
\ No newline at end of file
diff --git a/example-projects/GermanNovels/resources/MilitaryTitles.txt b/example-projects/GermanNovels/resources/MilitaryTitles.txt
deleted file mode 100644
index be179f8..0000000
--- a/example-projects/GermanNovels/resources/MilitaryTitles.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-﻿Brigadier
-Brigadier
-Divisionär
-Fachoffizier
-Fachoffizierin
-General
-Generalin
-Hauptmann
-Korpskommandant
-Leutnant
-Major
-Marketender
-Marketenderin
-Oberleutnant
-Oberst
-Offizier
-Offizierin
\ No newline at end of file
diff --git a/example-projects/GermanNovels/resources/NobleTitles.txt b/example-projects/GermanNovels/resources/NobleTitles.txt
deleted file mode 100644
index ff97e67..0000000
--- a/example-projects/GermanNovels/resources/NobleTitles.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-﻿Baron
-Baron
-Baronesse
-Baronin
-Burggraf
-Burggräfin
-Durchlaucht
-Erbgraf
-Erbgroßherzog
-Erbgroßherzogin
-Erbgräfin
-Erlaucht
-Erzherzog
-Erzherzogin
-Exzellenz
-Freiherr
-Freiin
-Fürst
-Fürstin
-Graf
-Großherzog
-Großherzogin
-Gräfin
-Herzog
-Herzogin
-Hochgeboren
-Hochwohlgeboren
-Hoheit
-Hoheit
-Junker
-Junkfrau
-Kaiser
-Kaiserin
-Komtess
-Kronprinz
-Kronprinzessin
-Kurfürst
-Kurfürstin
-Kurprinz
-Kurprinzessin
-König
-Königin
-Landgraf
-Landgräfin
-Majestät
-Markgraf
-Markgräfin
-Pfalzgraf
-Pfalzgräfin
-Prinz
-Prinzessin
-Raugraf
-Raugräfin
-Reichsgraf
-Reichsgräfin
-Rheingraf
-Rheingräfin
-Ritter
-Uradel
-Waldgraf
-Waldgräfin
-Wildgraf
-Wildgräfin
-Zar
-Zariza
\ No newline at end of file
diff --git a/example-projects/GermanNovels/resources/ObjectWords.txt b/example-projects/GermanNovels/resources/ObjectWords.txt
deleted file mode 100644
index 4f3476e..0000000
--- a/example-projects/GermanNovels/resources/ObjectWords.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-das
-das
-dasselbe
-dieses
-ein
-jenes
\ No newline at end of file
diff --git a/example-projects/GermanNovels/resources/RelativesTitles.txt b/example-projects/GermanNovels/resources/RelativesTitles.txt
deleted file mode 100644
index 1269962..0000000
--- a/example-projects/GermanNovels/resources/RelativesTitles.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-Adoptivbruder
-Adoptivbruder
-Adoptivmutter
-Adoptivschwester
-Adoptivsohn
-Adoptivtochter
-Adoptivvater
-Bruder
-Cousin
-Cousine
-Ehefrau
-Ehemann
-Enkel
-Enkelkind
-Enkelsohn
-Enkeltochter
-Gatte
-Gattin
-Gemahl
-Gemahlin
-Goßpapa
-Großcousin
-Großcousine
-Großmama
-Großmutter
-Großvater
-Mama
-Muhme
-Mutter
-Nichte
-Oheim
-Oma
-Onkel
-Opa
-Papa
-Schwager
-Schwester
-Schwiegermama
-Schwiegermutter
-Schwiegeronkel
-Schwiegerpapa
-Schwiegersohn
-Schwiegertante
-Schwiegertochter
-Schwiegervater
-Schwippschwager
-Schwippschwägerin
-Schwägerin
-Sohn
-Stiefmama
-Stiefmutter
-Stiefpapa
-Stiefsohn
-Stieftochter
-Stiefvater
-Tante
-Tochter
-Urenkel
-Urenkelin
-Urgroßmama
-Urgroßmutter
-Urgroßpapa
-Urgroßvater
-Vater
-Vetter
\ No newline at end of file
diff --git a/example-projects/GermanNovels/resources/Verbs.txt b/example-projects/GermanNovels/resources/Verbs.txt
deleted file mode 100644
index ab3aa31..0000000
--- a/example-projects/GermanNovels/resources/Verbs.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-﻿antworten
-antworten
-beginnen
-bemerken
-bestätigen
-denken
-drängen
-echoen
-erwidern
-erzählen
-fahren
-fallen
-fragen
-fügen
-kichern
-lachen
-murmeln
-rufen
-sagen
-schreien
-stimmen
-unterbrechen
-versetzen
-wenden
-werfen
-wiederholen
\ No newline at end of file
diff --git a/example-projects/GermanNovels/script/uima/ruta/example/DirectSpeech.ruta b/example-projects/GermanNovels/script/uima/ruta/example/DirectSpeech.ruta
deleted file mode 100644
index 0edcabd..0000000
--- a/example-projects/GermanNovels/script/uima/ruta/example/DirectSpeech.ruta
+++ /dev/null
@@ -1,27 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-// 
-//   http://www.apache.org/licenses/LICENSE-2.0
-// 
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-PACKAGE uima.ruta.example;
-
-DECLARE DirectSpeech;
-
-"›" #{-> MARK(DirectSpeech, 1, 2, 3)} "‹";
-"»" #{-> MARK(DirectSpeech, 1, 2, 3)} "«";
-"‘" #{-> MARK(DirectSpeech, 1, 2, 3)} "’";
-"“" #{-> MARK(DirectSpeech, 1, 2, 3)} "”";
-"‚" #{-> MARK(DirectSpeech, 1, 2, 3)} "‛";
-"„" #{-> MARK(DirectSpeech, 1, 2, 3)} "‟";
\ No newline at end of file
diff --git a/example-projects/GermanNovels/script/uima/ruta/example/Main.ruta b/example-projects/GermanNovels/script/uima/ruta/example/Main.ruta
deleted file mode 100644
index c2f06dd..0000000
--- a/example-projects/GermanNovels/script/uima/ruta/example/Main.ruta
+++ /dev/null
@@ -1,34 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-// 
-//   http://www.apache.org/licenses/LICENSE-2.0
-// 
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-PACKAGE uima.ruta.example;
-
-IMPORT PACKAGE de.tudarmstadt.ukp.dkpro.core.api.lexmorph.type.pos FROM GeneratedDKProCoreTypes AS pos;
-IMPORT de.tudarmstadt.ukp.dkpro.core.api.segmentation.type.Lemma FROM GeneratedDKProCoreTypes;
-
-UIMAFIT de.tudarmstadt.ukp.dkpro.core.stanfordnlp.StanfordSegmenter;
-UIMAFIT de.tudarmstadt.ukp.dkpro.core.treetagger.TreeTaggerPosLemmaTT4J;
-
-SCRIPT uima.ruta.example.Name;
-
-Document{-CONTAINS(pos.POS)} -> {
-	Document{-> SETFEATURE("language", "de")};
-	Document{-> EXEC(StanfordSegmenter)};
-	Document{-> EXEC(TreeTaggerPosLemmaTT4J, {pos.POS})};
-};
-
-Document{-> CALL(Name)};
\ No newline at end of file
diff --git a/example-projects/GermanNovels/script/uima/ruta/example/Name.ruta b/example-projects/GermanNovels/script/uima/ruta/example/Name.ruta
deleted file mode 100644
index 2dcde96..0000000
--- a/example-projects/GermanNovels/script/uima/ruta/example/Name.ruta
+++ /dev/null
@@ -1,129 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-// 
-//   http://www.apache.org/licenses/LICENSE-2.0
-// 
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-﻿PACKAGE uima.ruta.example;
-
-IMPORT PACKAGE de.tudarmstadt.ukp.dkpro.core.api.lexmorph.type.pos FROM GeneratedDKProCoreTypes AS pos;
-IMPORT de.tudarmstadt.ukp.dkpro.core.api.segmentation.type.Lemma FROM GeneratedDKProCoreTypes;
-
-SCRIPT uima.ruta.example.DirectSpeech;
-
-WORDLIST AnimalList = 'Animals.txt';
-WORDLIST FirstNameList = 'FirstNames.txt';
-WORDLIST GeneralTitleList = 'GeneralTitles.txt';
-WORDLIST PhraseList = 'IMPhrases.txt';
-WORDLIST JobList = 'Jobs.txt';
-WORDLIST MilitaryTitleList = 'MilitaryTitles.txt';
-WORDLIST NobleTitleList = 'NobleTitles.txt';
-WORDLIST ObjectWordList = 'ObjectWords.txt';
-WORDLIST RelativesTitleList = 'RelativesTitles.txt';
-WORDLIST VerbList = 'Verbs.txt';
-
-STRINGLIST AddNames;
-STRINGLIST FirstNames;
-STRINGLIST LastNames;
-STRINGLIST PersNames;
-STRING Match;
-
-DECLARE PersName, AddName, FirstName, LastName, AnAnimal,
-RelativesTitle, GeneralTitle, MilitaryTitle, NobleTitle,
-Job, BodyPart, IMPhrase;
-
-Document{-> CALL(DirectSpeech)};
-Document{-> RETAINTYPE(SPACE)};
-Document{-> MARKFAST(AnAnimal, AnimalList)};
-Document{-> MARKFAST(FirstName, FirstNameList)};
-Document{-> MARKFAST(GeneralTitle, GeneralTitleList)};
-Document{-> MARKFAST(IMPhrase, PhraseList)};
-Document{-> MARKFAST(Job, JobList)};
-Document{-> MARKFAST(MilitaryTitle, MilitaryTitleList)};
-Document{-> MARKFAST(NobleTitle, NobleTitleList)};
-Document{-> MARKFAST(RelativesTitle, RelativesTitleList)};
-Document{-> RETAINTYPE};
-
-//-------------------------------------- VORNAMEN -----------------------------------------------\\
-
-// Titel, nach denen wahrscheinlich ein Vorname kommt
-(RelativesTitle|AnAnimal) pos.N{-PARTOF(FirstName), -PARTOF(SPECIAL)
--> MARK(FirstName), MATCHEDTEXT(Match), ADD(FirstNames, Match)};
-
-// Vornamen, die mit "s" enden speichern
-FirstName{-> MATCHEDTEXT(Match), ADD(FirstNames, Match + "s")};
-
-// Alle Vornamen in der Liste FirstNames markieren
-pos.N{-PARTOF(FirstName), INLIST(FirstNames) -> MARK(FirstName)};
-
-// Vorname + Vorname = Vorname
-FirstName{-> SHIFT(FirstName, 1, 2)} FirstName{-> UNMARK(FirstName)};
-
-
-//-------------------------------------- NACHNAMEN ----------------------------------------------\\
-
-// Vornamen +  CW (-> Nachname)
-CW{INLIST(FirstNameList)} "von"? CW{-PARTOF(FirstName), -PARTOF(LastName), -PARTOF(pos.PP)
--> MARK(LastName, 2, 3), MATCHEDTEXT(Match), ADD(LastNames, Match)};
-
-// Titel, nach denen wahrscheinlich ein Nachname kommt
-(GeneralTitle|MilitaryTitle|NobleTitle|Job) "von"? CW{-PARTOF(GeneralTitle), -PARTOF(Job),
--PARTOF(NobleTitle), -PARTOF(MilitaryTitle), -PARTOF(RelativesTitle), -PARTOF(FirstName),
--PARTOF(LastName) -> MARK(LastName, 2, 3), MATCHEDTEXT(Match), ADD(LastNames, Match)};
-
-// Nachnamen, die mit "s" enden speichern
-LastName{-> MATCHEDTEXT(Match), ADD(LastNames, Match + "s")};
-
-// Markieren der Namen in LastName
-pos.N{-PARTOF(FirstName), -PARTOF(LastName), INLIST(LastNames) -> MARK(LastName)};
-
-
-//-------------------------------------- ADDNAMEN -----------------------------------------------\\
-
-// Verschiedene Titel zusammenfassen
-(AnAnimal|RelativesTitle|GeneralTitle|MilitaryTitle|NobleTitle|Job)
-{-> MARK(AddName), MATCHEDTEXT(Match), ADD(AddNames, Match)};
-
-// Alle Zusatztitel in der Liste AddNames markieren
-pos.N{-PARTOF(AddName), INLIST(AddNames, Lemma.value) -> MARK(AddName)};
-
-
-//-------------------------------------- PERSONEN -----------------------------------------------\\
-
-// AddName + FirstName + LastName = PersName
-(AddName* @FirstName LastName*){-PARTOF(PersName) -> MARK(PersName)};
-(AddName* FirstName? @LastName){-PARTOF(PersName) -> MARK(PersName)};
-
-// Sprecher nach direkter Rede als Person markieren
-DirectSpeech COMMA? pos.V{INLIST(VerbList, Lemma.value)} pos.ART? CW+{-PARTOF(PersName)
--> MARK(PersName), MATCHEDTEXT(Match), ADD(PersNames, Match)};
-
-// Alle Personen in der Liste PersNames markieren
-pos.N{-PARTOF(PersName), INLIST(PersNames, Lemma.value) -> MARK(PersName)};
-
-
-//-------------------------------------- KORREKTUR ----------------------------------------------\\
-
-// Eigennamen, die nicht als Vornamen oder Nachnamen erkannt wurden
-Document{-> CLEAR(FirstNames)};
-DirectSpeech COMMA? pos.V{INLIST(VerbList, Lemma.value)} CW+{-PARTOF(FirstName), -PARTOF(LastName),
--PARTOF(AddName) -> MARK(FirstName), MATCHEDTEXT(Match), ADD(FirstNames, Match)};
-
-// Eindeutige Phrasen nach denen ein Name kommt
-IMPhrase CW{-PARTOF(FirstName) -> MARK(FirstName), MATCHEDTEXT(Match),
-ADD(FirstNames, Match, Match + "s")};
-
-// Alle Vornamen in der Liste FirstNames markieren
-pos.N{-PARTOF(FirstName), INLIST(FirstNames) -> MARK(FirstName)};
-FirstName{-PARTOF(PersName) -> MARK(PersName)};
\ No newline at end of file
diff --git a/example-projects/GermanNovels/src/main/java/org/apache/uima/ruta/utils/GenerateDKProCoreTypes.java b/example-projects/GermanNovels/src/main/java/org/apache/uima/ruta/utils/GenerateDKProCoreTypes.java
deleted file mode 100644
index 4c12456..0000000
--- a/example-projects/GermanNovels/src/main/java/org/apache/uima/ruta/utils/GenerateDKProCoreTypes.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.uima.ruta.utils;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.uima.fit.factory.TypeSystemDescriptionFactory;
-import org.apache.uima.resource.ResourceInitializationException;
-import org.apache.uima.resource.metadata.TypeSystemDescription;
-import org.xml.sax.SAXException;
-
-public class GenerateDKProCoreTypes {
-
-  public static void main(String[] args) throws ResourceInitializationException, FileNotFoundException, SAXException, IOException {
-    TypeSystemDescription typeSystemDescription = TypeSystemDescriptionFactory.createTypeSystemDescription();
-    FileOutputStream os = new FileOutputStream(new File("descriptor/GeneratedDKProCoreTypes.xml"));
-    typeSystemDescription.toXML(os);
-    IOUtils.closeQuietly(os);
-  }
-  
-}
diff --git a/example-projects/ruta-ep-example-extensions/pom.xml b/example-projects/ruta-ep-example-extensions/pom.xml
index 45bb6f7..a17556f 100644
--- a/example-projects/ruta-ep-example-extensions/pom.xml
+++ b/example-projects/ruta-ep-example-extensions/pom.xml
@@ -132,7 +132,7 @@
                 <Import-Package>
                 </Import-Package>
                 <Bundle-SymbolicName>org.apache.uima.ruta.example.extensions;singleton:=true</Bundle-SymbolicName>
-                <Bundle-RequiredExecutionEnvironment>JavaSE-1.7</Bundle-RequiredExecutionEnvironment>
+                <Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
                 <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
                 <Eclipse-ExtensibleAPI>true</Eclipse-ExtensibleAPI>
                 <!-- <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy> -->
diff --git a/pom.xml b/pom.xml
index c013faf..3be193c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -232,22 +232,31 @@
 		            <phase>package</phase>
 		            <configuration>
 		              <target>
-		                <zip destfile="${project.build.directory}/${project.artifactId}-${project.version}-source-release.zip" update="true">
-									    <zipfileset dir="${basedir}/example-projects/ExampleProject/" includes=".project" prefix="${project.artifactId}-${project.version}/example-projects/ExampleProject/" />
-									  </zip>
-									  <zip destfile="${project.build.directory}/${project.artifactId}-${project.version}-source-release.zip" update="true">
-                      <zipfileset dir="${basedir}/example-projects/ExtensionsExample/" includes=".project" prefix="${project.artifactId}-${project.version}/example-projects/ExtensionsExample/" />
-                    </zip>
-                    <zip destfile="${project.build.directory}/${project.artifactId}-${project.version}-source-release.zip" update="true">
-                      <zipfileset dir="${basedir}/example-projects/TextRulerExample/" includes=".project" prefix="${project.artifactId}-${project.version}/example-projects/TextRulerExample/" />
-                    </zip>
-                    <zip destfile="${project.build.directory}/${project.artifactId}-${project.version}-source-release.zip" update="true">
-                      <zipfileset dir="${basedir}/example-projects/GermanNovels/" includes=".project" prefix="${project.artifactId}-${project.version}/example-projects/GermanNovels/" />
-                    </zip>
-                    <zip destfile="${project.build.directory}/${project.artifactId}-${project.version}-source-release.zip" update="true">
-                      <zipfileset dir="${basedir}/example-projects/Misc/" includes=".project" prefix="${project.artifactId}-${project.version}/example-projects/Misc/" />
-                    </zip>
-		              </target>
+						<zip destfile="${project.build.directory}/${project.artifactId}-${project.version}-source-release.zip" update="true">
+							<zipfileset dir="${basedir}/example-projects/ExampleProject/" includes=".project" prefix="${project.artifactId}-${project.version}/example-projects/ExampleProject/" />
+						</zip>
+<!-- 						<zip -->
+<!-- 							destfile="${project.build.directory}/${project.artifactId}-${project.version}-source-release.zip" -->
+<!-- 							update="true"> -->
+<!-- 							<zipfileset -->
+<!-- 								dir="${basedir}/example-projects/ExtensionsExample/" -->
+<!-- 								includes=".project" -->
+<!-- 								prefix="${project.artifactId}-${project.version}/example-projects/ExtensionsExample/" /> -->
+<!-- 						</zip> -->
+						<zip destfile="${project.build.directory}/${project.artifactId}-${project.version}-source-release.zip" update="true">
+							<zipfileset dir="${basedir}/example-projects/TextRulerExample/" includes=".project" prefix="${project.artifactId}-${project.version}/example-projects/TextRulerExample/" />
+						</zip>
+<!-- 						<zip -->
+<!-- 							destfile="${project.build.directory}/${project.artifactId}-${project.version}-source-release.zip" -->
+<!-- 							update="true"> -->
+<!-- 							<zipfileset dir="${basedir}/example-projects/GermanNovels/" -->
+<!-- 								includes=".project" -->
+<!-- 								prefix="${project.artifactId}-${project.version}/example-projects/GermanNovels/" /> -->
+<!-- 						</zip> -->
+						<zip destfile="${project.build.directory}/${project.artifactId}-${project.version}-source-release.zip" update="true">
+							<zipfileset dir="${basedir}/example-projects/Misc/" includes=".project" prefix="${project.artifactId}-${project.version}/example-projects/Misc/" />
+						</zip>
+					</target>
 		            </configuration>
 		            <goals>
 		              <goal>run</goal>
diff --git a/ruta-basic-type/pom.xml b/ruta-basic-type/pom.xml
index 4cb0ea7..ffc1353 100644
--- a/ruta-basic-type/pom.xml
+++ b/ruta-basic-type/pom.xml
@@ -50,6 +50,13 @@
   <build>
     <pluginManagement>
       <plugins>
+      	<plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-javadoc-plugin</artifactId> 
+          <configuration>
+            <excludePackageNames>org.apache.uima.ruta.type</excludePackageNames>
+          </configuration>  
+        </plugin>
         <plugin>
           <groupId>org.apache.rat</groupId>
           <artifactId>apache-rat-plugin</artifactId>
diff --git a/ruta-core/pom.xml b/ruta-core/pom.xml
index db101cb..5bfbe27 100644
--- a/ruta-core/pom.xml
+++ b/ruta-core/pom.xml
@@ -28,7 +28,6 @@
   <description>The core implementation of the UIMA Ruta rule engine.</description>
   <name>Apache UIMA Ruta: ${project.artifactId}</name>
   
-  
   <dependencies>
     <dependency>
       <groupId>org.apache.uima</groupId>
diff --git a/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkTableAction.java b/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkTableAction.java
index 9851c94..7e36b7c 100644
--- a/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkTableAction.java
+++ b/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkTableAction.java
@@ -151,8 +151,12 @@
   }
 
   private boolean getDictWSParamValue(MatchContext context) {
-    return (Boolean) context.getParent().getContext()
+    Object configParameterValue = context.getParent().getContext()
             .getConfigParameterValue(RutaEngine.PARAM_DICT_REMOVE_WS);
+    if (configParameterValue instanceof Boolean) {
+      return (Boolean) configParameterValue;
+    }
+    return false;
   }
 
   private void fillFeatures(TOP structure, Map<String, Integer> map, AnnotationFS annotationFS,
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/AlternativeMatchTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/AlternativeMatchTest.java
index 92c78d1..e63a168 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/AlternativeMatchTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/AlternativeMatchTest.java
@@ -33,7 +33,7 @@
 public class AlternativeMatchTest {
 
   @Test
-  public void test() {
+  public void test() throws Exception {
     String document = "1 this is a Test.";
     String script = "";
     script += "CW{-> CREATE(T0, \"s\"=\"a\"),CREATE(T0, \"s\"=\"b\")};";
@@ -47,25 +47,19 @@
     script += "NUM W[1,8]? T0.s==\"a\"{-> T8};";
     script += "NUM W W W W?? T0.s==\"b\"{-> T9};";
     script += "NUM W W W W?? T0.s==\"a\"{-> T10};";
-    
-    
+
     Map<String, String> typeMap = new TreeMap<String, String>();
     String typeName1 = "T0";
     typeMap.put(typeName1, "uima.tcas.Annotation");
-    
+
     Map<String, List<TestFeature>> featureMap = new TreeMap<String, List<TestFeature>>();
     List<TestFeature> list = new ArrayList<RutaTestUtils.TestFeature>();
     featureMap.put(typeName1, list);
     String fn1 = "s";
     list.add(new TestFeature(fn1, "", "uima.cas.String"));
-    
-    CAS cas = null;
-    try {
-      cas = RutaTestUtils.getCAS(document, typeMap, featureMap);
-      Ruta.apply(cas, script);
-    } catch (Exception e) {
-      e.printStackTrace();
-    }
+
+    CAS cas = RutaTestUtils.getCAS(document, typeMap, featureMap);
+    Ruta.apply(cas, script);
 
     RutaTestUtils.assertAnnotationsEquals(cas, 1, 1, "Test");
     RutaTestUtils.assertAnnotationsEquals(cas, 2, 1, "Test");
@@ -77,7 +71,7 @@
     RutaTestUtils.assertAnnotationsEquals(cas, 8, 1, "Test");
     RutaTestUtils.assertAnnotationsEquals(cas, 9, 1, "Test");
     RutaTestUtils.assertAnnotationsEquals(cas, 10, 1, "Test");
-    
+
     if (cas != null) {
       cas.release();
     }
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/ConflictingTypeTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/ConflictingTypeTest.java
index 459b1d4..76d5c1a 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/ConflictingTypeTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/ConflictingTypeTest.java
@@ -21,18 +21,14 @@
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
-import java.io.IOException;
-
 import org.apache.uima.analysis_engine.AnalysisEngine;
 import org.apache.uima.analysis_engine.AnalysisEngineDescription;
 import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
 import org.apache.uima.fit.factory.AnalysisEngineFactory;
 import org.apache.uima.fit.factory.TypeSystemDescriptionFactory;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.resource.metadata.TypeSystemDescription;
 import org.apache.uima.ruta.engine.RutaEngine;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Test;
 
 /**
@@ -42,27 +38,26 @@
   /**
    * Create an analysis engine for a Ruta script.
    *
-   * @param script Script path.
+   * @param script
+   *          Script path.
    * @return Analysis engine.
    */
-  private AnalysisEngine createAE(String script) throws ResourceInitializationException, IOException, InvalidXMLException {
+  private AnalysisEngine createAE(String script) throws Exception {
     final TypeSystemDescription tsd = TypeSystemDescriptionFactory.createTypeSystemDescription(
             "org.apache.uima.ruta.engine.BasicTypeSystem",
             "org.apache.uima.ruta.ConflictingTypeSystem");
     final AnalysisEngineDescription ruta = AnalysisEngineFactory.createEngineDescription(
-            "org.apache.uima.ruta.engine.BasicEngine",
-            RutaEngine.PARAM_MAIN_SCRIPT, script);
+            "org.apache.uima.ruta.engine.BasicEngine", RutaEngine.PARAM_MAIN_SCRIPT, script);
 
     ruta.getAnalysisEngineMetaData().setTypeSystem(tsd);
-    ruta.getAnalysisEngineMetaData()
-            .getTypeSystem()
-            .addType("org.apache.uima.T1", "Type for Testing", "uima.tcas.Annotation");
+    ruta.getAnalysisEngineMetaData().getTypeSystem().addType("org.apache.uima.T1",
+            "Type for Testing", "uima.tcas.Annotation");
 
     return AnalysisEngineFactory.createEngine(ruta);
   }
 
   @Test
-  public void test() throws ResourceInitializationException, IOException, InvalidXMLException, AnalysisEngineProcessException {
+  public void test() throws Exception {
     final String name = getClass().getSimpleName();
     final String namespace = getClass().getPackage().getName();
     final AnalysisEngine ae = createAE(namespace + "." + name);
@@ -78,8 +73,8 @@
       // org.apache.uima.ruta.type.conflicting.W are imported into RUTA's namespace as W;
       assertTrue(e.getCause() instanceof IllegalArgumentException);
     } finally {
-        cas.release();
-        ae.destroy();
+      cas.release();
+      ae.destroy();
     }
   }
 }
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/CustomViewTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/CustomViewTest.java
index 7d14e5a..099e151 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/CustomViewTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/CustomViewTest.java
@@ -21,7 +21,6 @@
 
 import static org.junit.Assert.assertEquals;
 
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -33,10 +32,8 @@
 import org.apache.uima.fit.util.JCasUtil;
 import org.apache.uima.jcas.JCas;
 import org.apache.uima.jcas.tcas.Annotation;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.ruta.engine.RutaEngine;
 import org.apache.uima.ruta.type.W;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -50,17 +47,16 @@
   /**
    * Create an analysis engine for a Ruta script.
    *
-   * @param script Script path.
+   * @param script
+   *          Script path.
    * @return Analysis engine.
    */
-  private AnalysisEngine createAE(String script) throws ResourceInitializationException, IOException, InvalidXMLException {
+  private AnalysisEngine createAE(String script) throws Exception {
     final AnalysisEngineDescription ruta = AnalysisEngineFactory.createEngineDescription(
-            "org.apache.uima.ruta.engine.BasicEngine",
-            RutaEngine.PARAM_MAIN_SCRIPT, script);
+            "org.apache.uima.ruta.engine.BasicEngine", RutaEngine.PARAM_MAIN_SCRIPT, script);
 
-    ruta.getAnalysisEngineMetaData()
-            .getTypeSystem()
-            .addType("org.apache.uima.T1", "Type for Testing", "uima.tcas.Annotation");
+    ruta.getAnalysisEngineMetaData().getTypeSystem().addType("org.apache.uima.T1",
+            "Type for Testing", "uima.tcas.Annotation");
 
     final AggregateBuilder builder = new AggregateBuilder();
     builder.add(ruta, "_InitialView", "text");
@@ -93,7 +89,8 @@
         words.add(a.getCoveredText());
       }
 
-      assertEquals("Checking run " + i, words, Arrays.asList("This", "is", "a", "short", "document"));
+      assertEquals("Checking run " + i, words,
+              Arrays.asList("This", "is", "a", "short", "document"));
     }
   }
 }
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/FeatureMatch1Test.java b/ruta-core/src/test/java/org/apache/uima/ruta/FeatureMatch1Test.java
index df76fc8..d969dbf 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/FeatureMatch1Test.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/FeatureMatch1Test.java
@@ -19,30 +19,22 @@
 
 package org.apache.uima.ruta;
 
-import java.io.IOException;
-import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
 
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
-import org.apache.uima.resource.ResourceConfigurationException;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.ruta.engine.RutaEngine;
 import org.apache.uima.ruta.engine.RutaTestUtils;
 import org.apache.uima.ruta.engine.RutaTestUtils.TestFeature;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Test;
 
 public class FeatureMatch1Test {
 
   @Test
-  public void test() throws AnalysisEngineProcessException, InvalidXMLException,
-          ResourceInitializationException, ResourceConfigurationException, URISyntaxException,
-          IOException {
+  public void test() throws Exception {
     String name = this.getClass().getSimpleName();
     String namespace = this.getClass().getPackage().getName().replaceAll("\\.", "/");
 
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/ImportStatementsTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/ImportStatementsTest.java
index 608ce68..ceaeb2e 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/ImportStatementsTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/ImportStatementsTest.java
@@ -22,7 +22,6 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -37,7 +36,6 @@
 import org.apache.uima.fit.factory.TypeSystemDescriptionFactory;
 import org.apache.uima.fit.util.CasUtil;
 import org.apache.uima.fit.util.JCasUtil;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.resource.metadata.TypeSystemDescription;
 import org.apache.uima.ruta.descriptor.RutaBuildOptions;
 import org.apache.uima.ruta.descriptor.RutaDescriptorFactory;
@@ -45,7 +43,6 @@
 import org.apache.uima.ruta.engine.RutaEngine;
 import org.apache.uima.ruta.type.FalsePositive;
 import org.apache.uima.ruta.type.TruePositive;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Assert;
 import org.junit.Ignore;
 import org.junit.Test;
@@ -67,8 +64,7 @@
    *          {@link org.apache.uima.ruta.engine.RutaEngine#PARAM_STRICT_IMPORTS} value.
    * @return Analysis engine.
    */
-  private AnalysisEngine createAE(String script, boolean strictImport)
-          throws ResourceInitializationException, IOException, InvalidXMLException {
+  private AnalysisEngine createAE(String script, boolean strictImport) throws Exception {
     final TypeSystemDescription tsd = TypeSystemDescriptionFactory.createTypeSystemDescription(
             "org.apache.uima.ruta.engine.BasicTypeSystem",
             "org.apache.uima.ruta.ImportStatementsTestTypeSystem",
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/IncompletePartitioningTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/IncompletePartitioningTest.java
index 08c5442..cded7ae 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/IncompletePartitioningTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/IncompletePartitioningTest.java
@@ -20,7 +20,6 @@
 package org.apache.uima.ruta;
 
 import java.io.File;
-import java.io.IOException;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -42,7 +41,7 @@
 public class IncompletePartitioningTest {
 
   @Test
-  public void test() throws Exception, IOException {
+  public void test() throws Exception {
     String className = this.getClass().getSimpleName();
     String namespace = this.getClass().getPackage().getName().replaceAll("\\.", "/");
 
@@ -54,7 +53,8 @@
     File textFile = new File(textURL.toURI());
     URL url = RutaEngine.class.getClassLoader().getResource("BasicEngine.xml");
     if (url == null) {
-      url = RutaTestUtils.class.getClassLoader().getResource("org/apache/uima/ruta/engine/BasicEngine.xml");
+      url = RutaTestUtils.class.getClassLoader()
+              .getResource("org/apache/uima/ruta/engine/BasicEngine.xml");
     }
     XMLInputSource in = new XMLInputSource(url);
     ResourceSpecifier specifier = UIMAFramework.getXMLParser().parseResourceSpecifier(in);
@@ -62,8 +62,7 @@
 
     TypeSystemDescription basicTypeSystem = aed.getAnalysisEngineMetaData().getTypeSystem();
     for (int i = 1; i <= 50; i++) {
-      basicTypeSystem.addType(RutaTestUtils.TYPE + i, "Type for Testing",
-              "uima.tcas.Annotation");
+      basicTypeSystem.addType(RutaTestUtils.TYPE + i, "Type for Testing", "uima.tcas.Annotation");
     }
     Collection<TypeSystemDescription> tsds = new ArrayList<TypeSystemDescription>();
     tsds.add(basicTypeSystem);
@@ -71,8 +70,8 @@
     aed.getAnalysisEngineMetaData().setTypeSystem(mergeTypeSystems);
 
     AnalysisEngine ae = UIMAFramework.produceAnalysisEngine(specifier);
-    ae.setConfigParameterValue(RutaEngine.PARAM_SCRIPT_PATHS, new String[] { ruleFile
-            .getParentFile().getPath() });
+    ae.setConfigParameterValue(RutaEngine.PARAM_SCRIPT_PATHS,
+            new String[] { ruleFile.getParentFile().getPath() });
     String name = ruleFile.getName();
     if (name.endsWith(RutaEngine.SCRIPT_FILE_EXTENSION)) {
       name = name.substring(0, name.length() - 5);
@@ -84,7 +83,7 @@
     ae.reconfigure();
     CAS cas = ae.newCAS();
     cas.setDocumentText(FileUtils.file2String(textFile, "UTF-8"));
-    
+
     Type typeCW = cas.getTypeSystem().getType("org.apache.uima.ruta.type.CW");
     Type typeSW = cas.getTypeSystem().getType("org.apache.uima.ruta.type.SW");
     cas.addFsToIndexes(cas.createAnnotation(typeCW, 0, 5));
@@ -92,7 +91,7 @@
     cas.addFsToIndexes(cas.createAnnotation(typeCW, 15, 18));
     cas.addFsToIndexes(cas.createAnnotation(typeSW, 19, 22));
     cas.addFsToIndexes(cas.createAnnotation(typeCW, 23, 28));
-    
+
     ae.process(cas);
 
     RutaTestUtils.assertAnnotationsEquals(cas, 1, 2, "Peter, Jochen", "Flo and");
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/LoadResourceFromClassPathTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/LoadResourceFromClassPathTest.java
index ee4dffd..73c5863 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/LoadResourceFromClassPathTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/LoadResourceFromClassPathTest.java
@@ -21,7 +21,11 @@
 
 import static org.junit.Assert.assertEquals;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
 
 import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.FSIterator;
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/NewCASPipelineTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/NewCASPipelineTest.java
index 57d25ca..18ff5b7 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/NewCASPipelineTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/NewCASPipelineTest.java
@@ -20,28 +20,22 @@
 
 import static org.junit.Assert.assertEquals;
 
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.uima.analysis_engine.AnalysisEngine;
 import org.apache.uima.analysis_engine.AnalysisEngineDescription;
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.Type;
 import org.apache.uima.fit.factory.AnalysisEngineFactory;
 import org.apache.uima.fit.factory.TypeSystemDescriptionFactory;
 import org.apache.uima.fit.pipeline.SimplePipeline;
-import org.apache.uima.resource.ResourceConfigurationException;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.resource.metadata.ResourceMetaData;
 import org.apache.uima.resource.metadata.TypeSystemDescription;
 import org.apache.uima.ruta.engine.RutaEngine;
 import org.apache.uima.util.CasCreationUtils;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Test;
 
-
 /**
  * Tests if the script is correctly applied in a pipeline if a new CAS is used.
  *
@@ -56,23 +50,21 @@
    *          Script path.
    * @return Analysis engine.
    */
-  private AnalysisEngine createAE(String script) throws ResourceInitializationException,
-          IOException, InvalidXMLException {
+  private AnalysisEngine createAE(String script) throws Exception {
     final TypeSystemDescription tsd = TypeSystemDescriptionFactory
             .createTypeSystemDescription("org.apache.uima.ruta.engine.BasicTypeSystem");
     final AnalysisEngineDescription ruta = AnalysisEngineFactory.createEngineDescription(
             "org.apache.uima.ruta.engine.BasicEngine", RutaEngine.PARAM_MAIN_SCRIPT, script);
 
     ruta.getAnalysisEngineMetaData().setTypeSystem(tsd);
-    ruta.getAnalysisEngineMetaData().getTypeSystem()
-            .addType(TEST_TYPE, "Type for Testing", "uima.tcas.Annotation");
+    ruta.getAnalysisEngineMetaData().getTypeSystem().addType(TEST_TYPE, "Type for Testing",
+            "uima.tcas.Annotation");
 
     return AnalysisEngineFactory.createEngine(ruta);
   }
 
   @Test
-  public void test() throws ResourceInitializationException, IOException, InvalidXMLException,
-          AnalysisEngineProcessException, ResourceConfigurationException {
+  public void test() throws Exception {
     final String name = getClass().getSimpleName();
     final String namespace = getClass().getPackage().getName();
     final AnalysisEngine ae = createAE(namespace + "." + name);
@@ -80,8 +72,7 @@
     metaData.add(ae.getMetaData());
     String input = "This is a test.";
     Type t1 = null;
-    
-    
+
     // create a cas and apply rules
     final CAS cas = CasCreationUtils.createCas(metaData);
     cas.setDocumentText(input);
@@ -97,18 +88,18 @@
 
     t1 = cas.getTypeSystem().getType(TEST_TYPE);
     assertEquals(1, cas.getAnnotationIndex(t1).size());
-    
+
     // create a new cas and force the ae to update its types
     ae.setConfigParameterValue(RutaEngine.PARAM_RELOAD_SCRIPT, true);
     ae.reconfigure();
-    
+
     final CAS cas2 = CasCreationUtils.createCas(metaData);
     cas2.setDocumentText(input);
     SimplePipeline.runPipeline(cas2, ae);
 
     t1 = cas2.getTypeSystem().getType(TEST_TYPE);
     assertEquals(1, cas2.getAnnotationIndex(t1).size());
-    
+
     // create a new cas and do not force the ae to update its types
     ae.setConfigParameterValue(RutaEngine.PARAM_RELOAD_SCRIPT, false);
     ae.reconfigure();
@@ -118,7 +109,7 @@
 
     t1 = cas3.getTypeSystem().getType(TEST_TYPE);
     assertEquals(1, cas3.getAnnotationIndex(t1).size());
-    
+
     // create a new cas and do not reconfigure the engine
     final CAS cas4 = CasCreationUtils.createCas(metaData);
     cas4.setDocumentText(input);
@@ -126,7 +117,7 @@
 
     t1 = cas4.getTypeSystem().getType(TEST_TYPE);
     assertEquals(1, cas4.getAnnotationIndex(t1).size());
-    
+
     if (ae != null) {
       ae.destroy();
     }
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/StrictImportTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/StrictImportTest.java
index 1258875..43ca529 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/StrictImportTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/StrictImportTest.java
@@ -22,8 +22,6 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 
-import java.io.IOException;
-import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
@@ -34,8 +32,6 @@
 import org.apache.uima.analysis_engine.AnalysisEngineDescription;
 import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
-import org.apache.uima.cas.CASException;
-import org.apache.uima.cas.CASRuntimeException;
 import org.apache.uima.cas.Type;
 import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.cas.text.AnnotationIndex;
@@ -43,17 +39,13 @@
 import org.apache.uima.fit.factory.TypeSystemDescriptionFactory;
 import org.apache.uima.fit.util.CasUtil;
 import org.apache.uima.jcas.tcas.Annotation;
-import org.apache.uima.resource.ResourceConfigurationException;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.resource.metadata.TypeSystemDescription;
 import org.apache.uima.ruta.engine.Ruta;
 import org.apache.uima.ruta.engine.RutaEngine;
 import org.apache.uima.ruta.engine.RutaTestUtils;
 import org.apache.uima.ruta.type.TruePositive;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Assert;
 import org.junit.Test;
-import org.xml.sax.SAXException;
 
 /**
  * Test the strict import option of {@link org.apache.uima.ruta.engine.RutaEngine}.
@@ -72,8 +64,7 @@
    *          {@link RutaEngine#PARAM_STRICT_IMPORTS} value.
    * @return Analysis engine.
    */
-  private AnalysisEngine createAE(String script, boolean strictImport)
-          throws ResourceInitializationException, IOException, InvalidXMLException {
+  private AnalysisEngine createAE(String script, boolean strictImport) throws Exception {
     final TypeSystemDescription tsd = TypeSystemDescriptionFactory.createTypeSystemDescription(
             "org.apache.uima.ruta.engine.BasicTypeSystem",
             "org.apache.uima.ruta.StrictImportTestTypeSystem");
@@ -153,8 +144,7 @@
   }
 
   @Test
-  public void testStrictScriptImport() throws ResourceInitializationException, InvalidXMLException,
-          IOException, AnalysisEngineProcessException, SAXException {
+  public void testStrictScriptImport() throws Exception {
     Map<String, String> complexTypes = new HashMap<>();
     String s1 = "org.apache.uima.ruta.StrictScript2.Type1";
     String s2 = "org.apache.uima.ruta.other.Type1";
@@ -179,9 +169,7 @@
   }
 
   @Test
-  public void testDocumentAnnotation() throws ResourceInitializationException, InvalidXMLException,
-          IOException, AnalysisEngineProcessException, ResourceConfigurationException,
-          URISyntaxException, CASRuntimeException, CASException, SAXException {
+  public void testDocumentAnnotation() throws Exception {
     CAS cas = RutaTestUtils.getCAS("Some text.");
     Map<String, Object> params = new HashMap<>();
     params.put(RutaEngine.PARAM_STRICT_IMPORTS, true);
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/action/CreateTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/action/CreateTest.java
index eb33004..2841777 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/action/CreateTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/action/CreateTest.java
@@ -22,14 +22,11 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
-import java.io.IOException;
-import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
 
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.FSIterator;
 import org.apache.uima.cas.Feature;
@@ -37,21 +34,16 @@
 import org.apache.uima.cas.Type;
 import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.cas.text.AnnotationIndex;
-import org.apache.uima.resource.ResourceConfigurationException;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.ruta.engine.Ruta;
 import org.apache.uima.ruta.engine.RutaEngine;
 import org.apache.uima.ruta.engine.RutaTestUtils;
 import org.apache.uima.ruta.engine.RutaTestUtils.TestFeature;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Test;
 
 public class CreateTest {
 
   @Test
-  public void test() throws AnalysisEngineProcessException, InvalidXMLException,
-          ResourceInitializationException, ResourceConfigurationException, URISyntaxException,
-          IOException {
+  public void test() throws Exception {
     String name = this.getClass().getSimpleName();
     String namespace = this.getClass().getPackage().getName().replaceAll("\\.", "/");
 
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/action/ImplicitActionTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/action/ImplicitActionTest.java
index 5ead54f..73321d1 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/action/ImplicitActionTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/action/ImplicitActionTest.java
@@ -19,33 +19,24 @@
 
 package org.apache.uima.ruta.action;
 
-import java.io.IOException;
-import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
 
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
-import org.apache.uima.resource.ResourceConfigurationException;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.ruta.FeatureMatch1Test;
 import org.apache.uima.ruta.engine.Ruta;
 import org.apache.uima.ruta.engine.RutaEngine;
 import org.apache.uima.ruta.engine.RutaTestUtils;
 import org.apache.uima.ruta.engine.RutaTestUtils.TestFeature;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Test;
-import org.xml.sax.SAXException;
 
 public class ImplicitActionTest {
 
   @Test
-  public void test() throws AnalysisEngineProcessException, InvalidXMLException,
-          ResourceInitializationException, ResourceConfigurationException, URISyntaxException,
-          IOException {
+  public void test() throws Exception {
     String name = this.getClass().getSimpleName();
     String namespace = this.getClass().getPackage().getName().replaceAll("\\.", "/");
 
@@ -94,9 +85,7 @@
   }
 
   @Test
-  public void testChangeOffsets() throws ResourceInitializationException, InvalidXMLException,
-          IOException, AnalysisEngineProcessException, ResourceConfigurationException,
-          URISyntaxException, SAXException {
+  public void testChangeOffsets() throws Exception {
     String text = "text 2 3 x 4 1";
     String script = "";
     script += "NUM{->T1};";
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/action/LabelAtActionTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/action/LabelAtActionTest.java
index 1a14a8a..9836db0 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/action/LabelAtActionTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/action/LabelAtActionTest.java
@@ -18,25 +18,15 @@
  */
 package org.apache.uima.ruta.action;
 
-import java.io.IOException;
-import java.net.URISyntaxException;
-
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
-import org.apache.uima.resource.ResourceConfigurationException;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.ruta.engine.Ruta;
 import org.apache.uima.ruta.engine.RutaTestUtils;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Test;
-import org.xml.sax.SAXException;
 
 public class LabelAtActionTest {
 
   @Test
-  public void test() throws ResourceInitializationException, InvalidXMLException, IOException,
-          AnalysisEngineProcessException, ResourceConfigurationException, URISyntaxException,
-          SAXException {
+  public void test() throws Exception {
 
     String document = "This is a test.";
     String script = "CW{-> t:T1}->{t{->T2};};";
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/action/MacroActionTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/action/MacroActionTest.java
index 53b19c4..4846458 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/action/MacroActionTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/action/MacroActionTest.java
@@ -19,18 +19,10 @@
 
 package org.apache.uima.ruta.action;
 
-import java.io.IOException;
-import java.net.URISyntaxException;
-
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
-import org.apache.uima.resource.ResourceConfigurationException;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.ruta.engine.Ruta;
 import org.apache.uima.ruta.engine.RutaTestUtils;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Test;
-import org.xml.sax.SAXException;
 
 public class MacroActionTest {
 
@@ -78,9 +70,7 @@
   }
 
   @Test
-  public void testVariable() throws ResourceInitializationException, InvalidXMLException,
-          IOException, AnalysisEngineProcessException, ResourceConfigurationException,
-          URISyntaxException, SAXException {
+  public void testVariable() throws Exception {
     String document = "Test";
     String script = "INT j;\n";
     script += "ACTION inc(VAR INT var, INT i) = ASSIGN(var,var+i);\n";
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/action/Shift1Test.java b/ruta-core/src/test/java/org/apache/uima/ruta/action/Shift1Test.java
index b84df42..444e152 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/action/Shift1Test.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/action/Shift1Test.java
@@ -19,18 +19,10 @@
 
 package org.apache.uima.ruta.action;
 
-import java.io.IOException;
-import java.net.URISyntaxException;
-
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
-import org.apache.uima.resource.ResourceConfigurationException;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.ruta.engine.Ruta;
 import org.apache.uima.ruta.engine.RutaTestUtils;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Test;
-import org.xml.sax.SAXException;
 
 public class Shift1Test {
 
@@ -45,9 +37,7 @@
   }
 
   @Test
-  public void testOverlapping() throws ResourceInitializationException, InvalidXMLException,
-          IOException, AnalysisEngineProcessException, ResourceConfigurationException,
-          URISyntaxException, SAXException {
+  public void testOverlapping() throws Exception {
     String text = "text 2 3 x 4";
     String script = "";
     script += "NUM+{->T1};";
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/action/ShiftWithLowMemoryProfileTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/action/ShiftWithLowMemoryProfileTest.java
index 7c9d922..f9951a0 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/action/ShiftWithLowMemoryProfileTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/action/ShiftWithLowMemoryProfileTest.java
@@ -21,33 +21,27 @@
 
 import static org.junit.Assert.assertEquals;
 
-import java.io.IOException;
-import java.net.URISyntaxException;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.FSIterator;
 import org.apache.uima.cas.Type;
 import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.cas.text.AnnotationIndex;
-import org.apache.uima.resource.ResourceConfigurationException;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.ruta.engine.RutaEngine;
 import org.apache.uima.ruta.engine.RutaTestUtils;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Test;
 
 /**
  * There was a {@link NullPointerException} when calling
- * {@link org.apache.uima.ruta.type.RutaBasic#getEndAnchors(org.apache.uima.cas.Type)}
- * with a type that is not annotated in the CAS when running on the low memory profile. This
- * test ensures this bug does not come back.
+ * {@link org.apache.uima.ruta.type.RutaBasic#getEndAnchors(org.apache.uima.cas.Type)} with a type
+ * that is not annotated in the CAS when running on the low memory profile. This test ensures this
+ * bug does not come back.
  */
 public class ShiftWithLowMemoryProfileTest {
   @Test
-  public void testWithLowMemory() throws AnalysisEngineProcessException, InvalidXMLException, ResourceConfigurationException, IOException, URISyntaxException, ResourceInitializationException {
+  public void testWithLowMemory() throws Exception {
     String name = this.getClass().getSimpleName();
     String namespace = this.getClass().getPackage().getName().replaceAll("\\.", "/");
     Map<String, Object> parameters = new HashMap<String, Object>();
@@ -56,7 +50,6 @@
     CAS cas = RutaTestUtils.process(namespace + "/" + name + RutaEngine.SCRIPT_FILE_EXTENSION,
             namespace + "/" + name + ".txt", parameters, 50);
 
-
     Type t = cas.getTypeSystem().getType("org.apache.uima.ruta.type.W");
     AnnotationIndex<AnnotationFS> ai = cas.getAnnotationIndex(t);
     assertEquals(1, ai.size());
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/block/ForEachBlockTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/block/ForEachBlockTest.java
index bc3e59f..88ebe1b 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/block/ForEachBlockTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/block/ForEachBlockTest.java
@@ -19,23 +19,16 @@
 
 package org.apache.uima.ruta.block;
 
-import java.io.IOException;
-import java.net.URISyntaxException;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
-import org.apache.uima.resource.ResourceConfigurationException;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.ruta.engine.Ruta;
 import org.apache.uima.ruta.engine.RutaEngine;
 import org.apache.uima.ruta.engine.RutaTestUtils;
 import org.apache.uima.ruta.seed.TextSeeder;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Ignore;
 import org.junit.Test;
-import org.xml.sax.SAXException;
 
 public class ForEachBlockTest {
 
@@ -70,9 +63,7 @@
 
   @Test
   @Ignore
-  public void testPerformance() throws ResourceInitializationException, InvalidXMLException,
-          IOException, AnalysisEngineProcessException, ResourceConfigurationException,
-          URISyntaxException, SAXException {
+  public void testPerformance() throws Exception {
 
     int lines = 10000;
     StringBuilder sb = new StringBuilder();
@@ -128,9 +119,7 @@
   }
 
   @Test
-  public void testRigthToLeft() throws ResourceInitializationException, InvalidXMLException,
-          IOException, AnalysisEngineProcessException, ResourceConfigurationException,
-          URISyntaxException, SAXException {
+  public void testRigthToLeft() throws Exception {
     String script = "NUM{-> T1};";
     script += "FOREACH(t) T1{}{\n";
     script += "n:T1 SPECIAL.ct==\"^\" t{-> t.begin = n.begin};\n";
@@ -143,10 +132,7 @@
   }
 
   @Test
-  public void testEnforcedLeftToRigthInComposedWithDebbugging()
-          throws ResourceInitializationException, InvalidXMLException, IOException,
-          AnalysisEngineProcessException, ResourceConfigurationException, URISyntaxException,
-          SAXException {
+  public void testEnforcedLeftToRigthInComposedWithDebbugging() throws Exception {
     String script = "NUM{-> T1};";
     script += "FOREACH(t) T1{}{\n";
     script += "(n:@T1{->UNMARK(T1)} SPECIAL.ct==\"^\" t){-> t.begin = n.begin};\n";
@@ -162,9 +148,7 @@
   }
 
   @Test
-  public void testDirection() throws ResourceInitializationException, InvalidXMLException,
-          IOException, AnalysisEngineProcessException, ResourceConfigurationException,
-          URISyntaxException, SAXException {
+  public void testDirection() throws Exception {
     String script = "NUM{-> T1};";
     script += "FOREACH(t,true) T1{}{\n";
     script += "(# t{-PARTOF(T2)}){->T2};\n";
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/block/RutaScriptBlockTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/block/RutaScriptBlockTest.java
index 278abbb..494b5fb 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/block/RutaScriptBlockTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/block/RutaScriptBlockTest.java
@@ -19,18 +19,11 @@
 
 package org.apache.uima.ruta.block;
 
-import java.io.IOException;
-
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
-import org.apache.uima.cas.CASException;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.ruta.engine.Ruta;
 import org.apache.uima.ruta.engine.RutaEngine;
 import org.apache.uima.ruta.engine.RutaTestUtils;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Test;
-import org.xml.sax.SAXException;
 
 public class RutaScriptBlockTest {
 
@@ -62,8 +55,7 @@
   }
 
   @Test
-  public void testExternalBlockCall() throws ResourceInitializationException, InvalidXMLException,
-          IOException, AnalysisEngineProcessException, CASException, SAXException {
+  public void testExternalBlockCall() throws Exception {
     String script = "SCRIPT org.apache.uima.ruta.ScriptWithStackedBlocks;";
     script += "(# PERIOD){-> T3} (# PERIOD){->T4};";
     script += "T3{-> CALL(ScriptWithStackedBlocks.First)};";
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/condition/ContainsTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/condition/ContainsTest.java
index bacd674..cfa37f8 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/condition/ContainsTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/condition/ContainsTest.java
@@ -19,20 +19,13 @@
 
 package org.apache.uima.ruta.condition;
 
-import java.io.IOException;
-import java.net.URISyntaxException;
 import java.util.Map;
 import java.util.TreeMap;
 
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
-import org.apache.uima.resource.ResourceConfigurationException;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.ruta.engine.Ruta;
 import org.apache.uima.ruta.engine.RutaTestUtils;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Test;
-import org.xml.sax.SAXException;
 
 public class ContainsTest {
 
@@ -53,9 +46,7 @@
   }
 
   @Test
-  public void testAlias() throws ResourceInitializationException, InvalidXMLException, IOException,
-          AnalysisEngineProcessException, ResourceConfigurationException, URISyntaxException,
-          SAXException {
+  public void testAlias() throws Exception {
     String document = "1 some text; 2 some text; 3 some text;";
 
     String script = "IMPORT PACKAGE * FROM org.apache.uima.ruta.ImportStatementsTestTypeSystemWithManyPackages AS ruta;";
@@ -78,9 +69,7 @@
   }
 
   @Test
-  public void testContainsOverlappingAnnotations() throws ResourceInitializationException,
-          InvalidXMLException, IOException, AnalysisEngineProcessException,
-          ResourceConfigurationException, URISyntaxException, SAXException {
+  public void testContainsOverlappingAnnotations() throws Exception {
 
     String document = "1 2 3 4 5 6 7 8";
 
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/condition/ContextCountTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/condition/ContextCountTest.java
index 7240573..ff84508 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/condition/ContextCountTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/condition/ContextCountTest.java
@@ -21,23 +21,16 @@
 
 import static org.junit.Assert.assertEquals;
 
-import java.io.IOException;
-
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
-import org.apache.uima.cas.CASException;
 import org.apache.uima.cas.FSIterator;
 import org.apache.uima.cas.Type;
 import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.cas.text.AnnotationIndex;
 import org.apache.uima.jcas.JCas;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.ruta.engine.Ruta;
 import org.apache.uima.ruta.engine.RutaTestUtils;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Assert;
 import org.junit.Test;
-import org.xml.sax.SAXException;
 
 public class ContextCountTest {
 
@@ -63,8 +56,7 @@
   }
 
   @Test
-  public void testIndex() throws CASException, ResourceInitializationException, InvalidXMLException,
-          IOException, AnalysisEngineProcessException, SAXException {
+  public void testIndex() throws Exception {
     JCas jcas = RutaTestUtils.getCAS("A B C a b c").getJCas();
     Assert.assertTrue(Ruta.matches(jcas,
             "INT index; CW{CONTEXTCOUNT(Document,index,index)} # @SW{CONTEXTCOUNT(Document,0,100,index)-> MARK(T1,1,3)};"));
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/condition/CountTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/condition/CountTest.java
index c7e8ddb..4072807 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/condition/CountTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/condition/CountTest.java
@@ -19,18 +19,10 @@
 
 package org.apache.uima.ruta.condition;
 
-import java.io.IOException;
-import java.net.URISyntaxException;
-
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
-import org.apache.uima.resource.ResourceConfigurationException;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.ruta.engine.Ruta;
 import org.apache.uima.ruta.engine.RutaTestUtils;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Test;
-import org.xml.sax.SAXException;
 
 public class CountTest {
 
@@ -48,9 +40,7 @@
   }
 
   @Test
-  public void testCountWithPeriodPostfix() throws ResourceInitializationException,
-          InvalidXMLException, IOException, AnalysisEngineProcessException,
-          ResourceConfigurationException, URISyntaxException, SAXException {
+  public void testCountWithPeriodPostfix() throws Exception {
 
     String document = "Some text.";
     String script = "(CW SW) {-> T1};";
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/condition/FeatureTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/condition/FeatureTest.java
index f05799f..6014b24 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/condition/FeatureTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/condition/FeatureTest.java
@@ -19,29 +19,21 @@
 
 package org.apache.uima.ruta.condition;
 
-import java.io.IOException;
-import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
 
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
-import org.apache.uima.resource.ResourceConfigurationException;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.ruta.engine.RutaEngine;
 import org.apache.uima.ruta.engine.RutaTestUtils;
 import org.apache.uima.ruta.engine.RutaTestUtils.TestFeature;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Test;
 
 public class FeatureTest {
 
   @Test
-  public void test() throws AnalysisEngineProcessException, InvalidXMLException,
-          ResourceInitializationException, ResourceConfigurationException, URISyntaxException,
-          IOException {
+  public void test() throws Exception {
     String name = this.getClass().getSimpleName();
     String namespace = this.getClass().getPackage().getName().replaceAll("\\.", "/");
 
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/condition/ImplicitCondition1Test.java b/ruta-core/src/test/java/org/apache/uima/ruta/condition/ImplicitCondition1Test.java
index 3fe77a0..d0dfbcb 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/condition/ImplicitCondition1Test.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/condition/ImplicitCondition1Test.java
@@ -19,31 +19,23 @@
 
 package org.apache.uima.ruta.condition;
 
-import java.io.IOException;
-import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
 
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
-import org.apache.uima.resource.ResourceConfigurationException;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.ruta.FeatureMatch1Test;
 import org.apache.uima.ruta.engine.RutaEngine;
 import org.apache.uima.ruta.engine.RutaTestUtils;
 import org.apache.uima.ruta.engine.RutaTestUtils.TestFeature;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Test;
 
 public class ImplicitCondition1Test {
 
   @Test
-  public void test() throws AnalysisEngineProcessException, InvalidXMLException,
-          ResourceInitializationException, ResourceConfigurationException, URISyntaxException,
-          IOException {
+  public void test() throws Exception {
     String name = this.getClass().getSimpleName();
     String namespace = this.getClass().getPackage().getName().replaceAll("\\.", "/");
 
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/condition/ImplicitCondition2Test.java b/ruta-core/src/test/java/org/apache/uima/ruta/condition/ImplicitCondition2Test.java
index 92a100f..b5cd6a1 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/condition/ImplicitCondition2Test.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/condition/ImplicitCondition2Test.java
@@ -19,18 +19,11 @@
 
 package org.apache.uima.ruta.condition;
 
-import java.io.IOException;
-
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
-import org.apache.uima.cas.CASException;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.ruta.engine.Ruta;
 import org.apache.uima.ruta.engine.RutaTestUtils;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Assert;
 import org.junit.Test;
-import org.xml.sax.SAXException;
 
 public class ImplicitCondition2Test {
 
@@ -64,8 +57,7 @@
   }
 
   @Test
-  public void testStringCompare() throws ResourceInitializationException, InvalidXMLException,
-          IOException, AnalysisEngineProcessException, CASException, SAXException {
+  public void testStringCompare() throws Exception {
     String document = "a b. a b.";
     CAS cas = RutaTestUtils.getCAS(document);
     Assert.assertTrue(Ruta.matches(cas.getJCas(), "(w:W # W{W.ct==w.ct}){->T1};"));
@@ -75,8 +67,7 @@
   }
 
   @Test
-  public void testStringCompareNull() throws ResourceInitializationException, InvalidXMLException,
-          IOException, AnalysisEngineProcessException, CASException, SAXException {
+  public void testStringCompareNull() throws Exception {
     String document = "a b. a b.";
     CAS cas = RutaTestUtils.getCAS(document);
 
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/condition/MacroConditionTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/condition/MacroConditionTest.java
index 34c328c..e09e219 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/condition/MacroConditionTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/condition/MacroConditionTest.java
@@ -19,18 +19,10 @@
 
 package org.apache.uima.ruta.condition;
 
-import java.io.IOException;
-import java.net.URISyntaxException;
-
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
-import org.apache.uima.resource.ResourceConfigurationException;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.ruta.engine.Ruta;
 import org.apache.uima.ruta.engine.RutaTestUtils;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Test;
-import org.xml.sax.SAXException;
 
 public class MacroConditionTest {
 
@@ -79,9 +71,7 @@
   }
 
   @Test
-  public void testVariable() throws ResourceInitializationException, InvalidXMLException,
-          IOException, AnalysisEngineProcessException, ResourceConfigurationException,
-          URISyntaxException, SAXException {
+  public void testVariable() throws Exception {
     String document = "This is a Test.";
     String script = "INT j;\n";
     script += "CONDITION cc(VAR INT var) = TOTALCOUNT(W,1,1000,var);\n";
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/descriptor/GenerateDescriptorTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/descriptor/GenerateDescriptorTest.java
index 4fc7c64..39a57d2 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/descriptor/GenerateDescriptorTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/descriptor/GenerateDescriptorTest.java
@@ -19,13 +19,10 @@
 
 package org.apache.uima.ruta.descriptor;
 
-import java.io.IOException;
-import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.antlr.runtime.RecognitionException;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.uima.UIMAFramework;
 import org.apache.uima.analysis_engine.AnalysisEngine;
@@ -33,7 +30,6 @@
 import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.Type;
 import org.apache.uima.fit.util.CasUtil;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.resource.ResourceManager;
 import org.apache.uima.resource.impl.ResourceManager_impl;
 import org.apache.uima.resource.metadata.ConfigurationParameterSettings;
@@ -42,7 +38,6 @@
 import org.apache.uima.resource.metadata.TypeSystemDescription;
 import org.apache.uima.ruta.engine.HtmlAnnotator;
 import org.apache.uima.ruta.engine.RutaEngine;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -72,8 +67,7 @@
   }
 
   @Test
-  public void testCreateAnalysisEngineDescription()
-          throws InvalidXMLException, IOException, RecognitionException, URISyntaxException {
+  public void testCreateAnalysisEngineDescription() throws Exception {
 
     String script = "";
     script += "PACKAGE test.package;\n";
@@ -117,8 +111,7 @@
   }
 
   @Test
-  public void testCreateTypeSystemDescription() throws URISyntaxException, IOException,
-          RecognitionException, InvalidXMLException, ResourceInitializationException {
+  public void testCreateTypeSystemDescription() throws Exception {
 
     String script = "";
     script += "PACKAGE test.package;\n";
@@ -187,8 +180,7 @@
   }
 
   @Test
-  public void testRuleScriptName() throws URISyntaxException, IOException, RecognitionException,
-          InvalidXMLException, ResourceInitializationException {
+  public void testRuleScriptName() throws Exception {
 
     String script = "";
     script += "PACKAGE test.package;\n";
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/engine/CascadedModifierTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/engine/CascadedModifierTest.java
index b47bd2b..4bdbcde 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/engine/CascadedModifierTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/engine/CascadedModifierTest.java
@@ -21,32 +21,23 @@
 
 import static org.junit.Assert.assertEquals;
 
-import java.io.IOException;
-import java.net.URISyntaxException;
 import java.net.URL;
 
 import org.apache.uima.UIMAFramework;
 import org.apache.uima.analysis_engine.AnalysisEngine;
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.FSIterator;
 import org.apache.uima.cas.Type;
 import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.cas.text.AnnotationIndex;
-import org.apache.uima.resource.ResourceConfigurationException;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.resource.ResourceSpecifier;
-import org.apache.uima.util.InvalidXMLException;
 import org.apache.uima.util.XMLInputSource;
 import org.junit.Test;
-import org.xml.sax.SAXException;
 
 public class CascadedModifierTest {
 
   @Test
-  public void test() throws IOException, URISyntaxException, InvalidXMLException,
-          ResourceInitializationException, ResourceConfigurationException,
-          AnalysisEngineProcessException, SAXException {
+  public void test() throws Exception {
 
     URL url = RutaEngine.class.getClassLoader().getResource("AAE.xml");
     if (url == null) {
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/engine/HtmlConverterTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/engine/HtmlConverterTest.java
index cfef691..538b26c 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/engine/HtmlConverterTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/engine/HtmlConverterTest.java
@@ -22,14 +22,11 @@
 import static org.junit.Assert.assertEquals;
 
 import java.io.File;
-import java.io.IOException;
-import java.net.URISyntaxException;
 import java.net.URL;
 
 import org.apache.uima.UIMAFramework;
 import org.apache.uima.analysis_engine.AnalysisEngine;
 import org.apache.uima.analysis_engine.AnalysisEngineDescription;
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.FSIterator;
 import org.apache.uima.cas.Type;
@@ -37,11 +34,8 @@
 import org.apache.uima.cas.text.AnnotationIndex;
 import org.apache.uima.fit.factory.JCasFactory;
 import org.apache.uima.jcas.JCas;
-import org.apache.uima.resource.ResourceConfigurationException;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.resource.ResourceSpecifier;
 import org.apache.uima.util.FileUtils;
-import org.apache.uima.util.InvalidXMLException;
 import org.apache.uima.util.XMLInputSource;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -63,7 +57,7 @@
   private String outputViewName = "raw_testing";
 
   @BeforeClass
-  public static void setUpClass() throws IOException, URISyntaxException {
+  public static void setUpClass() throws Exception {
     // get resource
     String namespace = HtmlConverterTest.class.getPackage().getName().replaceAll("\\.", "/");
     String testFilename = namespace + "/" + "testWin.html";
@@ -98,14 +92,12 @@
   }
 
   @Test
-  public void htmlBodyContentHtmlDecodingExplicitPolicyTest()
-          throws AnalysisEngineProcessException, ResourceConfigurationException,
-          ResourceInitializationException, InvalidXMLException, IOException {
+  public void htmlBodyContentHtmlDecodingExplicitPolicyTest() throws Exception {
     // configure annotator and create AE:
     URL url = HtmlConverter.class.getClassLoader().getResource("HtmlConverter.xml");
     if (url == null) {
-      url = HtmlConverter.class.getClassLoader().getResource(
-              "org/apache/uima/ruta/engine/HtmlConverter.xml");
+      url = HtmlConverter.class.getClassLoader()
+              .getResource("org/apache/uima/ruta/engine/HtmlConverter.xml");
     }
     XMLInputSource in = new XMLInputSource(url);
     ResourceSpecifier specifier = UIMAFramework.getXMLParser().parseResourceSpecifier(in);
@@ -138,14 +130,12 @@
   }
 
   @Test
-  public void htmlBodyContentHtmlDecodingHeuristicPolicyTest()
-          throws AnalysisEngineProcessException, ResourceConfigurationException,
-          ResourceInitializationException, InvalidXMLException, IOException {
+  public void htmlBodyContentHtmlDecodingHeuristicPolicyTest() throws Exception {
     // configure annotator and create AE:
     URL url = HtmlConverter.class.getClassLoader().getResource("HtmlConverter.xml");
     if (url == null) {
-      url = HtmlConverter.class.getClassLoader().getResource(
-              "org/apache/uima/ruta/engine/HtmlConverter.xml");
+      url = HtmlConverter.class.getClassLoader()
+              .getResource("org/apache/uima/ruta/engine/HtmlConverter.xml");
     }
     XMLInputSource in = new XMLInputSource(url);
     ResourceSpecifier specifier = UIMAFramework.getXMLParser().parseResourceSpecifier(in);
@@ -175,14 +165,12 @@
   }
 
   @Test
-  public void htmlBodyContentUnixTest() throws AnalysisEngineProcessException,
-          ResourceConfigurationException, ResourceInitializationException, InvalidXMLException,
-          IOException {
+  public void htmlBodyContentUnixTest() throws Exception {
     // configure annotator and create AE:
     URL url = HtmlConverter.class.getClassLoader().getResource("HtmlConverter.xml");
     if (url == null) {
-      url = HtmlConverter.class.getClassLoader().getResource(
-              "org/apache/uima/ruta/engine/HtmlConverter.xml");
+      url = HtmlConverter.class.getClassLoader()
+              .getResource("org/apache/uima/ruta/engine/HtmlConverter.xml");
     }
     XMLInputSource in = new XMLInputSource(url);
     ResourceSpecifier specifier = UIMAFramework.getXMLParser().parseResourceSpecifier(in);
@@ -212,14 +200,12 @@
   }
 
   @Test
-  public void htmlBodyContentWinTest() throws AnalysisEngineProcessException,
-          ResourceConfigurationException, ResourceInitializationException, InvalidXMLException,
-          IOException {
+  public void htmlBodyContentWinTest() throws Exception {
     // configure annotator and create AE:
     URL url = HtmlConverter.class.getClassLoader().getResource("HtmlConverter.xml");
     if (url == null) {
-      url = HtmlConverter.class.getClassLoader().getResource(
-              "org/apache/uima/ruta/engine/HtmlConverter.xml");
+      url = HtmlConverter.class.getClassLoader()
+              .getResource("org/apache/uima/ruta/engine/HtmlConverter.xml");
     }
     XMLInputSource in = new XMLInputSource(url);
     ResourceSpecifier specifier = UIMAFramework.getXMLParser().parseResourceSpecifier(in);
@@ -249,14 +235,12 @@
   }
 
   @Test
-  public void htmlBodyContentWithCommentsTest() throws AnalysisEngineProcessException,
-          ResourceConfigurationException, ResourceInitializationException, InvalidXMLException,
-          IOException {
+  public void htmlBodyContentWithCommentsTest() throws Exception {
     // configure annotator and create AE:
     URL url = HtmlConverter.class.getClassLoader().getResource("HtmlConverter.xml");
     if (url == null) {
-      url = HtmlConverter.class.getClassLoader().getResource(
-              "org/apache/uima/ruta/engine/HtmlConverter.xml");
+      url = HtmlConverter.class.getClassLoader()
+              .getResource("org/apache/uima/ruta/engine/HtmlConverter.xml");
     }
     XMLInputSource in = new XMLInputSource(url);
     ResourceSpecifier specifier = UIMAFramework.getXMLParser().parseResourceSpecifier(in);
@@ -286,14 +270,12 @@
   }
 
   @Test
-  public void htmlBodyContentNLTagsTest() throws AnalysisEngineProcessException,
-          ResourceConfigurationException, ResourceInitializationException, InvalidXMLException,
-          IOException {
+  public void htmlBodyContentNLTagsTest() throws Exception {
     // configure annotator and create AE:
     URL url = HtmlConverter.class.getClassLoader().getResource("HtmlConverter.xml");
     if (url == null) {
-      url = HtmlConverter.class.getClassLoader().getResource(
-              "org/apache/uima/ruta/engine/HtmlConverter.xml");
+      url = HtmlConverter.class.getClassLoader()
+              .getResource("org/apache/uima/ruta/engine/HtmlConverter.xml");
     }
     XMLInputSource in = new XMLInputSource(url);
     ResourceSpecifier specifier = UIMAFramework.getXMLParser().parseResourceSpecifier(in);
@@ -324,14 +306,12 @@
   }
 
   @Test
-  public void htmlBodyContentWithCommentsAndScriptTest() throws AnalysisEngineProcessException,
-          ResourceConfigurationException, ResourceInitializationException, InvalidXMLException,
-          IOException {
+  public void htmlBodyContentWithCommentsAndScriptTest() throws Exception {
     // configure annotator and create AE:
     URL url = HtmlConverter.class.getClassLoader().getResource("HtmlConverter.xml");
     if (url == null) {
-      url = HtmlConverter.class.getClassLoader().getResource(
-              "org/apache/uima/ruta/engine/HtmlConverter.xml");
+      url = HtmlConverter.class.getClassLoader()
+              .getResource("org/apache/uima/ruta/engine/HtmlConverter.xml");
     }
     XMLInputSource in = new XMLInputSource(url);
     ResourceSpecifier specifier = UIMAFramework.getXMLParser().parseResourceSpecifier(in);
@@ -367,12 +347,12 @@
       // configure annotator and create AE:
       URL url = HtmlConverter.class.getClassLoader().getResource("HtmlConverter.xml");
       if (url == null) {
-        url = HtmlConverter.class.getClassLoader().getResource(
-                "org/apache/uima/ruta/engine/HtmlConverter.xml");
+        url = HtmlConverter.class.getClassLoader()
+                .getResource("org/apache/uima/ruta/engine/HtmlConverter.xml");
       }
       XMLInputSource in = new XMLInputSource(url);
-      AnalysisEngineDescription specifier = (AnalysisEngineDescription) UIMAFramework
-              .getXMLParser().parseResourceSpecifier(in);
+      AnalysisEngineDescription specifier = (AnalysisEngineDescription) UIMAFramework.getXMLParser()
+              .parseResourceSpecifier(in);
 
       AnalysisEngine ae = UIMAFramework.produceAnalysisEngine(specifier);
       ae.setConfigParameterValue("outputView", outputViewName);
@@ -414,13 +394,13 @@
     // configure annotator and create AE:
     URL url = HtmlConverter.class.getClassLoader().getResource("HtmlConverter.xml");
     if (url == null) {
-      url = HtmlConverter.class.getClassLoader().getResource(
-              "org/apache/uima/ruta/engine/HtmlConverter.xml");
+      url = HtmlConverter.class.getClassLoader()
+              .getResource("org/apache/uima/ruta/engine/HtmlConverter.xml");
     }
     XMLInputSource in = new XMLInputSource(url);
-    AnalysisEngineDescription specifier = (AnalysisEngineDescription) UIMAFramework
-            .getXMLParser().parseResourceSpecifier(in);
-    
+    AnalysisEngineDescription specifier = (AnalysisEngineDescription) UIMAFramework.getXMLParser()
+            .parseResourceSpecifier(in);
+
     AnalysisEngine ae = UIMAFramework.produceAnalysisEngine(specifier);
     ae.setConfigParameterValue("outputView", outputViewName);
     ae.reconfigure();
@@ -476,14 +456,12 @@
   }
 
   @Test
-  public void parameterTestInputView() throws AnalysisEngineProcessException,
-          ResourceConfigurationException, ResourceInitializationException, InvalidXMLException,
-          IOException {
+  public void parameterTestInputView() throws Exception {
     // configure annotator and create AE:
     URL url = HtmlConverter.class.getClassLoader().getResource("HtmlConverter.xml");
     if (url == null) {
-      url = HtmlConverter.class.getClassLoader().getResource(
-              "org/apache/uima/ruta/engine/HtmlConverter.xml");
+      url = HtmlConverter.class.getClassLoader()
+              .getResource("org/apache/uima/ruta/engine/HtmlConverter.xml");
     }
     XMLInputSource in = new XMLInputSource(url);
     ResourceSpecifier specifier = UIMAFramework.getXMLParser().parseResourceSpecifier(in);
@@ -515,15 +493,16 @@
     // fini
     cas.release();
   }
-  
+
   @Test
   public void testStyle() throws Exception {
-    String html = "<html><head>\n" + "<style>\n" + "/*  */\n" + ".test {\n" + "   text-align: left;\n" + "}\n"
-            + "</style>\n" + "</head><body>Hello world</body></html>";
+    String html = "<html><head>\n" + "<style>\n" + "/*  */\n" + ".test {\n"
+            + "   text-align: left;\n" + "}\n" + "</style>\n"
+            + "</head><body>Hello world</body></html>";
     URL url = HtmlConverter.class.getClassLoader().getResource("HtmlConverter.xml");
     if (url == null) {
-      url = HtmlConverter.class.getClassLoader().getResource(
-              "org/apache/uima/ruta/engine/HtmlConverter.xml");
+      url = HtmlConverter.class.getClassLoader()
+              .getResource("org/apache/uima/ruta/engine/HtmlConverter.xml");
     }
     XMLInputSource in = new XMLInputSource(url);
     ResourceSpecifier specifier = UIMAFramework.getXMLParser().parseResourceSpecifier(in);
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/engine/ResourcesFromDataPathTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/engine/ResourcesFromDataPathTest.java
index 4de12b7..b2009cb 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/engine/ResourcesFromDataPathTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/engine/ResourcesFromDataPathTest.java
@@ -19,28 +19,23 @@
 package org.apache.uima.ruta.engine;
 
 import java.io.File;
-import java.io.IOException;
 import java.net.MalformedURLException;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.uima.UIMAFramework;
 import org.apache.uima.analysis_engine.AnalysisEngine;
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
 import org.apache.uima.fit.factory.AnalysisEngineFactory;
 import org.apache.uima.fit.internal.ResourceManagerFactory;
 import org.apache.uima.fit.internal.ResourceManagerFactory.ResourceManagerCreator;
 import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.resource.ResourceManager;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Test;
-import org.xml.sax.SAXException;
 
 public class ResourcesFromDataPathTest {
 
   @Test
-  public void test() throws IOException, ResourceInitializationException, InvalidXMLException,
-          AnalysisEngineProcessException, SAXException {
+  public void test() throws Exception {
 
     final String datapath = "target/datapath/";
     new File(datapath).mkdirs();
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/engine/RulesParamTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/engine/RulesParamTest.java
index 172c29e..aa4ce4d 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/engine/RulesParamTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/engine/RulesParamTest.java
@@ -19,7 +19,6 @@
 
 package org.apache.uima.ruta.engine;
 
-import java.io.IOException;
 import java.net.URL;
 import java.util.HashMap;
 import java.util.Map;
@@ -27,25 +26,23 @@
 import org.apache.uima.UIMAFramework;
 import org.apache.uima.analysis_engine.AnalysisEngine;
 import org.apache.uima.cas.CAS;
-import org.apache.uima.resource.ResourceConfigurationException;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.resource.ResourceSpecifier;
-import org.apache.uima.util.InvalidXMLException;
 import org.apache.uima.util.XMLInputSource;
 import org.junit.Test;
 
 public class RulesParamTest {
   @Test
-  public void test() throws IOException, InvalidXMLException, ResourceInitializationException, ResourceConfigurationException {
+  public void test() throws Exception {
     String document = "Some text.";
     String script = "CW SW{-> T1};\n";
 
     Map<String, Object> parameters = new HashMap<String, Object>();
     parameters.put(RutaEngine.PARAM_RULES, script);
-    
+
     URL url = RutaEngine.class.getClassLoader().getResource("BasicEngine.xml");
     if (url == null) {
-      url = RutaTestUtils.class.getClassLoader().getResource("org/apache/uima/ruta/engine/BasicEngine.xml");
+      url = RutaTestUtils.class.getClassLoader()
+              .getResource("org/apache/uima/ruta/engine/BasicEngine.xml");
     }
     XMLInputSource in = new XMLInputSource(url);
     ResourceSpecifier specifier = UIMAFramework.getXMLParser().parseResourceSpecifier(in);
@@ -55,7 +52,7 @@
     CAS cas = null;
     try {
       cas = RutaTestUtils.getCAS(document);
-    ae.process(cas);
+      ae.process(cas);
     } catch (Exception e) {
       e.printStackTrace();
     }
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/engine/RutaTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/engine/RutaTest.java
index 03b6aee..506c706 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/engine/RutaTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/engine/RutaTest.java
@@ -21,16 +21,13 @@
 
 import static org.junit.Assert.assertEquals;
 
-import java.io.IOException;
 import java.net.URL;
 import java.util.List;
 
 import org.apache.uima.UIMAFramework;
 import org.apache.uima.analysis_engine.AnalysisEngine;
 import org.apache.uima.analysis_engine.AnalysisEngineDescription;
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
-import org.apache.uima.cas.CASException;
 import org.apache.uima.cas.FSIterator;
 import org.apache.uima.cas.Type;
 import org.apache.uima.cas.impl.AnnotationImpl;
@@ -38,7 +35,6 @@
 import org.apache.uima.cas.text.AnnotationIndex;
 import org.apache.uima.jcas.JCas;
 import org.apache.uima.jcas.tcas.Annotation;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.resource.metadata.FsIndexDescription;
 import org.apache.uima.resource.metadata.TypeDescription;
 import org.apache.uima.resource.metadata.TypePriorities;
@@ -46,11 +42,9 @@
 import org.apache.uima.resource.metadata.impl.TypeDescription_impl;
 import org.apache.uima.resource.metadata.impl.TypeSystemDescription_impl;
 import org.apache.uima.util.CasCreationUtils;
-import org.apache.uima.util.InvalidXMLException;
 import org.apache.uima.util.XMLInputSource;
 import org.junit.Assert;
 import org.junit.Test;
-import org.xml.sax.SAXException;
 
 public class RutaTest {
 
@@ -122,8 +116,7 @@
   }
 
   @Test
-  public void testApplyRule() throws ResourceInitializationException, InvalidXMLException,
-          IOException, CASException, AnalysisEngineProcessException, SAXException {
+  public void testApplyRule() throws Exception {
     CAS cas = RutaTestUtils.getCAS("Some document.");
     JCas jcas = cas.getJCas();
 
@@ -138,8 +131,7 @@
   }
 
   @Test
-  public void testSelect() throws ResourceInitializationException, InvalidXMLException, IOException,
-          CASException, AnalysisEngineProcessException, SAXException {
+  public void testSelect() throws Exception {
     String document = "Some text.";
     CAS cas = RutaTestUtils.getCAS(document);
     JCas jcas = cas.getJCas();
@@ -158,8 +150,7 @@
   }
 
   @Test
-  public void testSelectWithInjection() throws ResourceInitializationException, InvalidXMLException,
-          IOException, CASException, AnalysisEngineProcessException, SAXException {
+  public void testSelectWithInjection() throws Exception {
     String document = "Some text.";
     CAS cas = RutaTestUtils.getCAS(document);
     AnnotationImpl t1 = (AnnotationImpl) cas.createAnnotation(RutaTestUtils.getTestType(cas, 1), 5,
@@ -176,17 +167,14 @@
   }
 
   @Test
-  public void testMatches() throws ResourceInitializationException, InvalidXMLException,
-          IOException, CASException, AnalysisEngineProcessException, SAXException {
+  public void testMatches() throws Exception {
     JCas jcas = RutaTestUtils.getCAS("Some text.").getJCas();
     Assert.assertTrue(Ruta.matches(jcas, "CW # @PERIOD;"));
     Assert.assertTrue(Ruta.matches(jcas, "W{IS(CW)} \"text\";"));
   }
 
   @Test
-  public void testMatchesWithInjection()
-          throws ResourceInitializationException, InvalidXMLException, IOException, CASException,
-          AnalysisEngineProcessException, SAXException {
+  public void testMatchesWithInjection() throws Exception {
     String document = "Some text.";
     CAS cas = RutaTestUtils.getCAS(document);
     AnnotationImpl t1 = (AnnotationImpl) cas.createAnnotation(RutaTestUtils.getTestType(cas, 1), 5,
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/engine/StackedScriptsTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/engine/StackedScriptsTest.java
index da6ab00..5695db4 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/engine/StackedScriptsTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/engine/StackedScriptsTest.java
@@ -21,7 +21,6 @@
 import static org.apache.uima.fit.factory.AnalysisEngineFactory.createEngine;
 import static org.apache.uima.fit.factory.AnalysisEngineFactory.createEngineDescription;
 
-import java.io.IOException;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -29,17 +28,12 @@
 import org.apache.uima.UIMAFramework;
 import org.apache.uima.analysis_engine.AnalysisEngine;
 import org.apache.uima.analysis_engine.AnalysisEngineDescription;
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
-import org.apache.uima.resource.ResourceConfigurationException;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.resource.ResourceSpecifier;
 import org.apache.uima.resource.metadata.TypeSystemDescription;
 import org.apache.uima.util.CasCreationUtils;
-import org.apache.uima.util.InvalidXMLException;
 import org.apache.uima.util.XMLInputSource;
 import org.junit.Test;
-import org.xml.sax.SAXException;
 
 public class StackedScriptsTest {
 
@@ -56,9 +50,7 @@
   String rules3 = "W{PARTOF({T1,T2,T3})->T4};";
 
   @Test
-  public void testWithUimaFitAggregated()
-          throws ResourceInitializationException, InvalidXMLException, IOException,
-          AnalysisEngineProcessException, ResourceConfigurationException, SAXException {
+  public void testWithUimaFitAggregated() throws Exception {
 
     AnalysisEngine aae = createEngine(createEngineDescription(
             createEngineDescription(RutaEngine.class, RutaEngine.PARAM_RULES, rules1),
@@ -75,9 +67,7 @@
   }
 
   @Test
-  public void testWithoutUimaFit()
-          throws ResourceInitializationException, InvalidXMLException, IOException,
-          AnalysisEngineProcessException, ResourceConfigurationException, SAXException {
+  public void testWithoutUimaFit() throws Exception {
 
     AnalysisEngine rutaAE1 = createAnalysisEngine(rules1, null);
     AnalysisEngine rutaAE2 = createAnalysisEngine(rules2, null);
@@ -88,8 +78,7 @@
   }
 
   private void processAndTest(AnalysisEngine rutaAE1, AnalysisEngine rutaAE2,
-          AnalysisEngine rutaAE3) throws ResourceInitializationException, IOException,
-          InvalidXMLException, AnalysisEngineProcessException, SAXException {
+          AnalysisEngine rutaAE3) throws Exception {
     CAS cas = getCAS(LINES);
 
     rutaAE1.process(cas);
@@ -130,8 +119,7 @@
     RutaTestUtils.assertAnnotationsEquals(cas, 4, 3 * lines, t4);
   }
 
-  private CAS getCAS(int lines)
-          throws ResourceInitializationException, IOException, InvalidXMLException, SAXException {
+  private CAS getCAS(int lines) throws Exception {
     StringBuilder sb = new StringBuilder();
     for (int i = 0; i < lines; i++) {
       sb.append(DOC_TEXT);
@@ -141,9 +129,7 @@
     return cas;
   }
 
-  private AnalysisEngine createAnalysisEngine(String rules, String[] reindexOnly)
-          throws IOException, InvalidXMLException, ResourceInitializationException,
-          ResourceConfigurationException {
+  private AnalysisEngine createAnalysisEngine(String rules, String[] reindexOnly) throws Exception {
     URL url = RutaEngine.class.getClassLoader().getResource("BasicEngine.xml");
     if (url == null) {
       url = RutaTestUtils.class.getClassLoader()
@@ -173,8 +159,7 @@
   }
 
   @Test
-  public void testPerformanceOfReindexOnly() throws ResourceInitializationException,
-          InvalidXMLException, IOException, AnalysisEngineProcessException, SAXException {
+  public void testPerformanceOfReindexOnly() throws Exception {
     AnalysisEngine aaeNoReindex = createEngine(createEngineDescription(
             createEngineDescription(RutaEngine.class, RutaEngine.PARAM_RULES, rules1),
             createEngineDescription(RutaEngine.class, RutaEngine.PARAM_RULES, rules2),
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/engine/UimafitTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/engine/UimafitTest.java
index 4ae8d14..b1c15f3 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/engine/UimafitTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/engine/UimafitTest.java
@@ -22,14 +22,10 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
-import java.io.IOException;
-import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.Collection;
 
-import org.antlr.runtime.RecognitionException;
 import org.apache.uima.analysis_engine.AnalysisEngine;
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.FSIterator;
 import org.apache.uima.cas.Type;
@@ -41,8 +37,6 @@
 import org.apache.uima.fit.factory.TypeSystemDescriptionFactory;
 import org.apache.uima.jcas.JCas;
 import org.apache.uima.jcas.tcas.Annotation;
-import org.apache.uima.resource.ResourceConfigurationException;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.resource.metadata.FsIndexCollection;
 import org.apache.uima.resource.metadata.TypePriorities;
 import org.apache.uima.resource.metadata.TypeSystemDescription;
@@ -52,7 +46,6 @@
 import org.apache.uima.ruta.type.FalsePositive;
 import org.apache.uima.ruta.type.TruePositive;
 import org.apache.uima.util.CasCreationUtils;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Test;
 
 public class UimafitTest {
@@ -60,8 +53,8 @@
   @Test
   public void test() throws Exception {
     AnalysisEngine ae = createEngine(RutaEngine.class,
-    // Load script in "Java" notation, with "." as package separator and no extension.
-    // File needs to be located in the path specified below with ending ".ruta".
+            // Load script in "Java" notation, with "." as package separator and no extension.
+            // File needs to be located in the path specified below with ending ".ruta".
             RutaEngine.PARAM_MAIN_SCRIPT, "org.apache.uima.ruta.engine.UimafitTest",
             // Path(s) where the scripts are located
             RutaEngine.PARAM_SCRIPT_PATHS, new String[] { "src/test/resources" });
@@ -93,9 +86,7 @@
   }
 
   @Test
-  public void testUimafitWithoutXmlTypeSystem() throws ResourceInitializationException,
-          AnalysisEngineProcessException, InvalidXMLException, ResourceConfigurationException,
-          IOException, URISyntaxException, RecognitionException {
+  public void testUimafitWithoutXmlTypeSystem() throws Exception {
     String script = "DECLARE MyType;\n W{-> MyType};";
 
     RutaDescriptorFactory factory = new RutaDescriptorFactory();
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/engine/ViewWriterTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/engine/ViewWriterTest.java
index 2028d59..2c6ccf9 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/engine/ViewWriterTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/engine/ViewWriterTest.java
@@ -23,28 +23,21 @@
 
 import java.io.File;
 import java.io.FileInputStream;
-import java.io.IOException;
-import java.net.URISyntaxException;
 import java.net.URL;
 
 import org.apache.uima.UIMAFramework;
 import org.apache.uima.analysis_engine.AnalysisEngine;
 import org.apache.uima.analysis_engine.AnalysisEngineDescription;
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.Type;
 import org.apache.uima.cas.impl.XmiCasDeserializer;
 import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.cas.text.AnnotationIndex;
-import org.apache.uima.resource.ResourceConfigurationException;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.resource.ResourceSpecifier;
 import org.apache.uima.resource.metadata.TypeSystemDescription;
 import org.apache.uima.util.FileUtils;
-import org.apache.uima.util.InvalidXMLException;
 import org.apache.uima.util.XMLInputSource;
 import org.junit.Test;
-import org.xml.sax.SAXException;
 
 public class ViewWriterTest {
 
@@ -53,13 +46,11 @@
   private static final String NEW_VIEW = "newView";
 
   @Test
-  public void test() throws IOException, URISyntaxException, InvalidXMLException,
-          ResourceInitializationException, ResourceConfigurationException,
-          AnalysisEngineProcessException, SAXException {
+  public void test() throws Exception {
     URL url = RutaEngine.class.getClassLoader().getResource("ViewWriter.xml");
     if (url == null) {
-      url = RutaTestUtils.class.getClassLoader().getResource(
-              "org/apache/uima/ruta/engine/ViewWriter.xml");
+      url = RutaTestUtils.class.getClassLoader()
+              .getResource("org/apache/uima/ruta/engine/ViewWriter.xml");
     }
     File tempFile = File.createTempFile("ViewWriterTest", ".xmi");
     XMLInputSource in = new XMLInputSource(url);
@@ -104,9 +95,7 @@
   }
 
   @Test
-  public void testInRuta() throws IOException, URISyntaxException, InvalidXMLException,
-          ResourceInitializationException, ResourceConfigurationException,
-          AnalysisEngineProcessException, SAXException {
+  public void testInRuta() throws Exception {
     File xmiOutputFile = File.createTempFile("ViewWriterTest", ".xmi");
     File scriptFile = File.createTempFile("ViewWriterTest", ".ruta");
     StringBuilder scriptSB = new StringBuilder();
@@ -119,12 +108,13 @@
     FileUtils.saveString2File(scriptSB.toString(), scriptFile, "UTF-8");
     URL url = RutaEngine.class.getClassLoader().getResource("BasicEngine.xml");
     if (url == null) {
-      url = RutaTestUtils.class.getClassLoader().getResource("org/apache/uima/ruta/engine/BasicEngine.xml");
+      url = RutaTestUtils.class.getClassLoader()
+              .getResource("org/apache/uima/ruta/engine/BasicEngine.xml");
     }
     URL urlDesc = RutaEngine.class.getClassLoader().getResource("ViewWriter.xml");
     if (urlDesc == null) {
-      urlDesc = RutaTestUtils.class.getClassLoader().getResource(
-              "org/apache/uima/ruta/engine/ViewWriter.xml");
+      urlDesc = RutaTestUtils.class.getClassLoader()
+              .getResource("org/apache/uima/ruta/engine/ViewWriter.xml");
     }
     File descFile = new File(urlDesc.toURI());
 
@@ -137,12 +127,12 @@
     AnalysisEngine ae = UIMAFramework.produceAnalysisEngine(specifier);
     String module = scriptFile.getName().substring(0, scriptFile.getName().length() - 5);
     ae.setConfigParameterValue(RutaEngine.PARAM_MAIN_SCRIPT, module);
-    ae.setConfigParameterValue(RutaEngine.PARAM_SCRIPT_PATHS, new String[] { scriptFile.getParentFile()
-            .getAbsolutePath() });
+    ae.setConfigParameterValue(RutaEngine.PARAM_SCRIPT_PATHS,
+            new String[] { scriptFile.getParentFile().getAbsolutePath() });
     String aeName = descFile.getName().substring(0, descFile.getName().length() - 4);
     ae.setConfigParameterValue(RutaEngine.PARAM_ADDITIONAL_ENGINES, new String[] { aeName });
-    ae.setConfigParameterValue(RutaEngine.PARAM_DESCRIPTOR_PATHS, new String[] { descFile.getParentFile()
-            .getAbsolutePath() });
+    ae.setConfigParameterValue(RutaEngine.PARAM_DESCRIPTOR_PATHS,
+            new String[] { descFile.getParentFile().getAbsolutePath() });
     ae.reconfigure();
 
     CAS cas = ae.newCAS();
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/expression/annotation/AnnotationLabelExpressionTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/expression/annotation/AnnotationLabelExpressionTest.java
index 16ef307..c5c864f 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/expression/annotation/AnnotationLabelExpressionTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/expression/annotation/AnnotationLabelExpressionTest.java
@@ -19,7 +19,6 @@
 
 package org.apache.uima.ruta.expression.annotation;
 
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -30,7 +29,6 @@
 
 import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
-import org.apache.uima.cas.CASException;
 import org.apache.uima.cas.FSIterator;
 import org.apache.uima.cas.Feature;
 import org.apache.uima.cas.FeatureStructure;
@@ -40,15 +38,12 @@
 import org.apache.uima.fit.util.CasUtil;
 import org.apache.uima.jcas.cas.FSArray;
 import org.apache.uima.jcas.tcas.Annotation;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.ruta.engine.Ruta;
 import org.apache.uima.ruta.engine.RutaTestUtils;
 import org.apache.uima.ruta.engine.RutaTestUtils.TestFeature;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Assert;
 import org.junit.Ignore;
 import org.junit.Test;
-import org.xml.sax.SAXException;
 
 public class AnnotationLabelExpressionTest {
 
@@ -315,17 +310,14 @@
   }
 
   @Test(expected = AnalysisEngineProcessException.class)
-  public void testWrongFeature() throws ResourceInitializationException, InvalidXMLException,
-          IOException, AnalysisEngineProcessException, CASException, SAXException {
+  public void testWrongFeature() throws Exception {
 
     CAS cas = RutaTestUtils.getCAS("Some text.");
     Ruta.matches(cas.getJCas(), "a:W b:W{a.x == (b.y-1)-> T1};");
   }
 
   @Test
-  public void testSequentialLabelSelfMatch()
-          throws ResourceInitializationException, InvalidXMLException, IOException,
-          AnalysisEngineProcessException, CASException, SAXException {
+  public void testSequentialLabelSelfMatch() throws Exception {
 
     CAS cas = RutaTestUtils.getCAS("Some text.");
     Assert.assertFalse(Ruta.matches(cas.getJCas(), "e:CW e;"));
@@ -657,8 +649,6 @@
     CAS cas = RutaTestUtils.getCAS(document, typeMap, featureMap);
     Ruta.apply(cas, script);
 
-    RutaTestUtils.storeCas(cas, "testStackedReinitLazyFeature");
-
     RutaTestUtils.assertAnnotationsEquals(cas, 1, 1, "Some");
     RutaTestUtils.assertAnnotationsEquals(cas, 2, 1, "Some");
     RutaTestUtils.assertAnnotationsEquals(cas, 3, 1, "Some");
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/expression/annotation/AnnotationVariableExpressionTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/expression/annotation/AnnotationVariableExpressionTest.java
index 3f08c27..d1fcf81 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/expression/annotation/AnnotationVariableExpressionTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/expression/annotation/AnnotationVariableExpressionTest.java
@@ -22,8 +22,6 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
-import java.io.IOException;
-import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -31,7 +29,6 @@
 
 import org.apache.uima.analysis_engine.AnalysisEngine;
 import org.apache.uima.analysis_engine.AnalysisEngineDescription;
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.FSIterator;
 import org.apache.uima.cas.Feature;
@@ -40,22 +37,16 @@
 import org.apache.uima.cas.text.AnnotationIndex;
 import org.apache.uima.fit.factory.AnalysisEngineFactory;
 import org.apache.uima.jcas.cas.FSArray;
-import org.apache.uima.resource.ResourceConfigurationException;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.ruta.engine.Ruta;
 import org.apache.uima.ruta.engine.RutaEngine;
 import org.apache.uima.ruta.engine.RutaTestUtils;
 import org.apache.uima.ruta.engine.RutaTestUtils.TestFeature;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Test;
-import org.xml.sax.SAXException;
 
 public class AnnotationVariableExpressionTest {
 
   @Test
-  public void test() throws ResourceInitializationException, InvalidXMLException, IOException,
-          AnalysisEngineProcessException, ResourceConfigurationException, URISyntaxException,
-          SAXException {
+  public void test() throws Exception {
     String document = "Some text.";
     String script = "ANNOTATION a;";
     script += "CW{-> ASSIGN(a, CW)};";
@@ -96,9 +87,7 @@
   }
 
   @Test
-  public void testImplicitAssignment() throws ResourceInitializationException, InvalidXMLException,
-          IOException, AnalysisEngineProcessException, ResourceConfigurationException,
-          URISyntaxException, SAXException {
+  public void testImplicitAssignment() throws Exception {
     String document = "Some text.";
     String script = "ANNOTATION a;";
     script += "CW{-> a = CW};";
@@ -139,9 +128,7 @@
   }
 
   @Test
-  public void testListImplicitAssignment() throws ResourceInitializationException,
-          InvalidXMLException, IOException, AnalysisEngineProcessException,
-          ResourceConfigurationException, URISyntaxException, SAXException {
+  public void testListImplicitAssignment() throws Exception {
     String document = "Some text.";
     String script = "ANNOTATIONLIST as;";
     script += "Document{-> as = W};";
@@ -182,9 +169,7 @@
   }
 
   @Test
-  public void testList() throws ResourceInitializationException, InvalidXMLException, IOException,
-          AnalysisEngineProcessException, ResourceConfigurationException, URISyntaxException,
-          SAXException {
+  public void testList() throws Exception {
     String document = "Some text.";
     String script = "ANNOTATIONLIST as;";
     script += "Document{-> ASSIGN(as, W)};";
@@ -225,9 +210,7 @@
   }
 
   @Test
-  public void testResetVariableBetweenCases() throws ResourceInitializationException,
-          InvalidXMLException, IOException, AnalysisEngineProcessException,
-          ResourceConfigurationException, URISyntaxException, SAXException {
+  public void testResetVariableBetweenCases() throws Exception {
 
     String document = "Some text.";
     String script = "ANNOTATIONLIST as;\n";
@@ -266,9 +249,7 @@
   }
 
   @Test
-  public void testNullValueWithFeatureMatch() throws ResourceInitializationException,
-          InvalidXMLException, IOException, AnalysisEngineProcessException,
-          ResourceConfigurationException, URISyntaxException, SAXException {
+  public void testNullValueWithFeatureMatch() throws Exception {
 
     String document = "Some text.";
     String script = "";
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/expression/string/StringFeatureTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/expression/string/StringFeatureTest.java
new file mode 100644
index 0000000..9b5fb97
--- /dev/null
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/expression/string/StringFeatureTest.java
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.uima.ruta.expression.string;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.apache.uima.cas.CAS;
+import org.apache.uima.ruta.engine.Ruta;
+import org.apache.uima.ruta.engine.RutaTestUtils;
+import org.apache.uima.ruta.engine.RutaTestUtils.TestFeature;
+import org.junit.Test;
+
+public class StringFeatureTest {
+
+  @Test
+  public void testValidValue() throws Exception {
+
+    String document = "Any - 0 test.";
+
+    String script = "DOUBLE d = 5; BOOLEAN b = true; TYPE t = org.apache.uima.ruta.type.TruePositive;INT i = 4;\n";
+    script += "CW{-> CREATE(Struct, \"s\" = d)};";
+    script += "SPECIAL{-> CREATE(Struct, \"s\" = b)};";
+    script += "NUM{-> CREATE(Struct, \"s\" = t)};";
+    script += "SW{-> Struct};";
+    script += "s:Struct{PARTOF(SW)-> s.s = i};";
+
+    script += "Struct.s==\"5.0\"{-> T1};";
+    script += "Struct.s==\"true\"{-> T2};";
+    script += "Struct.s==\"org.apache.uima.ruta.type.TruePositive\"{-> T3};";
+    script += "Struct.s==\"4\"{-> T4};";
+
+    Map<String, String> typeMap = new TreeMap<String, String>();
+    String typeName = "Struct";
+    typeMap.put(typeName, "uima.tcas.Annotation");
+
+    Map<String, List<TestFeature>> featureMap = new TreeMap<String, List<TestFeature>>();
+    List<TestFeature> list = new ArrayList<RutaTestUtils.TestFeature>();
+    featureMap.put(typeName, list);
+    String fn = "s";
+    list.add(new TestFeature(fn, "", "uima.cas.String"));
+
+    CAS cas = RutaTestUtils.getCAS(document, typeMap, featureMap);
+    Ruta.apply(cas, script);
+
+    RutaTestUtils.assertAnnotationsEquals(cas, 1, 1, "Any");
+    RutaTestUtils.assertAnnotationsEquals(cas, 2, 1, "-");
+    RutaTestUtils.assertAnnotationsEquals(cas, 3, 1, "0");
+    RutaTestUtils.assertAnnotationsEquals(cas, 4, 1, "test");
+
+  }
+
+}
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/expression/string/StringSubtypeAllowedValuesTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/expression/string/StringSubtypeAllowedValuesTest.java
index 4919016..eec5e6f 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/expression/string/StringSubtypeAllowedValuesTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/expression/string/StringSubtypeAllowedValuesTest.java
@@ -18,18 +18,14 @@
  */
 package org.apache.uima.ruta.expression.string;
 
-import java.io.IOException;
-import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.Collection;
 
 import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
-import org.apache.uima.cas.CASException;
 import org.apache.uima.fit.factory.TypeSystemDescriptionFactory;
 import org.apache.uima.fit.util.JCasUtil;
 import org.apache.uima.jcas.JCas;
-import org.apache.uima.resource.ResourceConfigurationException;
 import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.resource.metadata.AllowedValue;
 import org.apache.uima.resource.metadata.FsIndexDescription;
@@ -42,16 +38,13 @@
 import org.apache.uima.ruta.type.FalsePositive;
 import org.apache.uima.ruta.type.TruePositive;
 import org.apache.uima.util.CasCreationUtils;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Assert;
 import org.junit.Test;
 
 public class StringSubtypeAllowedValuesTest {
 
   @Test
-  public void testValidValue() throws ResourceInitializationException,
-          AnalysisEngineProcessException, InvalidXMLException, ResourceConfigurationException,
-          IOException, URISyntaxException, CASException {
+  public void testValidValue() throws Exception {
     CAS cas = createCAS();
 
     String script = "Document{-> CREATE(Test, \"allowed\" = \"A\")};";
@@ -74,9 +67,7 @@
   }
 
   @Test(expected = AnalysisEngineProcessException.class)
-  public void testInvalidValue() throws ResourceInitializationException,
-          AnalysisEngineProcessException, InvalidXMLException, ResourceConfigurationException,
-          IOException, URISyntaxException, CASException {
+  public void testInvalidValue() throws Exception {
 
     CAS cas = createCAS();
 
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/rule/InlinedRulesTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/rule/InlinedRulesTest.java
index 29ee5c1..34a1038 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/rule/InlinedRulesTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/rule/InlinedRulesTest.java
@@ -19,13 +19,9 @@
 
 package org.apache.uima.ruta.rule;
 
-import java.io.IOException;
-
 import org.apache.uima.cas.CAS;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.ruta.engine.Ruta;
 import org.apache.uima.ruta.engine.RutaTestUtils;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Test;
 
 public class InlinedRulesTest {
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/rule/RutaAnnotationTypeMatcherTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/rule/RutaAnnotationTypeMatcherTest.java
index 8d243e7..1fa0db6 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/rule/RutaAnnotationTypeMatcherTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/rule/RutaAnnotationTypeMatcherTest.java
@@ -18,23 +18,16 @@
  */
 package org.apache.uima.ruta.rule;
 
-import java.io.IOException;
-import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
 
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
-import org.apache.uima.resource.ResourceConfigurationException;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.ruta.engine.Ruta;
 import org.apache.uima.ruta.engine.RutaTestUtils;
 import org.apache.uima.ruta.engine.RutaTestUtils.TestFeature;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Test;
-import org.xml.sax.SAXException;
 
 public class RutaAnnotationTypeMatcherTest {
 
@@ -112,9 +105,7 @@
 
   }
 
-  private CAS apply(String document, String script) throws ResourceInitializationException,
-          IOException, InvalidXMLException, ResourceConfigurationException,
-          AnalysisEngineProcessException, URISyntaxException, SAXException {
+  private CAS apply(String document, String script) throws Exception {
     Map<String, String> complexTypes = new TreeMap<String, String>();
     complexTypes.put("Struct1", "uima.tcas.Annotation");
     complexTypes.put("Struct2", "uima.tcas.Annotation");
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/rule/SidestepInComposedTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/rule/SidestepInComposedTest.java
index 211f65a..ef8f862 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/rule/SidestepInComposedTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/rule/SidestepInComposedTest.java
@@ -19,25 +19,15 @@
 
 package org.apache.uima.ruta.rule;
 
-import java.io.IOException;
-import java.net.URISyntaxException;
-
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
-import org.apache.uima.resource.ResourceConfigurationException;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.ruta.engine.Ruta;
 import org.apache.uima.ruta.engine.RutaTestUtils;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Test;
-import org.xml.sax.SAXException;
 
 public class SidestepInComposedTest {
 
   @Test
-  public void test() throws ResourceInitializationException, InvalidXMLException, IOException,
-          AnalysisEngineProcessException, ResourceConfigurationException, URISyntaxException,
-          SAXException {
+  public void test() throws Exception {
     String document = "15. Mai 2005";
     String script = "\"Mai\" -> T1;";
     script += "NUM{->T2} PERIOD @T1 NUM;\n";
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/rule/WildCard2Test.java b/ruta-core/src/test/java/org/apache/uima/ruta/rule/WildCard2Test.java
index b65ece6..28f4904 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/rule/WildCard2Test.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/rule/WildCard2Test.java
@@ -216,11 +216,9 @@
     script += "INT t;\n";
     script += "(T1 # NUM{PARSE(a), a<100} ANY{REGEXP(\"[/]\")} NUM{PARSE(t),t<200}){ -> T2};\n";
 
-    CAS cas = RutaTestUtils.getCAS(document, null, null, true);
+    CAS cas = RutaTestUtils.getCAS(document, null, null, false);
     Ruta.apply(cas, script);
 
-    RutaTestUtils.storeCas(cas, "testFailingConditionWithFailingNextRuleElement");
-
     RutaTestUtils.assertAnnotationsEquals(cas, 1, 1, "a");
     RutaTestUtils.assertAnnotationsEquals(cas, 2, 0);
   }
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/rule/quantifier/QuantifierTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/rule/quantifier/QuantifierTest.java
index e58f548..7205169 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/rule/quantifier/QuantifierTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/rule/quantifier/QuantifierTest.java
@@ -19,27 +19,19 @@
 
 package org.apache.uima.ruta.rule.quantifier;
 
-import java.io.IOException;
 import java.util.List;
 
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
-import org.apache.uima.cas.CASException;
 import org.apache.uima.jcas.JCas;
 import org.apache.uima.jcas.tcas.Annotation;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.ruta.engine.Ruta;
 import org.apache.uima.ruta.engine.RutaTestUtils;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Assert;
 import org.junit.Test;
-import org.xml.sax.SAXException;
 
 public class QuantifierTest {
 
   @Test
-  public void testRightToLeftMinMaxReluctantToLiteral()
-          throws CASException, ResourceInitializationException, InvalidXMLException, IOException,
-          AnalysisEngineProcessException, SAXException {
+  public void testRightToLeftMinMaxReluctantToLiteral() throws Exception {
 
     JCas jcas = RutaTestUtils.getCAS("a b c d e.").getJCas();
     Assert.assertEquals("a b c d e.",
@@ -56,9 +48,7 @@
   }
 
   @Test
-  public void testRightToLeftMinMaxGreedyToLiteral()
-          throws CASException, ResourceInitializationException, InvalidXMLException, IOException,
-          AnalysisEngineProcessException, SAXException {
+  public void testRightToLeftMinMaxGreedyToLiteral() throws Exception {
 
     JCas jcas = RutaTestUtils.getCAS("a b c d e.").getJCas();
     Assert.assertEquals("a b c d e.",
diff --git a/ruta-ep-addons/pom.xml b/ruta-ep-addons/pom.xml
index 593f55e..48cf7c1 100644
--- a/ruta-ep-addons/pom.xml
+++ b/ruta-ep-addons/pom.xml
@@ -192,7 +192,7 @@
               <instructions>
                 <Bundle-SymbolicName>org.apache.uima.ruta.addons;singleton:=true</Bundle-SymbolicName>
                 <Bundle-Activator>org.apache.uima.ruta.addons.RutaAddonsPlugin</Bundle-Activator>
-                <Bundle-RequiredExecutionEnvironment>JavaSE-1.7</Bundle-RequiredExecutionEnvironment>
+                <Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
                 <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
                 <_nouses>true</_nouses>
                 <Export-Package>
diff --git a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/ui/views/evalDataTable/TypeTableSorter.java b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/ui/views/evalDataTable/TypeTableSorter.java
index 64730b7..28353ec 100755
--- a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/ui/views/evalDataTable/TypeTableSorter.java
+++ b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/ui/views/evalDataTable/TypeTableSorter.java
@@ -23,7 +23,7 @@
 import org.eclipse.jface.viewers.ViewerSorter;
 
 public class TypeTableSorter extends ViewerSorter {
-  
+
   private static final int ASCENDING = 0;
 
   private static final int DESCENDING = 1;
@@ -32,13 +32,6 @@
 
   private int direction;
 
-  /**
-   * Does the sort. If it's a different column from the previous sort, do an
-   * ascending sort. If it's the same column as the last sort, toggle the sort
-   * direction.
-   * 
-   * @param column
-   */
   public void doSort(int column) {
     if (column == this.column) {
       // Same column as last sort; toggle the direction
@@ -50,19 +43,13 @@
     }
   }
 
-  /**
-   * Compares the object for sorting
-   */
   @Override
   public int compare(Viewer viewer, Object e1, Object e2) {
     int rc = 0;
     TypeEvalData td1 = (TypeEvalData) e1;
     TypeEvalData td2 = (TypeEvalData) e2;
-    
-    
 
-    
-    switch(column) {
+    switch (column) {
       case TypeEvalTableConst.COLUMN_TYPE_NAME:
         rc = td1.getTypeName().compareTo(td2.getTypeName());
         break;
@@ -76,50 +63,21 @@
         rc = td1.getFalseNegatives() - td2.getFalseNegatives();
         break;
       case TypeEvalTableConst.COLUMN_PRECISION:
-        rc = Double.compare(td1.getPrecision() , td2.getPrecision());
+        rc = Double.compare(td1.getPrecision(), td2.getPrecision());
         break;
       case TypeEvalTableConst.COLUMN_RECALL:
-        rc = Double.compare(td1.getRecall() , td2.getRecall());
+        rc = Double.compare(td1.getRecall(), td2.getRecall());
         break;
       case TypeEvalTableConst.COLUMN_F1:
-        rc = Double.compare(td1.getFOne() , td2.getFOne());;
+        rc = Double.compare(td1.getFOne(), td2.getFOne());
+        ;
         break;
     }
-    
+
     if (direction == DESCENDING)
       rc = -rc;
 
-    return rc;    
-    
-    
-//    int rc = 0;
-//    Player p1 = (Player) e1;
-//    Player p2 = (Player) e2;
-//
-//    // Determine which column and do the appropriate sort
-//    switch (column) {
-//    case PlayerConst.COLUMN_FIRST_NAME:
-//      rc = collator.compare(p1.getFirstName(), p2.getFirstName());
-//      break;
-//    case PlayerConst.COLUMN_LAST_NAME:
-//      rc = collator.compare(p1.getLastName(), p2.getLastName());
-//      break;
-//    case PlayerConst.COLUMN_POINTS:
-//      rc = p1.getPoints() > p2.getPoints() ? 1 : -1;
-//      break;
-//    case PlayerConst.COLUMN_REBOUNDS:
-//      rc = p1.getRebounds() > p2.getRebounds() ? 1 : -1;
-//      break;
-//    case PlayerConst.COLUMN_ASSISTS:
-//      rc = p1.getAssists() > p2.getAssists() ? 1 : -1;
-//      break;
-//    }
-//
-//    // If descending order, flip the direction
-//    if (direction == DESCENDING)
-//      rc = -rc;
-//
-//    return rc;
+    return rc;
   }
 
 }
diff --git a/ruta-ep-caseditor/pom.xml b/ruta-ep-caseditor/pom.xml
index 259d913..e04cf6a 100644
--- a/ruta-ep-caseditor/pom.xml
+++ b/ruta-ep-caseditor/pom.xml
@@ -154,7 +154,7 @@
               <instructions>
                 <Bundle-SymbolicName>org.apache.uima.ruta.caseditor;singleton:=true</Bundle-SymbolicName>
                 <Bundle-Activator>org.apache.uima.ruta.caseditor.RutaCasEditorPlugin</Bundle-Activator>
-                <Bundle-RequiredExecutionEnvironment>JavaSE-1.7</Bundle-RequiredExecutionEnvironment>
+                <Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
                 <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
                 <_nouses>true</_nouses>
                 <Export-Package>
diff --git a/ruta-ep-core-ext/pom.xml b/ruta-ep-core-ext/pom.xml
index 46ca67c..66a8cf1 100644
--- a/ruta-ep-core-ext/pom.xml
+++ b/ruta-ep-core-ext/pom.xml
@@ -136,7 +136,7 @@
                 <Import-Package>
                 </Import-Package>
                 <Bundle-SymbolicName>org.apache.uima.ruta.core.ext;singleton:=true</Bundle-SymbolicName>
-                <Bundle-RequiredExecutionEnvironment>JavaSE-1.7</Bundle-RequiredExecutionEnvironment>
+                <Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
                 <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
                 <Eclipse-ExtensibleAPI>true</Eclipse-ExtensibleAPI>
                 <Eclipse-BuddyPolicy>registered</Eclipse-BuddyPolicy>
diff --git a/ruta-ep-engine/pom.xml b/ruta-ep-engine/pom.xml
index 59e34d3..fa5ac14 100644
--- a/ruta-ep-engine/pom.xml
+++ b/ruta-ep-engine/pom.xml
@@ -228,7 +228,9 @@
                   org.apache.uima.ruta.descriptor,
                   org.apache.uima.ruta.engine,
                   org.apache.uima.ruta.expression,
+                  org.apache.uima.ruta.expression.annotation,
                   org.apache.uima.ruta.expression.bool,
+                  org.apache.uima.ruta.expression.feature,
                   org.apache.uima.ruta.expression.list,
                   org.apache.uima.ruta.expression.number,
                   org.apache.uima.ruta.expression.resource,
@@ -254,6 +256,7 @@
                   org.htmlparser,
                   org.htmlparser.*,
                   org.apache.commons.lang3.*,
+                  org.apache.commons.logging,
                   org.apache.commons.io.*,
                   org.apache.uima.fit.*,
                   org.apache.commons.math3.*,
@@ -309,7 +312,7 @@
                 <Embed-Dependency>*;scope=compile</Embed-Dependency>
                 <!-- <Embed-Transitive>true</Embed-Transitive> -->
                 <Bundle-SymbolicName>org.apache.uima.ruta.engine;singleton:=true</Bundle-SymbolicName>
-                <Bundle-RequiredExecutionEnvironment>JavaSE-1.7</Bundle-RequiredExecutionEnvironment>
+                <Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
                 <Eclipse-ExtensibleAPI>true</Eclipse-ExtensibleAPI>
                 <!-- <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy> -->
                 <Eclipse-BuddyPolicy>registered</Eclipse-BuddyPolicy>
diff --git a/ruta-ep-ide-ui/pom.xml b/ruta-ep-ide-ui/pom.xml
index 8240196..0e2b261 100644
--- a/ruta-ep-ide-ui/pom.xml
+++ b/ruta-ep-ide-ui/pom.xml
@@ -264,7 +264,7 @@
               <instructions>
                 <Bundle-SymbolicName>org.apache.uima.ruta.ide.ui;singleton:=true</Bundle-SymbolicName>
                 <Bundle-Activator>org.apache.uima.ruta.ide.RutaIdeUIPlugin</Bundle-Activator>
-                <Bundle-RequiredExecutionEnvironment>JavaSE-1.7</Bundle-RequiredExecutionEnvironment>
+                <Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
                 <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
                 <_nouses>true</_nouses>
                 <Export-Package>
diff --git a/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/debug/ui/launchConfiguration/RutaCommonTab.java b/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/debug/ui/launchConfiguration/RutaCommonTab.java
index 1b5407d..3a271be 100644
--- a/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/debug/ui/launchConfiguration/RutaCommonTab.java
+++ b/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/debug/ui/launchConfiguration/RutaCommonTab.java
@@ -106,7 +106,7 @@
  */
 public class RutaCommonTab extends AbstractLaunchConfigurationTab {
 
-  /**
+  /*
    * Provides a persistable dialog for selecting the shared project location
    */
   class SharedLocationSelectionDialog extends ContainerSelectionDialog {
@@ -166,15 +166,16 @@
 
   private Button fNotUseDltkRatio;
 
-  /**
+  /*
    * Check box list for specifying favorites
    */
   private CheckboxTableViewer fFavoritesTable;
 
-  /**
+  /*
    * Modify listener that simply updates the owning launch configuration dialog.
    */
   private ModifyListener fBasicModifyListener = new ModifyListener() {
+    @Override
     public void modifyText(ModifyEvent evt) {
       updateLaunchConfigurationDialog();
     }
@@ -186,11 +187,12 @@
    * @see
    * org.eclipse.debug.ui.ILaunchConfigurationTab#createControl(org.eclipse.swt.widgets.Composite)
    */
+  @Override
   public void createControl(Composite parent) {
     Composite comp = new Composite(parent, SWT.NONE);
     setControl(comp);
-    PlatformUI.getWorkbench().getHelpSystem()
-            .setHelp(getControl(), IDebugHelpContextIds.LAUNCH_CONFIGURATION_DIALOG_COMMON_TAB);
+    PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(),
+            IDebugHelpContextIds.LAUNCH_CONFIGURATION_DIALOG_COMMON_TAB);
     comp.setLayout(new GridLayout(2, true));
     comp.setFont(parent.getFont());
 
@@ -201,19 +203,12 @@
     createLaunchInBackgroundComponent(comp);
   }
 
-  /**
-   * Creates the favorites control
-   * 
-   * @param parent
-   *          the parent composite to add this one to
-   * 
-   */
   private void createFavoritesComponent(Composite parent) {
     Group favComp = SWTUtil.createGroup(parent,
             LaunchConfigurationsMessages.CommonTab_Display_in_favorites_menu__10, 1, 1,
             GridData.FILL_BOTH);
-    fFavoritesTable = CheckboxTableViewer.newCheckList(favComp, SWT.CHECK | SWT.BORDER | SWT.MULTI
-            | SWT.FULL_SELECTION);
+    fFavoritesTable = CheckboxTableViewer.newCheckList(favComp,
+            SWT.CHECK | SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);
     Control table = fFavoritesTable.getControl();
     GridData gd = new GridData(GridData.FILL_BOTH);
     table.setLayoutData(gd);
@@ -221,19 +216,13 @@
     fFavoritesTable.setContentProvider(new FavoritesContentProvider());
     fFavoritesTable.setLabelProvider(new FavoritesLabelProvider());
     fFavoritesTable.addCheckStateListener(new ICheckStateListener() {
+      @Override
       public void checkStateChanged(CheckStateChangedEvent event) {
         updateLaunchConfigurationDialog();
       }
     });
   }
 
-  /**
-   * Creates the shared config component
-   * 
-   * @param parent
-   *          the parent composite to add this component to
-   * 
-   */
   private void createSharedConfigComponent(Composite parent) {
     Group group = SWTUtil.createGroup(parent, LaunchConfigurationsMessages.CommonTab_0, 3, 2,
             GridData.FILL_HORIZONTAL);
@@ -263,17 +252,6 @@
     setSharedEnabled(false);
   }
 
-  /**
-   * Creates the component set for the capture output composite
-   * 
-   * @param data
-   *          .parent the parent to add this component to
-   */
-
-  private void test() {
-
-  }
-
   private void createOutputCaptureComponent(Composite parent) {
     Group group = SWTUtil.createGroup(parent, "Input and Output", 1, 2, GridData.FILL_HORIZONTAL);
 
@@ -354,6 +332,7 @@
     });
     fVariables = createPushButton(standardGroup, LaunchConfigurationsMessages.CommonTab_9, null);
     fVariables.addSelectionListener(new SelectionListener() {
+      @Override
       public void widgetSelected(SelectionEvent e) {
         StringVariableSelectionDialog dialog = new StringVariableSelectionDialog(getShell());
         dialog.open();
@@ -363,6 +342,7 @@
         }
       }
 
+      @Override
       public void widgetDefaultSelected(SelectionEvent e) {
       }
     });
@@ -378,13 +358,6 @@
     });
   }
 
-  /**
-   * Enables or disables the output capture widgets based on the the specified enablement
-   * 
-   * @param enable
-   *          if the output capture widgets should be enabled or not
-   * 
-   */
   private void enableOuputCaptureWidgets(boolean enable) {
     fFileText.setEnabled(enable);
     fFileBrowse.setEnabled(enable);
@@ -393,20 +366,14 @@
     fAppend.setEnabled(enable);
   }
 
-  /**
-   * Creates the encoding component
-   * 
-   * @param parent
-   *          the parent to add this composite to
-   */
   private void createEncodingComponent(Composite parent) {
     List allEncodings = IDEEncoding.getIDEEncodings();
     String defaultEncoding = WorkbenchEncoding.getWorkbenchDefaultEncoding();
     Group group = SWTUtil.createGroup(parent, LaunchConfigurationsMessages.CommonTab_1, 2, 1,
             GridData.FILL_BOTH);
 
-    fDefaultEncodingButton = createRadioButton(group, MessageFormat.format(
-            LaunchConfigurationsMessages.CommonTab_2, new String[] { defaultEncoding }));
+    fDefaultEncodingButton = createRadioButton(group, MessageFormat
+            .format(LaunchConfigurationsMessages.CommonTab_2, new String[] { defaultEncoding }));
     GridData gd = new GridData(SWT.BEGINNING, SWT.NORMAL, true, false);
     gd.horizontalSpan = 2;
     fDefaultEncodingButton.setLayoutData(gd);
@@ -434,14 +401,9 @@
     fEncodingCombo.addSelectionListener(listener);
   }
 
-  /**
-   * Creates the controls needed to edit the launch in background attribute of an external tool
-   * 
-   * @param parent
-   *          the composite to create the controls in
-   */
   protected void createLaunchInBackgroundComponent(Composite parent) {
-    fLaunchInBackgroundButton = createCheckButton(parent, LaunchConfigurationsMessages.CommonTab_10);
+    fLaunchInBackgroundButton = createCheckButton(parent,
+            LaunchConfigurationsMessages.CommonTab_10);
     GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
     data.horizontalSpan = 2;
     fLaunchInBackgroundButton.setLayoutData(data);
@@ -454,20 +416,11 @@
     });
   }
 
-  /**
-   * handles the shared radio button being selected
-   */
   private void handleSharedRadioButtonSelected() {
     setSharedEnabled(isShared());
     updateLaunchConfigurationDialog();
   }
 
-  /**
-   * Sets the widgets for specifying that a launch configuration is to be shared to the enable value
-   * 
-   * @param enable
-   *          the enabled value for
-   */
   private void setSharedEnabled(boolean enable) {
     fSharedLocationText.setEnabled(enable);
     fSharedLocationButton.setEnabled(enable);
@@ -492,26 +445,15 @@
     return path;
   }
 
-  /**
-   * if the shared radio button is selected, indicating that the launch configuration is to be
-   * shared
-   * 
-   * @return true if the radio button is selected, false otherwise
-   */
   private boolean isShared() {
     return fSharedRadioButton.getSelection();
   }
 
-  /**
-   * Handles the shared location button being selected
-   */
   private void handleSharedLocationButtonSelected() {
     String currentContainerString = fSharedLocationText.getText();
     IContainer currentContainer = getContainer(currentContainerString);
-    SharedLocationSelectionDialog dialog = new SharedLocationSelectionDialog(
-            getShell(),
-            currentContainer,
-            false,
+    SharedLocationSelectionDialog dialog = new SharedLocationSelectionDialog(getShell(),
+            currentContainer, false,
             LaunchConfigurationsMessages.CommonTab_Select_a_location_for_the_launch_configuration_13);
     dialog.showClosedProjects(false);
     dialog.open();
@@ -523,13 +465,6 @@
     }
   }
 
-  /**
-   * gets the container form the specified path
-   * 
-   * @param path
-   *          the path to get the container from
-   * @return the container for the specified path or null if one cannot be determined
-   */
   private IContainer getContainer(String path) {
     Path containerPath = new Path(path);
     return (IContainer) getWorkspaceRoot().findMember(containerPath);
@@ -541,6 +476,7 @@
    * @seeorg.eclipse.debug.ui.ILaunchConfigurationTab#initializeFrom(org.eclipse.debug.core.
    * ILaunchConfiguration)
    */
+  @Override
   public void initializeFrom(ILaunchConfiguration configuration) {
     boolean isShared = !configuration.isLocal();
     fSharedRadioButton.setSelection(isShared);
@@ -564,12 +500,6 @@
     updateConsoleOutput(configuration);
   }
 
-  /**
-   * Updates the console output form the local configuration
-   * 
-   * @param configuration
-   *          the local configuration
-   */
   private void updateConsoleOutput(ILaunchConfiguration configuration) {
     boolean outputToConsole = true;
     String outputFile = null;
@@ -578,12 +508,12 @@
     boolean dltkOutput = false;
 
     try {
-      dltkOutput = configuration.getAttribute(
-              ScriptLaunchConfigurationConstants.ATTR_USE_INTERACTIVE_CONSOLE, false);
+      dltkOutput = configuration
+              .getAttribute(ScriptLaunchConfigurationConstants.ATTR_USE_INTERACTIVE_CONSOLE, false);
 
       outputToConsole = configuration.getAttribute(IDebugUIConstants.ATTR_CAPTURE_IN_CONSOLE, true);
-      outputFile = configuration
-              .getAttribute(IDebugUIConstants.ATTR_CAPTURE_IN_FILE, (String) null);
+      outputFile = configuration.getAttribute(IDebugUIConstants.ATTR_CAPTURE_IN_FILE,
+              (String) null);
       append = configuration.getAttribute(IDebugUIConstants.ATTR_APPEND_TO_FILE, false);
     } catch (CoreException e) {
     }
@@ -601,22 +531,10 @@
     enableOuputCaptureWidgets(haveOutputFile);
   }
 
-  /**
-   * Updates the launch on background check button
-   * 
-   * @param configuration
-   *          the local launch configuration
-   */
   protected void updateLaunchInBackground(ILaunchConfiguration configuration) {
     fLaunchInBackgroundButton.setSelection(isLaunchInBackground(configuration));
   }
 
-  /**
-   * Updates the encoding
-   * 
-   * @param configuration
-   *          the local configuration
-   */
   private void updateEncoding(ILaunchConfiguration configuration) {
     String encoding = null;
     try {
@@ -636,13 +554,6 @@
     }
   }
 
-  /**
-   * Returns whether the given configuration should be launched in the background.
-   * 
-   * @param configuration
-   *          the configuration
-   * @return whether the configuration is configured to launch in the background
-   */
   public static boolean isLaunchInBackground(ILaunchConfiguration configuration) {
     boolean launchInBackground = true;
     try {
@@ -654,12 +565,6 @@
     return launchInBackground;
   }
 
-  /**
-   * Updates the favorites selections from the local configuration
-   * 
-   * @param config
-   *          the local configuration
-   */
   private void updateFavoritesFromConfig(ILaunchConfiguration config) {
     fFavoritesTable.setInput(config);
     fFavoritesTable.setCheckedElements(new Object[] {});
@@ -689,12 +594,6 @@
     }
   }
 
-  /**
-   * Updates the configuration form the local shared config working copy
-   * 
-   * @param config
-   *          the local shared config working copy
-   */
   private void updateConfigFromLocalShared(ILaunchConfigurationWorkingCopy config) {
     if (isShared()) {
       String containerPathString = fSharedLocationText.getText();
@@ -705,20 +604,10 @@
     }
   }
 
-  /**
-   * Convenience accessor
-   */
   protected LaunchConfigurationManager getLaunchConfigurationManager() {
     return DebugUIPlugin.getDefault().getLaunchConfigurationManager();
   }
 
-  /**
-   * Update the favorite settings.
-   * 
-   * NOTE: set to <code>null</code> instead of <code>false</code> for backwards compatibility when
-   * comparing if content is equal, since 'false' is default and will be missing for older
-   * configurations.
-   */
   private void updateConfigFromFavorites(ILaunchConfigurationWorkingCopy config) {
     try {
       Object[] checked = fFavoritesTable.getCheckedElements();
@@ -729,14 +618,14 @@
         List groups = new ArrayList();
         int num = 0;
         if (debug) {
-          groups.add(getLaunchConfigurationManager().getLaunchGroup(
-                  IDebugUIConstants.ID_DEBUG_LAUNCH_GROUP));
+          groups.add(getLaunchConfigurationManager()
+                  .getLaunchGroup(IDebugUIConstants.ID_DEBUG_LAUNCH_GROUP));
           num++;
         }
         if (run) {
           num++;
-          groups.add(getLaunchConfigurationManager().getLaunchGroup(
-                  IDebugUIConstants.ID_DEBUG_LAUNCH_GROUP));
+          groups.add(getLaunchConfigurationManager()
+                  .getLaunchGroup(IDebugUIConstants.ID_DEBUG_LAUNCH_GROUP));
         }
         // see if there are any changes
         if (num == checked.length) {
@@ -768,9 +657,6 @@
     }
   }
 
-  /**
-   * Convenience method for getting the workspace root.
-   */
   private IWorkspaceRoot getWorkspaceRoot() {
     return ResourcesPlugin.getWorkspace().getRoot();
   }
@@ -778,9 +664,8 @@
   /*
    * (non-Javadoc)
    * 
-   * @see
-   * org.eclipse.debug.ui.ILaunchConfigurationTab#isValid(org.eclipse.debug.core.ILaunchConfiguration
-   * )
+   * @see org.eclipse.debug.ui.ILaunchConfigurationTab#isValid(org.eclipse.debug.core.
+   * ILaunchConfiguration )
    */
   @Override
   public boolean isValid(ILaunchConfiguration config) {
@@ -790,11 +675,6 @@
     return validateLocalShared() && validateRedirectFile() && validateEncoding();
   }
 
-  /**
-   * validates the encoding selection
-   * 
-   * @return true if the validate encoding is allowable, false otherwise
-   */
   private boolean validateEncoding() {
     if (fAltEncodingButton.getSelection()) {
       if (fEncodingCombo.getSelectionIndex() == -1) {
@@ -806,11 +686,6 @@
     return true;
   }
 
-  /**
-   * Validates if the redirect file is valid
-   * 
-   * @return true if the filename is not zero, false otherwise
-   */
   private boolean validateRedirectFile() {
     if (fFileOutput.getSelection()) {
       int len = fFileText.getText().trim().length();
@@ -822,20 +697,17 @@
     return true;
   }
 
-  /**
-   * validates the local shared config file location
-   * 
-   * @return true if the local shared file exists, false otherwise
-   */
   private boolean validateLocalShared() {
     if (isShared()) {
       String path = fSharedLocationText.getText().trim();
       IContainer container = getContainer(path);
       if (container == null || container.equals(ResourcesPlugin.getWorkspace().getRoot())) {
-        setErrorMessage(LaunchConfigurationsMessages.CommonTab_Invalid_shared_configuration_location_14);
+        setErrorMessage(
+                LaunchConfigurationsMessages.CommonTab_Invalid_shared_configuration_location_14);
         return false;
       } else if (!container.getProject().isOpen()) {
-        setErrorMessage(LaunchConfigurationsMessages.CommonTab_Cannot_save_launch_configuration_in_a_closed_project__1);
+        setErrorMessage(
+                LaunchConfigurationsMessages.CommonTab_Cannot_save_launch_configuration_in_a_closed_project__1);
         return false;
       }
     }
@@ -849,6 +721,7 @@
    * @seeorg.eclipse.debug.ui.ILaunchConfigurationTab#setDefaults(org.eclipse.debug.core.
    * ILaunchConfigurationWorkingCopy)
    */
+  @Override
   public void setDefaults(ILaunchConfigurationWorkingCopy config) {
     config.setContainer(null);
     config.setAttribute(IDebugUIConstants.ATTR_LAUNCH_IN_BACKGROUND, true);
@@ -860,6 +733,7 @@
    * @seeorg.eclipse.debug.ui.ILaunchConfigurationTab#performApply(org.eclipse.debug.core.
    * ILaunchConfigurationWorkingCopy)
    */
+  @Override
   public void performApply(ILaunchConfigurationWorkingCopy configuration) {
     updateConfigFromLocalShared(configuration);
     updateConfigFromFavorites(configuration);
@@ -901,8 +775,8 @@
               Long.toString(System.currentTimeMillis()));
       IFileHandle proxyFile;
       try {
-        IExecutionEnvironment exeEnv = (IExecutionEnvironment) EnvironmentManager
-                .getLocalEnvironment().getAdapter(IExecutionEnvironment.class);
+        IExecutionEnvironment exeEnv = EnvironmentManager.getLocalEnvironment()
+                .getAdapter(IExecutionEnvironment.class);
         proxyFile = RutaIdeUIPlugin.getDefault().getConsoleProxy(exeEnv);
         configuration.setAttribute("environmentId", proxyFile.getEnvironment().getId());
         configuration.setAttribute("proxy_path", proxyFile.toOSString());
@@ -931,6 +805,7 @@
    * 
    * @see org.eclipse.debug.ui.ILaunchConfigurationTab#getName()
    */
+  @Override
   public String getName() {
     return LaunchConfigurationsMessages.CommonTab__Common_15;
   }
@@ -975,19 +850,17 @@
   public void deactivated(ILaunchConfigurationWorkingCopy workingCopy) {
   }
 
-  /**
-   * Content provider for the favorites table
-   */
   class FavoritesContentProvider implements IStructuredContentProvider {
 
+    @Override
     public Object[] getElements(Object inputElement) {
       ILaunchGroup[] groups = DebugUITools.getLaunchGroups();
       List possibleGroups = new ArrayList();
       ILaunchConfiguration configuration = (ILaunchConfiguration) inputElement;
       for (int i = 0; i < groups.length; i++) {
         ILaunchGroup extension = groups[i];
-        LaunchHistory history = getLaunchConfigurationManager().getLaunchHistory(
-                extension.getIdentifier());
+        LaunchHistory history = getLaunchConfigurationManager()
+                .getLaunchHistory(extension.getIdentifier());
         if (history != null && history.accepts(configuration)) {
           possibleGroups.add(extension);
         }
@@ -995,22 +868,21 @@
       return possibleGroups.toArray();
     }
 
+    @Override
     public void dispose() {
     }
 
+    @Override
     public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
     }
 
   }
 
-  /**
-   * Provides the labels for the favorites table
-   * 
-   */
   class FavoritesLabelProvider implements ITableLabelProvider {
 
     private Map fImages = new HashMap();
 
+    @Override
     public Image getColumnImage(Object element, int columnIndex) {
       Image image = (Image) fImages.get(element);
       if (image == null) {
@@ -1023,14 +895,17 @@
       return image;
     }
 
+    @Override
     public String getColumnText(Object element, int columnIndex) {
       String label = ((LaunchGroupExtension) element).getLabel();
       return DebugUIPlugin.removeAccelerators(label);
     }
 
+    @Override
     public void addListener(ILabelProviderListener listener) {
     }
 
+    @Override
     public void dispose() {
       Iterator images = fImages.values().iterator();
       while (images.hasNext()) {
@@ -1039,10 +914,12 @@
       }
     }
 
+    @Override
     public boolean isLabelProperty(Object element, String property) {
       return false;
     }
 
+    @Override
     public void removeListener(ILabelProviderListener listener) {
     }
   }
diff --git a/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/formatter/preferences/RutaFormatterBlankLinesPage.java b/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/formatter/preferences/RutaFormatterBlankLinesPage.java
index 6e13118..2e7f2c2 100644
--- a/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/formatter/preferences/RutaFormatterBlankLinesPage.java
+++ b/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/formatter/preferences/RutaFormatterBlankLinesPage.java
@@ -33,9 +33,6 @@
 
 public class RutaFormatterBlankLinesPage extends FormatterModifyTabPage {
 
-  /**
-   * @param dialog
-   */
   public RutaFormatterBlankLinesPage(IFormatterModifyDialog dialog) {
     super(dialog);
   }
diff --git a/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/formatter/preferences/RutaFormatterIndentationTabPage.java b/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/formatter/preferences/RutaFormatterIndentationTabPage.java
index 72f358b..4672fee 100644
--- a/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/formatter/preferences/RutaFormatterIndentationTabPage.java
+++ b/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/formatter/preferences/RutaFormatterIndentationTabPage.java
@@ -41,9 +41,6 @@
 
 public class RutaFormatterIndentationTabPage extends FormatterModifyTabPage {
 
-  /**
-   * @param dialog
-   */
   public RutaFormatterIndentationTabPage(IFormatterModifyDialog dialog) {
     super(dialog);
   }
@@ -57,8 +54,8 @@
   private final String[] tabPolicyItems = new String[] { CodeFormatterConstants.SPACE,
       CodeFormatterConstants.TAB, CodeFormatterConstants.MIXED };
 
-  private class TabPolicyListener extends SelectionAdapter implements
-          IFormatterControlManager.IInitializeListener {
+  private class TabPolicyListener extends SelectionAdapter
+          implements IFormatterControlManager.IInitializeListener {
 
     private final IFormatterControlManager manager;
 
@@ -75,9 +72,10 @@
       }
     }
 
+    @Override
     public void initialize() {
-      final boolean tabMode = CodeFormatterConstants.TAB.equals(manager
-              .getString(RutaFormatterConstants.FORMATTER_TAB_CHAR));
+      final boolean tabMode = CodeFormatterConstants.TAB
+              .equals(manager.getString(RutaFormatterConstants.FORMATTER_TAB_CHAR));
       manager.enableControl(indentSize, !tabMode);
     }
 
@@ -101,6 +99,7 @@
     tabSize = manager.createNumber(tabPolicyGroup, RutaFormatterConstants.FORMATTER_TAB_SIZE,
             FormatterMessages.IndentationTabPage_general_group_option_tab_size);
     tabSize.addModifyListener(new ModifyListener() {
+      @Override
       public void modifyText(ModifyEvent e) {
         int index = tabPolicy.getSelectionIndex();
         if (index >= 0) {
diff --git a/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/formatter/preferences/RutaFormatterLineWrappingPage.java b/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/formatter/preferences/RutaFormatterLineWrappingPage.java
index 146e5b1..b9c28e1 100644
--- a/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/formatter/preferences/RutaFormatterLineWrappingPage.java
+++ b/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/formatter/preferences/RutaFormatterLineWrappingPage.java
@@ -33,9 +33,6 @@
 
 public class RutaFormatterLineWrappingPage extends FormatterModifyTabPage {
 
-  /**
-   * @param dialog
-   */
   public RutaFormatterLineWrappingPage(IFormatterModifyDialog dialog) {
     super(dialog);
   }
diff --git a/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/console/RutaFileHyperlink.java b/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/console/RutaFileHyperlink.java
index a537fa8..7e6f4b8 100644
--- a/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/console/RutaFileHyperlink.java
+++ b/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/console/RutaFileHyperlink.java
@@ -57,12 +57,15 @@
     fConsole = console;
   }
 
+  @Override
   public void linkEntered() {
   }
 
+  @Override
   public void linkExited() {
   }
 
+  @Override
   public void linkActivated() {
     try {
       String fileName;
@@ -104,8 +107,8 @@
       }
       // did not find source
       MessageDialog.openInformation(DLTKDebugUIPlugin.getActiveWorkbenchShell(),
-              ConsoleMessages.RutaFileHyperlink_Information_1, MessageFormat.format(
-                      ConsoleMessages.RutaFileHyperlink_Source_not_found_for__0__2,
+              ConsoleMessages.RutaFileHyperlink_Information_1,
+              MessageFormat.format(ConsoleMessages.RutaFileHyperlink_Source_not_found_for__0__2,
                       new String[] { fileName }));
     } catch (CoreException e) {
       DLTKDebugUIPlugin.errorDialog(
@@ -135,6 +138,8 @@
   /**
    * Returns the fully qualified name of the type to open
    * 
+   * @param linkText
+   *          contains the type name
    * @return fully qualified type name
    * @exception CoreException
    *              if unable to parse the type name
@@ -151,12 +156,6 @@
     throw new CoreException(status);
   }
 
-  /**
-   * Returns the line number associated with the stack trace or -1 if none.
-   * 
-   * @exception CoreException
-   *              if unable to parse the number
-   */
   protected int getLineNumber(String linkText) throws CoreException {
     Pattern p = Pattern.compile("line (\\d*)");
     Matcher m = p.matcher(linkText);
@@ -175,21 +174,10 @@
     throw new CoreException(status);
   }
 
-  /**
-   * Returns the console this link is contained in.
-   * 
-   * @return console
-   */
   protected TextConsole getConsole() {
     return fConsole;
   }
 
-  /**
-   * Returns this link's text
-   * 
-   * @exception CoreException
-   *              if unable to retrieve the text
-   */
   protected String getLinkText() throws CoreException {
     try {
       IDocument document = getConsole().getDocument();
diff --git a/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/documentation/IRutaPagesLocation.java b/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/documentation/IRutaPagesLocation.java
index f4074c1..b120c1f 100644
--- a/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/documentation/IRutaPagesLocation.java
+++ b/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/documentation/IRutaPagesLocation.java
@@ -23,12 +23,6 @@
 
 public interface IRutaPagesLocation {
 
-  /**
-   * Should find inside location for an information about keyword
-   * 
-   * @param keyword
-   * @return Reader with html code
-   */
-  public Reader getHtmlInfo(String keyword);
+  Reader getHtmlInfo(String keyword);
 
 }
diff --git a/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/documentation/RutaCommentReader.java b/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/documentation/RutaCommentReader.java
index 387e3a0..5115f73 100644
--- a/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/documentation/RutaCommentReader.java
+++ b/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/documentation/RutaCommentReader.java
@@ -42,9 +42,6 @@
     reset();
   }
 
-  /**
-   * @see java.io.Reader#read()
-   */
   @Override
   public int read() {
     if (fCurrPos < fEndPos) {
@@ -72,26 +69,17 @@
     return -1;
   }
 
-  /**
-   * @see java.io.Reader#close()
-   */
   @Override
   public void close() {
     fBuffer = null;
   }
 
-  /**
-   * @see java.io.Reader#reset()
-   */
   @Override
   public void reset() {
     fCurrPos = fStartPos;
     fWasNewLine = true;
   }
 
-  /**
-   * Returns the offset of the last read character in the passed buffer.
-   */
   public int getOffset() {
     return fCurrPos;
   }
diff --git a/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/documentation/RutaPagesLocationsBlock.java b/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/documentation/RutaPagesLocationsBlock.java
index d33ac78..2fd4d48 100644
--- a/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/documentation/RutaPagesLocationsBlock.java
+++ b/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/documentation/RutaPagesLocationsBlock.java
@@ -248,12 +248,6 @@
 
   }
 
-  /**
-   * Creates and returns the source lookup control.
-   * 
-   * @param parent
-   *          the parent widget of this control
-   */
   public Control createControl(Composite parent) {
     Font font = parent.getFont();
 
@@ -298,15 +292,6 @@
     return comp;
   }
 
-  /**
-   * Creates and returns a button
-   * 
-   * @param parent
-   *          parent widget
-   * @param label
-   *          label
-   * @return Button
-   */
   protected Button createPushButton(Composite parent, String label) {
     Button button = new Button(parent, SWT.PUSH);
     button.setFont(parent.getFont());
@@ -323,9 +308,6 @@
     button.setLayoutData(data);
   }
 
-  /**
-   * Create some empty space
-   */
   protected void createVerticalSpacer(Composite comp, int colSpan) {
     Label label = new Label(comp, SWT.NONE);
     GridData gd = new GridData();
@@ -333,9 +315,6 @@
     label.setLayoutData(gd);
   }
 
-  /**
-   * Updates buttons and status based on current mans
-   */
   public void update() {
     updateButtons();
 
@@ -431,9 +410,6 @@
   public void widgetDefaultSelected(SelectionEvent e) {
   }
 
-  /**
-   * Open the file selection dialog, and add the return locations.
-   */
   protected void add() {
     DirectoryDialog dialog = new DirectoryDialog(fLocationsViewer.getControl().getShell());
     dialog.setMessage("Select directory to search into");
@@ -544,9 +520,6 @@
     updateButtons();
   }
 
-  /**
-   * Refresh the enable/disable state for the buttons.
-   */
   private void updateButtons() {
     fClearButton.setEnabled(folders != null && folders.size() > 0);
     IStructuredSelection selection = (IStructuredSelection) fLocationsViewer.getSelection();
diff --git a/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/text/RutaWordRule.java b/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/text/RutaWordRule.java
index bbc343d..d08c4f2 100644
--- a/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/text/RutaWordRule.java
+++ b/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/text/RutaWordRule.java
@@ -66,6 +66,7 @@
    *          the default token to be returned on success if nothing else is specified, may not be
    *          <code>null</code>
    * @param classNameToken
+   *          - not in use
    * 
    * @see #addWord(String, IToken)
    */
@@ -111,6 +112,7 @@
 
   private String lastFound = "";
 
+  @Override
   public IToken evaluate(ICharacterScanner scanner) {
     int c = scanner.read();
     fBuffer.setLength(0);
@@ -167,10 +169,12 @@
       scanner.unread();
   }
 
+  @Override
   public IToken evaluate(ICharacterScanner scanner, boolean resume) {
     return evaluate(scanner);
   }
 
+  @Override
   public IToken getSuccessToken() {
     return this.fDefaultToken;
   }
diff --git a/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/text/folding/RutaFoldingPreferenceBlock.java b/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/text/folding/RutaFoldingPreferenceBlock.java
index bf36ad3..5232df9 100644
--- a/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/text/folding/RutaFoldingPreferenceBlock.java
+++ b/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/text/folding/RutaFoldingPreferenceBlock.java
@@ -48,8 +48,8 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 
-public class RutaFoldingPreferenceBlock extends AbstractConfigurationBlock implements
-        IFoldingPreferenceBlock {
+public class RutaFoldingPreferenceBlock extends AbstractConfigurationBlock
+        implements IFoldingPreferenceBlock {
 
   protected class ListBlock {
     private ListViewer fList;
@@ -90,11 +90,14 @@
       fAddButton = createPushButton(pathButtonComp,
               RutaFoldingMessages.RutaFoldingPreferenceBlock_0);
       fAddButton.addSelectionListener(new SelectionListener() {
+        @Override
         public void widgetDefaultSelected(SelectionEvent e) {
         }
 
+        @Override
         public void widgetSelected(SelectionEvent e) {
           IInputValidator validator = new IInputValidator() {
+            @Override
             public String isValid(String newText) {
               if (newText.trim().length() > 0 && newText.matches("[_a-zA-Z]*")) //$NON-NLS-1$
                 return null;
@@ -112,9 +115,11 @@
       fRemoveButton = createPushButton(pathButtonComp,
               RutaFoldingMessages.RutaFoldingPreferenceBlock_6);
       fRemoveButton.addSelectionListener(new SelectionListener() {
+        @Override
         public void widgetDefaultSelected(SelectionEvent e) {
         }
 
+        @Override
         public void widgetSelected(SelectionEvent e) {
           ISelection s = fList.getSelection();
           if (s instanceof IStructuredSelection) {
@@ -140,9 +145,6 @@
       return button;
     }
 
-    /**
-     * Returns a width hint for a button control.
-     */
     public int getButtonWidthHint(Button button) {
       button.setFont(JFaceResources.getDialogFont());
       PixelConverter converter = new PixelConverter(button);
@@ -199,7 +201,8 @@
 
   private OverlayKey[] fKeys;
 
-  public RutaFoldingPreferenceBlock(OverlayPreferenceStore store, PreferencePage mainPreferencePage) {
+  public RutaFoldingPreferenceBlock(OverlayPreferenceStore store,
+          PreferencePage mainPreferencePage) {
     super(store, mainPreferencePage);
     fOverlayStore = store;
     fKeys = createKeys();
@@ -232,6 +235,7 @@
     return keys;
   }
 
+  @Override
   public Control createControl(Composite composite) {
     Composite inner = new Composite(composite, SWT.NONE);
     GridLayout layout = new GridLayout();
@@ -258,6 +262,7 @@
 
     IInputValidator val = new IInputValidator() {
 
+      @Override
       public String isValid(String number) {
         if (number.length() == 0) {
           return PreferencesMessages.DLTKEditorPreferencePage_empty_input;
diff --git a/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/validator/RutaCheckerUtils.java b/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/validator/RutaCheckerUtils.java
index e5f4bf7..d2f4117 100644
--- a/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/validator/RutaCheckerUtils.java
+++ b/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/validator/RutaCheckerUtils.java
@@ -50,20 +50,9 @@
     return importScript(path, type, project, false);
   }
 
-  /**
-   * @param path
-   *          relative to script folder of the project.<br>
-   *          i.e.: "org.apache.uima.MyScript"
-   * @param type
-   *          i.e. IModelElement.FIELD for fields to be collected and returned
-   * @return set of elements
-   * @throws InvalidXMLException
-   * @throws IOException
-   * @throws ModelException
-   */
   public static Set<String> importScript(String path, int type, IScriptProject project,
-          boolean appendPath) throws InvalidXMLException, IOException, ModelException,
-          CoreException {
+          boolean appendPath)
+          throws InvalidXMLException, IOException, ModelException, CoreException {
     // TODO rewrite method!
     Stack<String> namespaceStack = new Stack<String>();
 
@@ -79,7 +68,7 @@
     ISourceModule sourceModule = null;
     boolean found = false;
     for (IFolder eachFolder : scriptFolders) {
-      if(found ) {
+      if (found) {
         break;
       }
       IScriptProject sp = DLTKCore.create(eachFolder.getProject());
@@ -97,7 +86,7 @@
     }
     IModelElement elements[] = null;
     namespaceStack.push(fileNameWithoutExtension);
-    if(sourceModule == null) {
+    if (sourceModule == null) {
       return imports;
     }
     try {
@@ -115,8 +104,8 @@
           }
         }
         if (elementType == IModelElement.METHOD) {
-          String nSpace = namespaceStack.empty() ? modelElement.getElementName() : namespaceStack
-                  .peek() + "." + modelElement.getElementName();
+          String nSpace = namespaceStack.empty() ? modelElement.getElementName()
+                  : namespaceStack.peek() + "." + modelElement.getElementName();
           namespaceStack.push(nSpace);
           imports.addAll(collectElements((IMethod) modelElement, type, namespaceStack));
           namespaceStack.pop();
@@ -166,11 +155,6 @@
     return folder.getFile(fName);
   }
 
-  /**
-   * @param xmlFilePath
-   *          absolute full path. i.e.: "org.apache.uima.myengine" ".xml" will be added.
-   * @return file.exists
-   */
   public static boolean checkEngineImport(String xmlFilePath, IScriptProject project) {
     boolean result = false;
     List<IFolder> allDescriptorFolders;
@@ -221,8 +205,6 @@
     return null;
   }
 
-
-
   public static IFile checkTypeSystemImport(String localPath, IScriptProject project) {
     List<IFolder> allDescriptorFolders;
     try {
@@ -249,7 +231,7 @@
     String prefix = "classpath*:";
     String pattern = prefix + p;
     Resource[] resources = resolver.getResources(pattern);
-    if(resources == null || resources.length == 0) {
+    if (resources == null || resources.length == 0) {
       return null;
     } else {
       Resource resource = resources[0];
@@ -258,6 +240,4 @@
     }
   }
 
-  
-
 }
diff --git a/ruta-ep-ide/pom.xml b/ruta-ep-ide/pom.xml
index effb40a..efa4107 100644
--- a/ruta-ep-ide/pom.xml
+++ b/ruta-ep-ide/pom.xml
@@ -194,7 +194,7 @@
               <instructions>
                 <Bundle-SymbolicName>org.apache.uima.ruta.ide;singleton:=true</Bundle-SymbolicName>
                 <Bundle-Activator>org.apache.uima.ruta.ide.RutaIdeCorePlugin</Bundle-Activator>
-                <Bundle-RequiredExecutionEnvironment>JavaSE-1.7</Bundle-RequiredExecutionEnvironment>
+                <Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
                 <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
                 <_nouses>true</_nouses>
                 <Export-Package>
diff --git a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/codeassist/RutaASTUtil.java b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/codeassist/RutaASTUtil.java
index ac60bab..ee207a6 100644
--- a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/codeassist/RutaASTUtil.java
+++ b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/codeassist/RutaASTUtil.java
@@ -75,8 +75,8 @@
     // return null;
   }
 
-  /**
-   * We need to extend all statements to end of lines or to begining of next statement. This is
+  /*
+   * We need to extend all statements to end of lines or to beginning of next statement. This is
    * needed to for correct completion in statements. Such as variable completion and so on.
    */
   public static void extendStatements(ASTNode node, String content) {
diff --git a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/packages/PackagesManager.java b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/packages/PackagesManager.java
index ceb6498..24a6f32 100644
--- a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/packages/PackagesManager.java
+++ b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/packages/PackagesManager.java
@@ -323,9 +323,6 @@
     return key;
   }
 
-  /**
-   * Return paths specific only for selected package.
-   */
   public synchronized IPath[] getPathsForPackage(IInterpreterInstall install, String packageName) {
     PackageKey key = makeKey(packageName, getInterpreterKey(install));
     if (this.packages.containsKey(key)) {
@@ -449,9 +446,6 @@
     save();
   }
 
-  /**
-   * Return all packages paths in one call.
-   */
   public synchronized IPath[] getPathsForPackages(IInterpreterInstall install,
           Set packagesInBuild) {
 
@@ -517,11 +511,6 @@
     return (IPath[]) result.toArray(new IPath[result.size()]);
   }
 
-  /**
-   * This method removes all information about specified interpreter.
-   * 
-   * @param install
-   */
   public synchronized void removeInterprterInfo(IInterpreterInstall install) {
     // Remove interpreter to packages set
     String interpreterPath = getInterpreterKey(install);
diff --git a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/packages/RutaCheckBuilder.java b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/packages/RutaCheckBuilder.java
index 9492b0e..0d36ff6 100644
--- a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/packages/RutaCheckBuilder.java
+++ b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/packages/RutaCheckBuilder.java
@@ -58,8 +58,8 @@
 import org.eclipse.dltk.launching.ScriptRuntime;
 import org.eclipse.osgi.util.NLS;
 
-public class RutaCheckBuilder implements IBuildParticipant, IBuildParticipantExtension,
-        IBuildParticipantExtension2 {
+public class RutaCheckBuilder
+        implements IBuildParticipant, IBuildParticipantExtension, IBuildParticipantExtension2 {
 
   private final IScriptProject project;
 
@@ -89,19 +89,13 @@
 
   }
 
-  /**
-   * @param project
-   * @throws CoreException
-   * @throws IllegalStateException
-   *           if associated interpreter could not be found
-   */
   public RutaCheckBuilder(IScriptProject project) throws CoreException, IllegalStateException {
     this.project = project;
     install = ScriptRuntime.getInterpreterInstall(project);
     if (install == null) {
       // thrown exception is caught in the RutaPackageCheckerType
-      throw new IllegalStateException(NLS.bind(Messages.RutaCheckBuilder_interpreterNotFound,
-              project.getElementName()));
+      throw new IllegalStateException(
+              NLS.bind(Messages.RutaCheckBuilder_interpreterNotFound, project.getElementName()));
     }
     knownPackageNames = manager.getPackageNames(install);
     buildpath = getBuildpath(project);
@@ -109,12 +103,13 @@
 
   private int buildType;
 
+  @Override
   public boolean beginBuild(int buildType) {
     this.buildType = buildType;
     if (buildType != FULL_BUILD) {
       // retrieve packages provided by this project
-      packageCollector.getPackagesProvided().addAll(
-              manager.getInternalPackageNames(install, project));
+      packageCollector.getPackagesProvided()
+              .addAll(manager.getInternalPackageNames(install, project));
     }
     loadProvidedPackagesFromRequiredProjects();
     return true;
@@ -135,13 +130,14 @@
         final IPath path = entry.getPath();
         final IProject project = workspaceRoot.getProject(path.lastSegment());
         if (project.exists()) {
-          packageCollector.getPackagesProvided().addAll(
-                  manager.getInternalPackageNames(install, project));
+          packageCollector.getPackagesProvided()
+                  .addAll(manager.getInternalPackageNames(install, project));
         }
       }
     }
   }
 
+  @Override
   public void buildExternalModule(IBuildContext context) throws CoreException {
     final ModuleDeclaration ast = (ModuleDeclaration) context
             .get(IBuildContext.ATTR_MODULE_DECLARATION);
@@ -151,6 +147,7 @@
     }
   }
 
+  @Override
   public void build(IBuildContext context) throws CoreException {
     ModuleDeclaration ast = (ModuleDeclaration) context.get(ModuleDeclaration.class.getName());
     if (ast == null) {
@@ -159,13 +156,13 @@
     packageCollector.getRequireDirectives().clear();
     packageCollector.process(ast);
     if (!packageCollector.getRequireDirectives().isEmpty()) {
-      resourceToModuleInfos.put(
-              context.getSourceModule(),
-              new ModuleInfo(context.getProblemReporter(), new ArrayList(packageCollector
-                      .getRequireDirectives())));
+      resourceToModuleInfos.put(context.getSourceModule(),
+              new ModuleInfo(context.getProblemReporter(),
+                      new ArrayList(packageCollector.getRequireDirectives())));
     }
   }
 
+  @Override
   public void endBuild(IProgressMonitor monitor) {
     if (buildType != RECONCILE_BUILD) {
       // Save packages provided by the project
@@ -310,6 +307,7 @@
     return false;
   }
 
+  @Override
   public void prepare(IBuildChange buildChange, IBuildState buildState) throws CoreException {
 
   }
diff --git a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/parser/RutaParseUtils.java b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/parser/RutaParseUtils.java
index 1eb522b..81d7739 100644
--- a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/parser/RutaParseUtils.java
+++ b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/parser/RutaParseUtils.java
@@ -166,12 +166,6 @@
     return null;
   }
 
-  /**
-   * @param token
-   * @return (start, end)
-   * @throws IllegalArgumentException
-   *           when token==null or !(token instanceof CommonToken)
-   */
   public static final int[] getBounds(Token token) throws IllegalArgumentException {
     if (token == null) {
       throw new IllegalArgumentException();
@@ -184,15 +178,6 @@
     return bounds;
   }
 
-  /**
-   * @param tokenA
-   *          startToken
-   * @param tokenB
-   *          endToken
-   * @return positions of a.start // b.end
-   * @throws IllegalArgumentException
-   *           when some token is null or not instanceof CommonToken
-   */
   public static final int[] getBounds(Token tokenA, Token tokenB) throws IllegalArgumentException {
     if (!((tokenA instanceof CommonToken) && (tokenB instanceof CommonToken || tokenB == null))) {
       throw new IllegalArgumentException();
@@ -208,10 +193,6 @@
     }
   }
 
-  /**
-   * @param member
-   * @return see {@link RutaTypeConstants}, -1 if not valid
-   */
   public static final int getTypeOfIModelElement(IMember member) {
     int type;
     try {
diff --git a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/AbstractFactory.java b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/AbstractFactory.java
index 171abd8..3909ae1 100644
--- a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/AbstractFactory.java
+++ b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/AbstractFactory.java
@@ -27,36 +27,15 @@
 
 public abstract class AbstractFactory {
 
-  /**
-   * @param token
-   * @return (start, end)
-   * @throws IllegalArgumentException
-   *           when token==null or !(token instanceof CommonToken)
-   */
   protected static final int[] getBounds(Token token) throws IllegalArgumentException {
     return RutaParseUtils.getBounds(token);
   }
 
-  /**
-   * @param tokenA
-   *          startToken
-   * @param tokenB
-   *          endToken
-   * @return positions of a.start // b.end
-   * @throws IllegalArgumentException
-   *           when some token is null or not instanceof CommonToken
-   */
   protected static final int[] getBounds(Token tokenA, Token tokenB)
           throws IllegalArgumentException {
     return RutaParseUtils.getBounds(tokenA, tokenB);
   }
 
-  /**
-   * 
-   * @param a
-   * @param b
-   * @return indexarray a.start // b.end
-   */
   protected static final int[] getBounds(Token a, ASTNode b) {
     int[] bounds = { 0, 0 };
     if (a == null && b == null) {
@@ -89,13 +68,6 @@
     return bounds;
   }
 
-  /**
-   * @param head
-   *          first element. determines bounds[0].
-   * @param astnodeListArray
-   *          in ascending elements order
-   * @return bounds of arguments
-   */
   @SuppressWarnings({ "rawtypes", "unchecked" })
   protected static final int[] getSurroundingBounds(ASTNode head, List... astnodeListArray) {
     int bounds[] = { Integer.MAX_VALUE, -1 };
@@ -135,12 +107,6 @@
     }
   }
 
-  /**
-   * Applies start/end positions of <code>Token token</code> to <code>Node node</code>
-   * 
-   * @param node
-   * @param token
-   */
   protected static final void setBounds(ASTNode node, Token token) {
     if (node == null || token == null) {
       return;
diff --git a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/ExpressionFactory.java b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/ExpressionFactory.java
index 8d7e1ef..a2720b5 100644
--- a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/ExpressionFactory.java
+++ b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/ExpressionFactory.java
@@ -36,12 +36,6 @@
 
 public class ExpressionFactory extends AbstractFactory implements ExpressionConstants {
 
-  /**
-   * @param ref
-   * @param kind
-   *          see {@link RutaExpressionConstants}
-   * @return instance of VariableReference
-   */
   private static VariableReference newVariableReference(Token ref, int kind) {
     int bounds[] = getBounds(ref);
     return new RutaVariableReference(bounds[0], bounds[1], ref.getText(), kind);
@@ -216,12 +210,6 @@
     return new FloatNumericLiteral(bounds[0], bounds[1], value);
   }
 
-  /**
-   * Creates (local) NumberVariableReference
-   * 
-   * @param numVarRef
-   * @return new VariableReference of Token
-   */
   public static VariableReference createNumberVariableReference(Token numVarRef) {
     return newVariableReference(numVarRef, RutaTypeConstants.RUTA_TYPE_N);
   }
diff --git a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaAction.java b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaAction.java
index 5230329..cf3fa37 100644
--- a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaAction.java
+++ b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaAction.java
@@ -47,12 +47,6 @@
 
   private String label;
 
-  /**
-   * @param start
-   * @param end
-   * @param exprs
-   * @param kind
-   */
   public RutaAction(int start, int end, List<ASTNode> exprs, int kind, String name, int nameStart,
           int nameEnd) {
     super(start, end);
@@ -67,11 +61,6 @@
     this.nameEnd = nameEnd;
   }
 
-  /**
-   * Copy-Constructor
-   * 
-   * @param source
-   */
   public RutaAction(RutaAction source) {
     super(source.sourceStart(), source.sourceEnd());
     this.exprs = source.exprs;
diff --git a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaCondition.java b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaCondition.java
index d1e5ade..e0f5973 100644
--- a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaCondition.java
+++ b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaCondition.java
@@ -38,12 +38,6 @@
 
   private String name;
 
-  /**
-   * @param start
-   * @param end
-   * @param exprs
-   * @param kind
-   */
   public RutaCondition(int start, int end, List<ASTNode> exprs, int kind, String name,
           int nameStart, int nameEnd) {
     super(start, end);
@@ -81,6 +75,7 @@
     return exprs;
   }
 
+  @Override
   public String toString() {
     return this.getClass().getSimpleName() + " : " + super.toString();
   }
diff --git a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaExpressionList.java b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaExpressionList.java
index 8024f4b..2afe818 100644
--- a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaExpressionList.java
+++ b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaExpressionList.java
@@ -32,11 +32,6 @@
 public class RutaExpressionList extends Expression {
   private List<? extends Expression> expressions;
 
-  /**
-   * Statement with bounds from first to last expression.
-   * 
-   * @param expressions
-   */
   public RutaExpressionList(List<? extends Expression> expressions) {
     if (!expressions.isEmpty()) {
       // First
@@ -53,13 +48,6 @@
     this.expressions = expressions;
   }
 
-  /**
-   * Statement with specified bounds and expression list.
-   * 
-   * @param start
-   * @param end
-   * @param expressions
-   */
   public RutaExpressionList(int start, int end, List<Expression> expressions) {
     super(start, end);
     if (expressions == null) {
@@ -111,7 +99,7 @@
       output.formatPrintLn("");
       Iterator<? extends Expression> i = this.expressions.iterator();
       while (i.hasNext()) {
-        ASTNode node = (ASTNode) i.next();
+        ASTNode node = i.next();
         node.printNode(output);
         output.formatPrintLn(" ");
       }
@@ -124,7 +112,7 @@
     if (this.expressions != null) {
       Iterator<? extends Expression> i = this.expressions.iterator();
       while (i.hasNext()) {
-        ASTNode node = (ASTNode) i.next();
+        ASTNode node = i.next();
         value += node.toString();
         value += " ";
       }
diff --git a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaFunction.java b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaFunction.java
index 8c87a8f..b3b727f 100644
--- a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaFunction.java
+++ b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaFunction.java
@@ -37,14 +37,8 @@
 
   private String name;
 
-  /**
-   * @param start
-   * @param end
-   * @param exprs
-   * @param kind
-   */
-  public RutaFunction(int start, int end, List<ASTNode> exprs, int kind, String name,
-          int nameStart, int nameEnd) {
+  public RutaFunction(int start, int end, List<ASTNode> exprs, int kind, String name, int nameStart,
+          int nameEnd) {
     super(start, end);
     if (exprs != null) {
       this.exprs = exprs;
@@ -57,11 +51,6 @@
     this.nameEnd = nameEnd;
   }
 
-  /**
-   * Copy-Constructor
-   * 
-   * @param source
-   */
   public RutaFunction(RutaFunction source) {
     super(source.sourceStart(), source.sourceEnd());
     this.exprs = source.exprs;
@@ -94,6 +83,7 @@
     return exprs;
   }
 
+  @Override
   public String toString() {
     return this.getClass().getSimpleName() + " : " + super.toString();
   }
diff --git a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaInnerListExpression.java b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaInnerListExpression.java
index 896b0c6..e347209 100644
--- a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaInnerListExpression.java
+++ b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaInnerListExpression.java
@@ -25,10 +25,6 @@
 public class RutaInnerListExpression extends Expression {
   private String innerList;
 
-  /**
-   * @param start
-   * @param end
-   */
   public RutaInnerListExpression(int start, int end, String inner) {
     super(start, end);
     this.innerList = inner == null ? "" : inner;
@@ -56,17 +52,10 @@
     return RutaExpressionConstants.E_INNERLIST;
   }
 
-  /**
-   * @param innerList
-   *          the innerList to set
-   */
   public void setInnerList(String innerList) {
     this.innerList = innerList;
   }
 
-  /**
-   * @return the innerList
-   */
   public String getInnerList() {
     return innerList;
   }
diff --git a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaStatement.java b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaStatement.java
index 3233d55..caec983 100644
--- a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaStatement.java
+++ b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaStatement.java
@@ -33,11 +33,6 @@
 public class RutaStatement extends Statement {
   private List<Expression> expressions;
 
-  /**
-   * Statement with bounds from first to last expression.
-   * 
-   * @param expressions
-   */
   public RutaStatement(List<Expression> expressions) {
     if (!expressions.isEmpty()) {
       // First
@@ -54,13 +49,6 @@
     this.expressions = expressions;
   }
 
-  /**
-   * Statement with specified bounds and expression list.
-   * 
-   * @param start
-   * @param end
-   * @param expressions
-   */
   public RutaStatement(int start, int end, List<Expression> expressions) {
     super(start, end);
     if (expressions == null) {
@@ -112,7 +100,7 @@
       output.formatPrintLn("");
       Iterator<Expression> i = this.expressions.iterator();
       while (i.hasNext()) {
-        ASTNode node = (ASTNode) i.next();
+        ASTNode node = i.next();
         node.printNode(output);
         output.formatPrintLn(" ");
       }
@@ -125,7 +113,7 @@
     if (this.expressions != null) {
       Iterator<Expression> i = this.expressions.iterator();
       while (i.hasNext()) {
-        ASTNode node = (ASTNode) i.next();
+        ASTNode node = i.next();
         value += node.toString();
         value += " ";
       }
diff --git a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaVariableReference.java b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaVariableReference.java
index 9009ba6..91c3b5e 100644
--- a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaVariableReference.java
+++ b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaVariableReference.java
@@ -24,13 +24,6 @@
 public class RutaVariableReference extends VariableReference {
   private int typeId;
 
-  /**
-   * @param start
-   * @param end
-   * @param name
-   * @param typedId
-   *          raw type id from {@link RutaTypeConstants}
-   */
   public RutaVariableReference(int start, int end, String name, int typedId) {
     super(start, end, name);
     this.typeId = typedId;
diff --git a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/ScriptFactory.java b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/ScriptFactory.java
index 0085548..83c0e22 100644
--- a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/ScriptFactory.java
+++ b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/ScriptFactory.java
@@ -28,8 +28,6 @@
 
 import org.antlr.runtime.Token;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.uima.ruta.ide.core.parser.RutaLexer;
-import org.apache.uima.ruta.parser.RutaParser;
 import org.eclipse.dltk.ast.ASTNode;
 import org.eclipse.dltk.ast.expressions.Expression;
 import org.eclipse.dltk.ast.statements.Block;
@@ -79,7 +77,7 @@
           Map<Expression, Map<Expression, Expression>> fa, Token s) {
     return createRegExpRule(exprs, fa, s, false);
   }
-  
+
   public RutaRule createRegExpRule(List<Expression> exprs,
           Map<Expression, Map<Expression, Expression>> fa, Token s, boolean updateCounter) {
     List<Expression> expressions = new ArrayList<Expression>();
@@ -97,7 +95,7 @@
       }
     }
     RutaRegExpRule rule = new RutaRegExpRule(expressions, fa, idCounter);
-    if(updateCounter) {
+    if (updateCounter) {
       idCounter++;
     }
     if (s != null) {
@@ -178,34 +176,12 @@
     return rutaRuleElement;
   }
 
-  /**
-   * Creates Root-Block.
-   * 
-   * @param declStart
-   * @param declEnd
-   * @param nameStart
-   * @param nameEnd
-   * @param string
-   * @param res
-   * @param block
-   * @param packageString
-   * @return new RutaScriptBlock
-   */
   public RutaScriptBlock createScriptBlock(int declStart, int declEnd, int nameStart, int nameEnd,
           String string, List<RutaRuleElement> res, Block block, String packageString) {
     createRule(new ArrayList<Expression>(), null);
     return new RutaScriptBlock(string, packageString, nameStart, nameEnd, declStart, declEnd);
   }
 
-  /**
-   * Creates Method-Blocks.<br>
-   * Please call finalizeScriptBlock afterwards.
-   * 
-   * @param id
-   * @param type
-   * @param rutaBlock
-   * @return RutaBlock
-   */
   public RutaBlock createScriptBlock(Token id, Token type, RutaBlock rutaBlock) {
     boolean forEach = false;
     if (type != null) {
@@ -235,14 +211,6 @@
     }
   }
 
-  /**
-   * Creates an AST element for an external block construct
-   * 
-   * @param type
-   * @param parent
-   *          block
-   * @return new external block construct
-   */
   public RutaBlock createExternalBlock(Token type, RutaBlock parent) {
     int[] bounds = getBounds(type);
     int[] nameBounds = getBounds(type);
@@ -269,9 +237,6 @@
     block.setEnd(rc != null ? getBounds(rc)[1] : rule.sourceEnd());
   }
 
-  /**
-   * @param body
-   */
   private void filterNullObjects(List<?> body) {
     if (body == null) {
       return;
diff --git a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/StatementFactory.java b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/StatementFactory.java
index cee8d45..cbb41bb 100644
--- a/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/StatementFactory.java
+++ b/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/StatementFactory.java
@@ -32,12 +32,7 @@
 import org.eclipse.dltk.ast.statements.Statement;
 
 public class StatementFactory extends AbstractFactory {
-  /**
-   * @param component
-   * @param impString - import string
-   * @param type - type of import
-   * @return new Import-Statement
-   */
+
   public static RutaImportStatement createImport(ComponentDeclaration component, Token impString,
           int type) {
     int bounds[] = getBounds(impString, component);
@@ -60,18 +55,19 @@
   public static Statement createImportType(Token importToken, Token type, ComponentDeclaration ts,
           Token alias) {
     int bounds[] = getBounds(importToken, type);
-    if(ts != null) {
+    if (ts != null) {
       bounds = getBounds(importToken, ts);
     }
-    if(alias != null) {
+    if (alias != null) {
       bounds = getBounds(importToken, alias);
     }
     return new RutaImportTypesStatement(bounds[0], bounds[1], ts, type, null, alias);
   }
 
-  public static Statement createImportAllPackagew(Token importToken, ComponentDeclaration ts, Token alias) {
+  public static Statement createImportAllPackagew(Token importToken, ComponentDeclaration ts,
+          Token alias) {
     int bounds[] = getBounds(importToken, ts);
-    if(alias != null) {
+    if (alias != null) {
       bounds = getBounds(importToken, alias);
     }
     return new RutaImportTypesStatement(bounds[0], bounds[1], ts, null, null, alias);
@@ -80,16 +76,15 @@
   public static Statement createImportPackage(Token importToken, Token pkg, ComponentDeclaration ts,
           Token alias) {
     int bounds[] = getBounds(importToken, pkg);
-    if(ts != null) {
+    if (ts != null) {
       bounds = getBounds(importToken, ts);
     }
-    if(alias != null) {
+    if (alias != null) {
       bounds = getBounds(importToken, alias);
     }
     return new RutaImportTypesStatement(bounds[0], bounds[1], ts, null, pkg, alias);
   }
-  
-  
+
   public static RutaImportStatement createImportScript(ComponentDeclaration dottedId,
           Token impString) {
     if (dottedId != null) {
@@ -112,29 +107,17 @@
     return createImport(dottedId, impString, kind);
   }
 
-  /**
-   * @param pString
-   *          Antlr-Token "PACKAGE"
-   * @param dottedId
-   *          Antlr-Token (dotted-identifier/id)
-   * @return new RutaPackageDeclaration
-   */
   public static RutaPackageDeclaration createPkgDeclaration(Token dottedId, Token pString) {
     int bounds[] = getBounds(pString, dottedId);
     int nameBounds[] = new int[2];
     if (dottedId != null) {
       nameBounds = getBounds(dottedId);
     }
-    SimpleReference ref = new SimpleReference(nameBounds[0], nameBounds[1], dottedId == null ? ""
-            : dottedId.getText());
+    SimpleReference ref = new SimpleReference(nameBounds[0], nameBounds[1],
+            dottedId == null ? "" : dottedId.getText());
     return new RutaPackageDeclaration(bounds[0], bounds[1], ref);
   }
 
-  /**
-   * @param id
-   * @param type
-   * @return new RutaVariableDeclaration
-   */
   private static RutaVariableDeclaration createVariable(Token id, Token typeToken, int type) {
     return createVariable(id, typeToken, type, null);
   }
@@ -150,86 +133,38 @@
             declBounds[1], ref, type, expr);
   }
 
-  /**
-   * @param id
-   * @param type
-   * @return new RutaVariableDeclaration
-   */
   public static RutaVariableDeclaration createIntVariable(Token id, Token type) {
     return createVariable(id, type, RutaTypeConstants.RUTA_TYPE_I);
   }
 
-  /**
-   * @param id
-   * @param type
-   * @return new variable
-   */
   public static Object createFloatVariable(Token id, Token type) {
     return createVariable(id, type, RutaTypeConstants.RUTA_TYPE_F);
   }
 
-  /**
-   * @param id
-   * @param type
-   * @return new RutaVariableDeclaration
-   */
   public static RutaVariableDeclaration createDoubleVariable(Token id, Token type) {
     return createVariable(id, type, RutaTypeConstants.RUTA_TYPE_D);
   }
 
-  /**
-   * @param id
-   * @param type
-   * @return new RutaVariableDeclaration
-   */
   public static RutaVariableDeclaration createStringVariable(Token id, Token type) {
     return createVariable(id, type, RutaTypeConstants.RUTA_TYPE_S);
   }
 
-  /**
-   * @param id
-   * @param type
-   * @return new RutaVariableDeclaration
-   */
   public static RutaVariableDeclaration createBooleanVariable(Token id, Token type) {
     return createVariable(id, type, RutaTypeConstants.RUTA_TYPE_B);
   }
 
-  /**
-   * @param id
-   * @param type
-   * @return new RutaVariableDeclaration
-   */
   public static RutaVariableDeclaration createTypeVariable(Token id, Token type) {
     return createVariable(id, type, RutaTypeConstants.RUTA_TYPE_AT);
   }
 
-  /**
-   * @param id
-   * @param type
-   * @return new RutaVariableDeclaration
-   */
   public static RutaVariableDeclaration createListVariable(Token id, Token type, Expression expr) {
     return createVariable(id, type, RutaTypeConstants.RUTA_TYPE_WL, expr);
   }
 
-  /**
-   * @param id
-   * @param type
-   * @return new RutaVariableDeclaration
-   */
   public static RutaVariableDeclaration createTableVariable(Token id, Token type, Expression expr) {
     return createVariable(id, type, RutaTypeConstants.RUTA_TYPE_WT, expr);
   }
 
-  /**
-   * @param id
-   * @param declareToken
-   * @param type
-   * @param features
-   * @return new Declaration
-   */
-
   public static Declaration createAnnotationType(Token id, Token declareToken, Expression type,
           List<RutaFeatureDeclaration> features) {
 
@@ -277,9 +212,10 @@
   @SuppressWarnings({ "rawtypes" })
   public static Statement createDeclareDeclarationsStatement(Token declareToken, List declarations,
           ASTNode parent) {
-    return createDeclareDeclarationsStatement(declareToken, declarations, parent, new ArrayList<RutaFeatureDeclaration>(0));
+    return createDeclareDeclarationsStatement(declareToken, declarations, parent,
+            new ArrayList<RutaFeatureDeclaration>(0));
   }
-  
+
   @SuppressWarnings({ "unchecked", "rawtypes" })
   public static Statement createDeclareDeclarationsStatement(Token declareToken, List declarations,
           ASTNode parent, List<RutaFeatureDeclaration> features) {
@@ -297,14 +233,13 @@
       int end = decls.get(decls.size() - 1).sourceEnd();
       statementBounds[1] = Math.max(statementBounds[1], end);
     }
-    if(features != null && !features.isEmpty()) {
+    if (features != null && !features.isEmpty()) {
       int end = features.get(features.size() - 1).sourceEnd();
       statementBounds[1] = Math.max(statementBounds[1], end);
     }
-    return new RutaDeclareDeclarationsStatement(statementBounds[0], statementBounds[1],
-            decls, parent, declBounds[0], declBounds[1], features);
+    return new RutaDeclareDeclarationsStatement(statementBounds[0], statementBounds[1], decls,
+            parent, declBounds[0], declBounds[1], features);
   }
-  
 
   @SuppressWarnings({ "rawtypes", "unchecked" })
   public static Statement createDeclarationsStatement(Token declareToken, List declarations,
@@ -323,11 +258,10 @@
       int end = decls.get(decls.size() - 1).sourceEnd();
       statementBounds[1] = Math.max(statementBounds[1], end);
     }
-    return new RutaDeclarationsStatement(statementBounds[0], statementBounds[1], declarations,
-            init, declBounds[0], declBounds[1]);
+    return new RutaDeclarationsStatement(statementBounds[0], statementBounds[1], declarations, init,
+            declBounds[0], declBounds[1]);
   }
 
-
   @SuppressWarnings("rawtypes")
   public static Statement createDeclarationsStatement(Token declareToken, List declarations) {
     return createDeclarationsStatement(declareToken, declarations, null);
@@ -344,7 +278,8 @@
     return null;
   }
 
-  public static Statement createComposedVariableActionDeclaration(Token id, List<RutaAction> actions) {
+  public static Statement createComposedVariableActionDeclaration(Token id,
+          List<RutaAction> actions) {
     return null;
   }
 
@@ -372,17 +307,16 @@
 
   public static Statement createMacroStatement(Token kind, Token name, Map<Token, Token> def,
           List<? extends Expression> elements) {
-    int declBounds[] = getBounds(kind, elements.get(elements.size()-1));
+    int declBounds[] = getBounds(kind, elements.get(elements.size() - 1));
     int nameBounds[] = getBounds(name);
-    int k = kind.equals("CONDITION") ? RutaTypeConstants.RUTA_TYPE_C : RutaTypeConstants.RUTA_TYPE_A;
+    int k = kind.getText().equals("CONDITION") ? RutaTypeConstants.RUTA_TYPE_C
+            : RutaTypeConstants.RUTA_TYPE_A;
     // FieldDeclaration
     SimpleReference ref = new RutaVariableReference(nameBounds[0], nameBounds[1], name.getText(),
             k);
-    RutaExpressionList expr = new RutaExpressionList(elements); 
+    RutaExpressionList expr = new RutaExpressionList(elements);
     return new RutaMacroDeclaration(name.getText(), nameBounds[0], nameBounds[1], declBounds[0],
             declBounds[1], ref, k, def, expr);
   }
 
-
-
 }
diff --git a/ruta-ep-textruler/pom.xml b/ruta-ep-textruler/pom.xml
index 546bdd6..1a873a8 100644
--- a/ruta-ep-textruler/pom.xml
+++ b/ruta-ep-textruler/pom.xml
@@ -151,7 +151,7 @@
               <instructions>
                 <Bundle-SymbolicName>org.apache.uima.ruta.textruler;singleton:=true</Bundle-SymbolicName>
                 <Bundle-Activator>org.apache.uima.ruta.textruler.TextRulerPlugin</Bundle-Activator>
-                <Bundle-RequiredExecutionEnvironment>JavaSE-1.7</Bundle-RequiredExecutionEnvironment>
+                <Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
                 <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
                 <_nouses>true</_nouses>
                 <Export-Package>
diff --git a/ruta-ep-textruler/src/main/java/org/apache/uima/ruta/textruler/extension/TextRulerLearner.java b/ruta-ep-textruler/src/main/java/org/apache/uima/ruta/textruler/extension/TextRulerLearner.java
index 5dd5b10..1f8864f 100755
--- a/ruta-ep-textruler/src/main/java/org/apache/uima/ruta/textruler/extension/TextRulerLearner.java
+++ b/ruta-ep-textruler/src/main/java/org/apache/uima/ruta/textruler/extension/TextRulerLearner.java
@@ -48,32 +48,13 @@
     ML_UNDEFINED, ML_INITIALIZING, ML_RUNNING, ML_ERROR, ML_ABORTED, ML_DONE
   };
 
-  /**
-   * There the magic has to be placed...
-   */
   void run();
 
-  /**
-   * this method gets called from the UI and passes a hashMap with key value coded parameters that
-   * your corresponding TextRulerLearnerFactory declared by its getAlgorithmParameters method.
-   */
   void setParameters(Map<String, Object> params);
 
-  /**
-   * If any Ruta-Rules result is available (yet), the system asks your algorithm for it by
-   * calling this method.
-   */
   String getResultString();
 
-  /**
-   * 
-   * @return analysis engine
-   */
   AnalysisEngine getAnalysisEngine();
 
-  /**
-   * 
-   * @return CAS
-   */
   CAS getTestCAS();
 }
diff --git a/ruta-ep-textruler/src/main/java/org/apache/uima/ruta/textruler/extension/TextRulerLearnerFactory.java b/ruta-ep-textruler/src/main/java/org/apache/uima/ruta/textruler/extension/TextRulerLearnerFactory.java
index bf17ba1..4499138 100755
--- a/ruta-ep-textruler/src/main/java/org/apache/uima/ruta/textruler/extension/TextRulerLearnerFactory.java
+++ b/ruta-ep-textruler/src/main/java/org/apache/uima/ruta/textruler/extension/TextRulerLearnerFactory.java
@@ -30,39 +30,12 @@
  */
 public interface TextRulerLearnerFactory {
 
-  /**
-   * @param inputFolderPath
-   *          the input folder path where e.g. example XMIs are located
-   * @param additionalFolderPath
-   * @param preprocessorTMfile
-   *          the preprocessing Ruta file (this is important for finding the type system and
-   *          analysis engine descriptor file)
-   * @param tempFolderPath
-   *          a folder name that you can use as temporary folder (caution: you need to create it if
-   *          you want to use it!)
-   * @param fullSlotTypeNames
-   *          an array with the slot-names to learn (full qualified UIMA type names)
-   * @param filterSet
-   *          Ruta filter set (full qualified UIMA type names)
-   * @param skip
-   * @param delegate
-   *          a delegate that can be notified for status updates and asked for aborting the
-   *          algorithm
-   * @return the algorithm of your class that implements TextRulerLearner
-   */
   public TextRulerLearner createAlgorithm(String inputFolderPath, String additionalFolderPath,
-          String preprocessorTMfile, String tempFolderPath, String[] fullSlotTypeNames,
+          String preprocessorRutaFile, String tempFolderPath, String[] fullSlotTypeNames,
           Set<String> filterSet, boolean skip, TextRulerLearnerDelegate delegate);
 
-  /**
-   * @return null or an array with MLAlgorithmParameters your TextRulerLearner wants to get from the
-   *         GUI
-   */
   public TextRulerLearnerParameter[] getAlgorithmParameters();
 
-  /**
-   * @return null or a key value set for the standard values of your algorithm's parameters
-   */
   public Map<String, Object> getAlgorithmParameterStandardValues();
 
 }
diff --git a/ruta-ep-textruler/src/main/java/org/apache/uima/ruta/textruler/learner/trabal/RankedList.java b/ruta-ep-textruler/src/main/java/org/apache/uima/ruta/textruler/learner/trabal/RankedList.java
index 100aa3e..1d4a339 100644
--- a/ruta-ep-textruler/src/main/java/org/apache/uima/ruta/textruler/learner/trabal/RankedList.java
+++ b/ruta-ep-textruler/src/main/java/org/apache/uima/ruta/textruler/learner/trabal/RankedList.java
@@ -46,11 +46,7 @@
     addAll(c);
   }
 
-  /**
-   * Adds the item to the list and increases its ranking by one.
-   * 
-   * @return true, if the item was newly inserted into the list.
-   */
+  @Override
   public boolean add(Condition e) {
     boolean result;
     double value;
@@ -71,10 +67,6 @@
     return result;
   }
 
-  /**
-   * Adds the item to the list and increases its ranking by the given number.
-   * 
-   */
   public void add(double index, Condition e) {
     if (ranking.containsKey(e)) {
       Double rank = ranking.get(e);
@@ -86,20 +78,13 @@
     }
   }
 
-  /**
-   * Adds the items to the ranked list and increases their ranking by their value in the given list.
-   * 
-   */
   public void addAll(RankedList list) {
     for (Condition each : list) {
       add(list.rankingOf(each), each);
     }
   }
 
-  /**
-   * Adds the items to the list and increases their ranking by one.
-   * 
-   */
+  @Override
   public boolean addAll(Collection<? extends Condition> c) {
     for (Condition each : c) {
       add(each);
@@ -107,10 +92,6 @@
     return true;
   }
 
-  /**
-   * Adds the items to the list and increases their ranking by the given number.
-   * 
-   */
   public boolean addAll(double index, Collection<? extends Condition> c) {
     for (Condition each : c) {
       add(index, each);
@@ -118,6 +99,7 @@
     return true;
   }
 
+  @Override
   public Condition remove(int index) {
     Condition element = super.get(index);
     if (element != null) {
@@ -130,6 +112,7 @@
     return null;
   }
 
+  @Override
   public boolean remove(Object o) {
     if (size() > 0) {
       if (contains(o) && ranking.containsKey(o)) {
@@ -141,23 +124,28 @@
     return false;
   }
 
+  @Override
   public List<Condition> subList(int start, int end) {
     return super.subList(start, end);
   }
 
+  @Override
   public boolean contains(Object o) {
     return super.contains(o);
   }
 
+  @Override
   public void clear() {
     super.clear();
     ranking.clear();
   }
 
+  @Override
   public int size() {
     return super.size();
   }
 
+  @Override
   public RankedList clone() {
     RankedList clone = new RankedList(idf);
     for (Condition element : subList(0, size())) {
@@ -166,16 +154,11 @@
     return clone;
   }
 
+  @Override
   public Condition get(int i) {
     return super.get(i);
   }
 
-  /**
-   * Returns the ranking of the given object.
-   * 
-   * @param each
-   * @return ranking
-   */
   public double rankingOf(Condition each) {
     if (contains(each)) {
       return ranking.get(each).doubleValue();
@@ -187,9 +170,6 @@
     return ranking;
   }
 
-  /**
-   * Sorts the elements of the list in order of its ranking.
-   */
   public void sort() {
     List<Condition> newList = new ArrayList<Condition>();
     for (int i = 0; i < size(); i++) {
@@ -206,12 +186,6 @@
     super.addAll(newList);
   }
 
-  /**
-   * Unites the lists and adds their values for common elements.
-   * 
-   * @param list
-   *          A list of the same type.
-   */
   public RankedList unite(RankedList list) {
     RankedList clone = clone();
     for (Condition element : list.subList(0, list.size())) {
@@ -221,13 +195,6 @@
     return clone;
   }
 
-  /**
-   * Removes all elements that are not part of both lists. Also adds the values of elements that
-   * occur in both lists.
-   * 
-   * @param list
-   *          A list of the same type.
-   */
   public RankedList cut(RankedList list) {
     RankedList clone = clone();
     for (Condition element : subList(0, size())) {
@@ -241,13 +208,6 @@
     return clone;
   }
 
-  /**
-   * Removes all elements of the given list that occur in this list. Also adds the values of
-   * elements that occur in both lists.
-   * 
-   * @param list
-   *          A list of the same type.
-   */
   public RankedList subtract(RankedList list) {
     RankedList clone = clone();
     for (Condition element : subList(0, size())) {
@@ -275,10 +235,6 @@
     return super.set(index, element);
   }
 
-  /**
-   * Adds the element to the list and assigns the ranking of the element located at the index. If
-   * the element already exists, it is only assigned the ranking value.
-   */
   @Override
   public void add(int index, Condition element) {
     if (size() >= index) {
diff --git a/ruta-ep-textruler/src/main/java/org/apache/uima/ruta/textruler/learner/trabal/ShiftAllRule.java b/ruta-ep-textruler/src/main/java/org/apache/uima/ruta/textruler/learner/trabal/ShiftAllRule.java
index 3904df5..1d08ab7 100644
--- a/ruta-ep-textruler/src/main/java/org/apache/uima/ruta/textruler/learner/trabal/ShiftAllRule.java
+++ b/ruta-ep-textruler/src/main/java/org/apache/uima/ruta/textruler/learner/trabal/ShiftAllRule.java
@@ -75,8 +75,9 @@
         after = "{" + after + "}";
 
       // this part will delete the original annotation
-      String unmark = errorBoundaryItem + (frontItemInBorders ? "" : " ANY") +"{STARTSWITH(" + annotation.getType().getShortName()
-              + ") -> UNMARK(" + annotation.getType().getShortName() + ", true)}";
+      String unmark = errorBoundaryItem + (frontItemInBorders ? "" : " ANY") + "{STARTSWITH("
+              + annotation.getType().getShortName() + ") -> UNMARK("
+              + annotation.getType().getShortName() + ", true)}";
 
       if (shiftToLeft)
         compileShiftToLeft(frontItemInBorders, rearItemInBorders, before, after, action, unmark);
@@ -100,8 +101,7 @@
             + rearBoundaryItem + ")}"; // like ANY*? but faster
 //    ruleString += "#{-CONTAINS(" + errorBoundaryItem + ")} " + unmark + " #{-CONTAINS("
 //            + rearBoundaryItem + ")}"; // like ANY*? but faster
-    
-    
+
     // Check, if the rear item should be included and mark all tokens between the brackets as
     // the
     // new annotation.
@@ -128,8 +128,6 @@
     ruleString += "ANY*{-PARTOF(" + rearBoundaryItem + ")}"; // like ANY*? but faster
 //    ruleString += "#{-CONTAINS(" + rearBoundaryItem + ")}"; // like ANY*? but faster
 
-    
-    
     // Check, if the rear item should be included and mark all tokens between the brackets as
     // the
     // new annotation.
@@ -194,11 +192,6 @@
     return false;
   }
 
-  /**
-   * Sets the boundary item that marks the beginning of the original annotation.
-   * 
-   * @param errorBoundaryItem
-   */
   public void setErrorBoundaryItem(TrabalRuleItem errorBoundaryItem) {
     this.errorBoundaryItem = errorBoundaryItem;
   }
diff --git a/ruta-ep-textruler/src/main/java/org/apache/uima/ruta/textruler/learner/trabal/TrabalLearner.java b/ruta-ep-textruler/src/main/java/org/apache/uima/ruta/textruler/learner/trabal/TrabalLearner.java
index 7b54080..84b0206 100644
--- a/ruta-ep-textruler/src/main/java/org/apache/uima/ruta/textruler/learner/trabal/TrabalLearner.java
+++ b/ruta-ep-textruler/src/main/java/org/apache/uima/ruta/textruler/learner/trabal/TrabalLearner.java
@@ -139,9 +139,7 @@
     this.additionalFolderPath = additionalFolderPath;
   }
 
-  /**
-   * Main method. Starts the algorithm.
-   */
+  @Override
   protected void doRun() {
     try {
       getAnalysisEngine();
@@ -155,7 +153,8 @@
       sendStatusUpdateToDelegate("Comparing documents...", TextRulerLearnerState.ML_RUNNING, true);
       for (int i = 0; i < algorithmIterations; i++) {
         actualResult += "BLOCK(Iteration_" + (i + 1) + ") Document{} {\n";
-        sendStatusUpdateToDelegate("Comparing documents...", TextRulerLearnerState.ML_RUNNING, true);
+        sendStatusUpdateToDelegate("Comparing documents...", TextRulerLearnerState.ML_RUNNING,
+                true);
         idf = createIDF();
         Map<String, List<AnnotationError>> errorGrps = createErrorGroups();
         List<TrabalRule> rules = runAlgorithm(errorGrps);
@@ -241,14 +240,6 @@
     return result;
   }
 
-  /**
-   * Compares the training data to the additional data and creates a mapping of the contained
-   * errors, where the key is a combination of the error type and the names of the concerned
-   * annotations, and the values are lists of errors that can be corrected through the same type of
-   * rule.
-   * 
-   * @return map of errors
-   */
   private Map<String, List<AnnotationError>> createErrorGroups() {
     errors = createErrorList();
     Collections.sort(errors);
@@ -300,9 +291,6 @@
     return result;
   }
 
-  /**
-   * Creates a list of annotation pairs and the fitting type of transformation action.
-   */
   private List<AnnotationError> createErrorList() {
     positiveExamples = new HashMap<String, RankedList>();
     List<AnnotationError> result = new ArrayList<AnnotationError>();
@@ -341,8 +329,9 @@
         if (shouldAbort())
           break;
         exampleIndex++;
-        sendStatusUpdateToDelegate("Comparing documents " + (i + 1) + " of " + goldStandard.size()
-                + ": example " + exampleIndex + " of " + gold.size(),
+        sendStatusUpdateToDelegate(
+                "Comparing documents " + (i + 1) + " of " + goldStandard.size() + ": example "
+                        + exampleIndex + " of " + gold.size(),
                 TextRulerLearnerState.ML_RUNNING, false);
         a = iterator.next();
         docIterator = docs.iterator();
@@ -508,13 +497,6 @@
     return result;
   }
 
-  /**
-   * Is called by doRun(). Creates and tests rules for a given list of error groups created by
-   * createErrorGroups().
-   * 
-   * @param errorGrps
-   * @return The best found list of correction rules.
-   */
   private List<TrabalRule> runAlgorithm(Map<String, List<AnnotationError>> errorGrps) {
     removeBasics();
     inducedRules.clear();
@@ -534,8 +516,8 @@
       if (basicRules.size() > maxNumberOfBasicRules) {
         basicRules = basicRules.subList(0, maxNumberOfBasicRules);
       }
-      sendStatusUpdateToDelegate("Testing basic rules: " + status,
-              TextRulerLearnerState.ML_RUNNING, false);
+      sendStatusUpdateToDelegate("Testing basic rules: " + status, TextRulerLearnerState.ML_RUNNING,
+              false);
       basicRules = testTrabalRulesOnDocumentSet(basicRules, exampleDocuments, additionalDocuments,
               "basic rules (" + i + " of " + errorGrps.size() + ")");
       if (basicRules.size() > 0) {
@@ -543,8 +525,8 @@
         bestRulesForStatus.add(basicRules.get(0));
       }
       result = actualResult + getRuleStrings(bestRulesForStatus);
-      sendStatusUpdateToDelegate("Testing basic rules: " + status,
-              TextRulerLearnerState.ML_RUNNING, true);
+      sendStatusUpdateToDelegate("Testing basic rules: " + status, TextRulerLearnerState.ML_RUNNING,
+              true);
       List<TrabalRule> learntRules = new ArrayList<TrabalRule>();
       for (TrabalRule rule : basicRules) {
         if (rule.getCoveringStatistics().getCoveredPositivesCount() > 0
@@ -638,12 +620,6 @@
     return learntRules;
   }
 
-  /**
-   * Chooses the best final rules from the results of runAlgorithm().
-   * 
-   * @param rules
-   * @return A non redundant list of correction rules.
-   */
   private List<TrabalRule> getBest(List<TrabalRule> rules) {
     List<TrabalRule> result = new ArrayList<TrabalRule>();
     Collections.sort(rules, enhancedComparator);
@@ -713,12 +689,6 @@
     return result;
   }
 
-  /**
-   * Is called from getBest(). Applies the chosen rules to the additional documents, so the learner
-   * can ignore the already corrected errors in the next interation.
-   * 
-   * @param rule
-   */
   private void updateDocumentData(TrabalRule rule) {
     try {
       sendStatusUpdateToDelegate("Writing rules...", TextRulerLearnerState.ML_RUNNING, false);
@@ -737,12 +707,6 @@
     }
   }
 
-  /**
-   * Creates basic rules for the given types of errors.
-   * 
-   * @param errors
-   * @return list of basic rules
-   */
   public List<TrabalRule> createBasicRules(List<AnnotationError> errors) {
     List<TrabalRule> result = new ArrayList<TrabalRule>();
     for (AnnotationError each : errors) {
@@ -766,12 +730,6 @@
     return getBestBasicRule(result);
   }
 
-  /**
-   * Chooses the rules which are expected to be the best.
-   * 
-   * @param rules
-   * @return list of best basic rules
-   */
   private List<TrabalRule> getBestBasicRule(List<TrabalRule> rules) {
     if (rules.size() < maxNumberOfBasicRules)
       return rules;
@@ -821,12 +779,6 @@
     return result;
   }
 
-  /**
-   * Creates basic rules for shifting type errors.
-   * 
-   * @param error
-   * @return list of shifting rules
-   */
   private List<TrabalRule> createShiftingRules(AnnotationError each) {
     List<TrabalRule> result = new ArrayList<TrabalRule>();
     TextRulerExample error = each.getError();
@@ -848,15 +800,6 @@
     return result;
   }
 
-  /**
-   * Creates basic rules for shifting errors, where both borders are shiftet to the same side or the
-   * size of the annotation is reduced.
-   * 
-   * @param error
-   *          The error example
-   * @param truth
-   *          The truth example
-   */
   private List<TrabalRule> createShiftAllRules(TextRulerExample error, TextRulerExample truth) {
     List<TrabalRule> result = new ArrayList<TrabalRule>();
     TextRulerExampleDocument document = error.getDocument();
@@ -907,13 +850,6 @@
     return result;
   }
 
-  /**
-   * Creates basic rules for expansion type errors.
-   * 
-   * @param error
-   * @param truth
-   * @return list of expansion rules
-   */
   private List<TrabalRule> createExpansionRules(TextRulerExample error, TextRulerExample truth) {
     List<TrabalRule> result = new ArrayList<TrabalRule>();
     TextRulerExampleDocument document = error.getDocument();
@@ -939,17 +875,11 @@
     return result;
   }
 
-  /**
-   * Creates basic rules for annotation type errors.
-   * 
-   * @param error
-   * @return list of annotation rules
-   */
   private List<TrabalRule> createAnnotationRules(AnnotationError each) {
     List<TrabalRule> result = new ArrayList<TrabalRule>();
     TextRulerExample truth = each.getTruth();
-    TextRulerExampleDocument document = additionalDocuments.getDocuments().get(
-            exampleDocuments.getDocuments().indexOf(truth.getDocument()));
+    TextRulerExampleDocument document = additionalDocuments.getDocuments()
+            .get(exampleDocuments.getDocuments().indexOf(truth.getDocument()));
     CAS cas = document.getCAS();
     List<TrabalRuleItem> truthLeftBorder = getBorderOfExample(truth, document, cas, true);
     List<TrabalRuleItem> truthRightBorder = getBorderOfExample(truth, document, cas, false);
@@ -967,12 +897,6 @@
     return result;
   }
 
-  /**
-   * Creates basic rules for deletion type errors.
-   * 
-   * @param error
-   * @return list of deletion rules
-   */
   private List<TrabalRule> createDeletionRules(AnnotationError each) {
     List<TrabalRule> result = new ArrayList<TrabalRule>();
     TextRulerExample error = each.getError();
@@ -982,12 +906,6 @@
     return result;
   }
 
-  /**
-   * Creates basic rules for correction type errors.
-   * 
-   * @param error
-   * @return list of correction rules
-   */
   private List<TrabalRule> createCorrectionRules(AnnotationError each) {
     List<TrabalRule> result = new ArrayList<TrabalRule>();
     TextRulerExample error = each.getError();
@@ -998,16 +916,6 @@
     return result;
   }
 
-  /**
-   * Examines the border of an example annotation and returns all annotations before and on that
-   * border if looking at the left border or returns all annotations on and after the example if
-   * looking at the right border.
-   * 
-   * @param example
-   *          The example that should be examined
-   * @param examineLeftBorder
-   *          set true for the left border or false for the right border to be examined
-   */
   private List<TrabalRuleItem> getBorderOfExample(TextRulerExample example,
           TextRulerExampleDocument document, CAS cas, boolean examineLeftBorder) {
     List<TrabalRuleItem> result = new ArrayList<TrabalRuleItem>();
@@ -1055,12 +963,6 @@
     return result;
   }
 
-  /**
-   * Creates conditions for a given rule.
-   * 
-   * @param rules
-   * @return ranked list of conditions
-   */
   public RankedList createConditions(List<TrabalRule> rules) {
     if (rules.size() == 0)
       return new RankedList(idf);
@@ -1075,12 +977,12 @@
           error.addAll(createConditions(rule.getAnnotation()));
           truth.addAll(createConditions(rule.getTargetAnnotation()));
         }
-        result = error.subtract(truth.unite(getPositiveExamplesFor(rules.get(0)
-                .getTargetAnnotation().getType())));
+        result = error.subtract(
+                truth.unite(getPositiveExamplesFor(rules.get(0).getTargetAnnotation().getType())));
         setNegative(result);
-        result.addAll(truth.cut(
-                getPositiveExamplesFor(rules.get(0).getTargetAnnotation().getType())).subtract(
-                error));
+        result.addAll(
+                truth.cut(getPositiveExamplesFor(rules.get(0).getTargetAnnotation().getType()))
+                        .subtract(error));
         return result;
       case CORRECTION:
         for (TrabalRule rule : rules) {
@@ -1090,9 +992,9 @@
                 truth.unite(getPositiveExamplesFor(rules.get(0).getTargetAnnotation().getType())));
         setNegative(result);
         if (getPositiveExamplesFor(rules.get(0).getTargetAnnotation().getType()).size() > 0) {
-          result.addAll(truth.cut(
-                  getPositiveExamplesFor(rules.get(0).getTargetAnnotation().getType())).subtract(
-                  getPositiveExamplesFor(rules.get(0).getAnnotation().getType())));
+          result.addAll(truth
+                  .cut(getPositiveExamplesFor(rules.get(0).getTargetAnnotation().getType()))
+                  .subtract(getPositiveExamplesFor(rules.get(0).getAnnotation().getType())));
         } else {
           result.addAll(truth);
         }
@@ -1112,8 +1014,8 @@
         }
         result = getPositiveExamplesFor(rules.get(0).getAnnotation().getType()).subtract(error);
         setNegative(result);
-        result.addAll(createConditions(rules.get(0).getAnnotation()).subtract(
-                getPositiveExamplesFor(rules.get(0).getAnnotation().getType())));
+        result.addAll(createConditions(rules.get(0).getAnnotation())
+                .subtract(getPositiveExamplesFor(rules.get(0).getAnnotation().getType())));
         return result;
     }
     return null;
@@ -1136,19 +1038,11 @@
     }
   }
 
-  /**
-   * Creates conditions for a rule given by its boundaries and annotation type.
-   * 
-   * @param frontBoundary
-   * @param rearBoundary
-   * @param truth
-   * @return ranked list of conditions
-   */
   private RankedList createConditions(TrabalRuleItem frontBoundary, TrabalRuleItem rearBoundary,
           TrabalAnnotation truth) {
     RankedList result = new RankedList(idf);
-    TextRulerExampleDocument doc = additionalDocuments.getDocuments().get(
-            exampleDocuments.getDocuments().indexOf(truth.getDocument()));
+    TextRulerExampleDocument doc = additionalDocuments.getDocuments()
+            .get(exampleDocuments.getDocuments().indexOf(truth.getDocument()));
     CAS cas = doc.getCAS();
     for (TrabalRuleItem item : getTermsBefore(frontBoundary, doc)) {
       result.add(new Condition(ConditionType.AFTER, item));
@@ -1166,8 +1060,9 @@
         result.add(new Condition(ConditionType.STARTSWITH, item));
       }
     } else {
-      for (List<TrabalRuleItem> list : getFirstTermsWithinBounds(frontBoundary.getAnnotation()
-              .getBegin(), rearBoundary.getAnnotation().getEnd(), doc, cas, 1)) {
+      for (List<TrabalRuleItem> list : getFirstTermsWithinBounds(
+              frontBoundary.getAnnotation().getBegin(), rearBoundary.getAnnotation().getEnd(), doc,
+              cas, 1)) {
         result.add(new Condition(ConditionType.STARTSWITH, list.get(0)));
       }
     }
@@ -1176,20 +1071,15 @@
         result.add(new Condition(ConditionType.ENDSWITH, item));
       }
     } else {
-      for (List<TrabalRuleItem> list : getLastTermsWithinBounds(rearBoundary.getAnnotation()
-              .getBegin(), frontBoundary.getAnnotation().getEnd(), doc, cas, 1)) {
+      for (List<TrabalRuleItem> list : getLastTermsWithinBounds(
+              rearBoundary.getAnnotation().getBegin(), frontBoundary.getAnnotation().getEnd(), doc,
+              cas, 1)) {
         result.add(new Condition(ConditionType.ENDSWITH, list.get(0)));
       }
     }
     return result;
   }
 
-  /**
-   * Creates conditions for a rule, given by its annotation.
-   * 
-   * @param error
-   * @return ranked list of conditions
-   */
   private RankedList createConditions(TrabalAnnotation annotation) {
     RankedList result = new RankedList(idf);
     TrabalRuleItem ruleItem = new TrabalRuleItem(annotation);
@@ -1221,17 +1111,6 @@
     return result;
   }
 
-  /**
-   * Returns all items directly preceding the given example rule item.
-   * 
-   * @param ruleItem
-   *          Examined rule item
-   * @param document
-   *          Example document
-   * @param cas
-   *          The CAS
-   * @return List of rule items that precede the given example
-   */
   private List<TrabalRuleItem> getTermsBefore(TrabalRuleItem ruleItem,
           TextRulerExampleDocument document) {
     List<TrabalRuleItem> result = new ArrayList<TrabalRuleItem>();
@@ -1256,8 +1135,8 @@
             nextEnd = a.getEnd();
           }
           if (a.getEnd() >= nextEnd && a.getEnd() <= begin) {
-            TrabalRuleItem term = new TrabalRuleItem(new TrabalAnnotation(a, document,
-                    enableFeatures));
+            TrabalRuleItem term = new TrabalRuleItem(
+                    new TrabalAnnotation(a, document, enableFeatures));
             result.add(term);
           }
         }
@@ -1267,17 +1146,6 @@
     return result;
   }
 
-  /**
-   * Returns all items directly following the given example rule item.
-   * 
-   * @param ruleItem
-   *          Examined rule item
-   * @param document
-   *          Example document
-   * @param cas
-   *          The CAS
-   * @return List of rule items that follow the given example
-   */
   private List<TrabalRuleItem> getTermsAfter(TrabalRuleItem ruleItem,
           TextRulerExampleDocument document) {
     List<TrabalRuleItem> result = new ArrayList<TrabalRuleItem>();
@@ -1297,8 +1165,8 @@
             nextBegin = a.getBegin();
           }
           if (a.getBegin() <= nextBegin && a.getBegin() >= end) {
-            TrabalRuleItem term = new TrabalRuleItem(new TrabalAnnotation(a, document,
-                    enableFeatures));
+            TrabalRuleItem term = new TrabalRuleItem(
+                    new TrabalAnnotation(a, document, enableFeatures));
             result.add(term);
           }
         }
@@ -1308,17 +1176,6 @@
     return result;
   }
 
-  /**
-   * Gets the left border within the bounds, that means a list of elements that start with the
-   * border and those that end right before it.
-   * 
-   * @param startPos
-   * @param endPos
-   * @param document
-   * @param cas
-   * @param numberOfSideItems
-   * @return first term
-   */
   private List<List<TrabalRuleItem>> getFirstTermsWithinBounds(int startPos, int endPos,
           TextRulerExampleDocument document, CAS cas, int numberOfSideItems) {
     List<List<TrabalRuleItem>> preItems = new ArrayList<List<TrabalRuleItem>>();
@@ -1348,7 +1205,8 @@
 
     for (AnnotationFS each : startAs) {
       List<TrabalRuleItem> startList = new ArrayList<TrabalRuleItem>();
-      TrabalRuleItem term = new TrabalRuleItem(new TrabalAnnotation(each, document, enableFeatures));
+      TrabalRuleItem term = new TrabalRuleItem(
+              new TrabalAnnotation(each, document, enableFeatures));
       startList.add(term);
       preItems.add(startList);
     }
@@ -1356,17 +1214,6 @@
     return preItems;
   }
 
-  /**
-   * Gets the right border within the bounds, that means a list of elements that end with the border
-   * and those that start right behind it.
-   * 
-   * @param startPos
-   * @param endPos
-   * @param document
-   * @param cas
-   * @param numberOfSideItems
-   * @return last term
-   */
   private List<List<TrabalRuleItem>> getLastTermsWithinBounds(int startPos, int endPos,
           TextRulerExampleDocument document, CAS cas, int numberOfSideItems) {
     List<List<TrabalRuleItem>> postItems = new ArrayList<List<TrabalRuleItem>>();
@@ -1397,7 +1244,8 @@
 
     for (AnnotationFS each : endAs) {
       List<TrabalRuleItem> endList = new ArrayList<TrabalRuleItem>();
-      TrabalRuleItem term = new TrabalRuleItem(new TrabalAnnotation(each, document, enableFeatures));
+      TrabalRuleItem term = new TrabalRuleItem(
+              new TrabalAnnotation(each, document, enableFeatures));
       endList.add(term);
       postItems.add(endList);
     }
@@ -1405,17 +1253,6 @@
     return postItems;
   }
 
-  /**
-   * Returns a list of rule elements that precede the given elements.
-   * 
-   * @param lists
-   * @param till
-   * @param document
-   * @param cas
-   * @param index
-   * @param maxNumberOfItems
-   * @return updated list of items
-   */
   private List<List<TrabalRuleItem>> addPreceding(List<List<TrabalRuleItem>> lists, int till,
           TextRulerExampleDocument document, CAS cas, int index, int maxNumberOfItems) {
     if (index >= maxNumberOfItems) {
@@ -1449,17 +1286,6 @@
     return result;
   }
 
-  /**
-   * Returns a list of rule elements that follow on the given elements.
-   * 
-   * @param lists
-   * @param till
-   * @param document
-   * @param cas
-   * @param index
-   * @param maxNumberOfItems
-   * @return updated list of items
-   */
   private List<List<TrabalRuleItem>> addFollowing(List<List<TrabalRuleItem>> lists, int till,
           TextRulerExampleDocument document, CAS cas, int index, int maxNumberOfItems) {
     if (index >= maxNumberOfItems) {
@@ -1493,9 +1319,6 @@
     return result;
   }
 
-  /**
-   * Returns a list of all items, consuming the given RuleItem.
-   */
   private List<TrabalRuleItem> getConsumingTerms(TrabalRuleItem ruleItem,
           TextRulerExampleDocument document) {
     CAS cas = document.getCAS();
@@ -1516,15 +1339,6 @@
     return result;
   }
 
-  /**
-   * Returns a list of rule items within the given bounds.
-   * 
-   * @param begin
-   * @param end
-   * @param doc
-   * @param cas
-   * @return list of terms
-   */
   private List<TrabalRuleItem> getSingleTermsWithinBounds(int begin, int end,
           TextRulerExampleDocument doc, CAS cas) {
     Set<TrabalRuleItem> result = new HashSet<TrabalRuleItem>();
@@ -1544,16 +1358,6 @@
     return new ArrayList<TrabalRuleItem>(result);
   }
 
-  /**
-   * Applies a set of rules to the additional data and compares it to the training data to rate
-   * them.
-   * 
-   * @param rules
-   * @param documents
-   * @param additionalDocuments
-   * @param ruleSet
-   * @return list of rules
-   */
   public List<TrabalRule> testTrabalRulesOnDocumentSet(List<TrabalRule> rules,
           final TextRulerExampleDocumentSet documents,
           final TextRulerExampleDocumentSet additionalDocuments, String ruleSet) {
@@ -1583,8 +1387,9 @@
         for (int i = 0; i < goldDocs.size(); i++) {
           TextRulerExampleDocument goldDoc = goldDocs.get(i);
           TextRulerExampleDocument additionalDoc = additionalDocs.get(i);
-          sendStatusUpdateToDelegate("Testing " + ruleSet + ruleInfo + " on document " + (i + 1)
-                  + " of " + goldDocs.size() + " : rule " + counter + " of " + rules.size(),
+          sendStatusUpdateToDelegate(
+                  "Testing " + ruleSet + ruleInfo + " on document " + (i + 1) + " of "
+                          + goldDocs.size() + " : rule " + counter + " of " + rules.size(),
                   TextRulerLearnerState.ML_RUNNING, false);
           TextRulerStatisticsCollector sumC = new TextRulerStatisticsCollector();
           prepareTestCas(theTestCAS, goldDoc, additionalDoc);
@@ -1636,13 +1441,6 @@
     return ruleInfo;
   }
 
-  /**
-   * Resets the test CAS and adds the annotations of the additional data.
-   * 
-   * @param testCas
-   * @param goldDoc
-   * @param additionalDoc
-   */
   private void prepareTestCas(CAS testCas, TextRulerExampleDocument goldDoc,
           TextRulerExampleDocument additionalDoc) {
     testCas.reset();
@@ -1651,7 +1449,7 @@
     testCas.setDocumentText(goldCas.getDocumentText());
 
     CasCopier.copyCas(additionalCas, testCas, testCas.getDocumentText() == null);
-    
+
 //    for (AnnotationFS fs : additionalCas.getAnnotationIndex()) {
 //      Type t = testCas.getTypeSystem().getType(fs.getType().getName());
 //      if (t != null) {
@@ -1664,16 +1462,6 @@
 //    }
   }
 
-  /**
-   * Applies a rule to an element of the additional data and compares the result to the
-   * corresponding element of the training data.
-   * 
-   * @param rule
-   * @param goldDoc
-   * @param additionalDoc
-   * @param c
-   * @param testCas
-   */
   private void testRuleOnDocument(final TrabalRule rule, final TextRulerExampleDocument goldDoc,
           final TextRulerExampleDocument additionalDoc, final TextRulerStatisticsCollector c,
           CAS testCas) {
@@ -1691,44 +1479,36 @@
         TextRulerToolkit.writeCAStoXMIFile(testCas, tempDirectory() + "testCasProcessed.xmi");
       }
       if (rule.getAnnotation() != null && rule.getTargetAnnotation() != null) {
-        compareOriginalDocumentWithTestCAS(goldDoc, additionalDoc, testCas, new TextRulerTarget(
-                rule.getAnnotation().getType().getName(), this), c, false);
+        compareOriginalDocumentWithTestCAS(goldDoc, additionalDoc, testCas,
+                new TextRulerTarget(rule.getAnnotation().getType().getName(), this), c, false);
         if (rule.getAnnotation().getType() != rule.getTargetAnnotation().getType()) {
-          compareOriginalDocumentWithTestCAS(goldDoc, additionalDoc, testCas, new TextRulerTarget(
-                  rule.getTargetAnnotation().getType().getName(), this), c, false);
+          compareOriginalDocumentWithTestCAS(goldDoc, additionalDoc, testCas,
+                  new TextRulerTarget(rule.getTargetAnnotation().getType().getName(), this), c,
+                  false);
         }
       } else if (rule.getTargetAnnotation() != null) {
-        compareOriginalDocumentWithTestCAS(goldDoc, additionalDoc, testCas, new TextRulerTarget(
-                rule.getTargetAnnotation().getType().getName(), this), c, false);
+        compareOriginalDocumentWithTestCAS(goldDoc, additionalDoc, testCas,
+                new TextRulerTarget(rule.getTargetAnnotation().getType().getName(), this), c,
+                false);
       } else {
-        compareOriginalDocumentWithTestCAS(goldDoc, additionalDoc, testCas, new TextRulerTarget(
-                rule.getAnnotation().getType().getName(), this), c, false);
+        compareOriginalDocumentWithTestCAS(goldDoc, additionalDoc, testCas,
+                new TextRulerTarget(rule.getAnnotation().getType().getName(), this), c, false);
       }
     } catch (Exception e) {
       e.printStackTrace();
     }
   }
 
-  /**
-   * Compares two documents to rate the results of an applied rule.
-   * 
-   * @param goldDoc
-   * @param additionalDoc
-   * @param testCas
-   * @param target
-   * @param c
-   * @param collectNegativeExamples
-   */
   private void compareOriginalDocumentWithTestCAS(TextRulerExampleDocument goldDoc,
           TextRulerExampleDocument additionalDoc, CAS testCas, TextRulerTarget target,
           TextRulerStatisticsCollector c, boolean collectNegativeExamples) {
 
     List<TextRulerExample> goldPositives = goldDoc.createSlotInstancesForCAS(goldDoc.getCAS(),
             target, true);
-    List<TextRulerExample> additionalPositives = additionalDoc.createSlotInstancesForCAS(
-            additionalDoc.getCAS(), target, true);
-    List<TextRulerExample> testPositives = goldDoc
-            .createSlotInstancesForCAS(testCas, target, false);
+    List<TextRulerExample> additionalPositives = additionalDoc
+            .createSlotInstancesForCAS(additionalDoc.getCAS(), target, true);
+    List<TextRulerExample> testPositives = goldDoc.createSlotInstancesForCAS(testCas, target,
+            false);
 
     List<TextRulerExample> baseFP = new ArrayList<TextRulerExample>();
     for (TextRulerExample e : additionalPositives) {
@@ -1740,8 +1520,8 @@
     }
     List<TextRulerExample> baseFN = new ArrayList<TextRulerExample>();
     for (TextRulerExample e : goldPositives) {
-      TextRulerExample example = TextRulerToolkit.exampleListContainsAnnotation(
-              additionalPositives, e.getAnnotation());
+      TextRulerExample example = TextRulerToolkit.exampleListContainsAnnotation(additionalPositives,
+              e.getAnnotation());
       if (example == null) {
         baseFN.add(e);
       }
@@ -1775,8 +1555,8 @@
     for (TextRulerExample e : baseFN) {
       TextRulerExample example = TextRulerToolkit.exampleListContainsAnnotation(testFN,
               e.getAnnotation());
-      TextRulerExample coveredExample = TextRulerToolkit.exampleListContainsAnnotation(
-              goldPositives, e.getAnnotation());
+      TextRulerExample coveredExample = TextRulerToolkit
+              .exampleListContainsAnnotation(goldPositives, e.getAnnotation());
       if (example == null) {
         c.addCoveredPositive(coveredExample);
       }
@@ -1804,22 +1584,10 @@
     }
   }
 
-  /**
-   * Removes duplicate rules by their hash value.
-   * 
-   * @param rules
-   * @return updated list
-   */
   public static List<TrabalRule> removeDuplicateRules(List<TrabalRule> rules) {
     return new ArrayList<TrabalRule>(new HashSet<TrabalRule>(rules));
   }
 
-  /**
-   * Returns a string, containing the rules of the given list.
-   * 
-   * @param rules
-   * @return string representation of given rules
-   */
   public static String getRuleStrings(List<TrabalRule> rules) {
     String result = "";
     for (TrabalRule r : rules) {
@@ -1828,12 +1596,6 @@
     return result;
   }
 
-  /**
-   * Tests, if the given type is a slot type.
-   * 
-   * @param type
-   * @return true, if given type is a slot type
-   */
   public boolean isSlotType(Type type) {
     for (String slot : slotNames) {
       if (slot.equals(type.getName())) {
@@ -1843,47 +1605,16 @@
     return false;
   }
 
+  @Override
   public boolean collectNegativeCoveredInstancesWhenTesting() {
     return false;
   }
 
+  @Override
   public String getResultString() {
     return getFileHeaderString(true) + result;
   }
 
-  // // @Override
-  // public AnalysisEngine getAnalysisEngine() {
-  // if (ae == null) {
-  // String descriptorFile = TextRulerToolkit.getEngineDescriptorFromTMSourceFile(new Path(
-  // preprocessorTMFile));
-  // sendStatusUpdateToDelegate("loading AE...", TextRulerLearnerState.ML_INITIALIZING, false);
-  // ae = TextRulerToolkit.loadAnalysisEngine(descriptorFile);
-  //
-  // // set filters to NO filtering so that we can add it manually with
-  // // the FILTERTYPE expression!
-  // String tempRulesFileName = getTempRulesFileName();
-  // IPath path = new Path(tempRulesFileName);
-  // ae.setConfigParameterValue(RutaEngine.MAIN_SCRIPT, path.removeFileExtension()
-  // .lastSegment());
-  // String portableString = path.removeLastSegments(1).toPortableString();
-  // ae.setConfigParameterValue(RutaEngine.SCRIPT_PATHS, new String[] { portableString });
-  // ae.setConfigParameterValue(RutaEngine.ADDITIONAL_SCRIPTS, new String[0]);
-  // ae.setConfigParameterValue(RutaEngine.RELOAD_SCRIPT, true);
-  // ae.setConfigParameterValue(RutaEngine.REMOVE_BASICS, true);
-  //
-  // try {
-  // ae.reconfigure();
-  // } catch (ResourceConfigurationException e) {
-  // TextRulerPlugin.error(e);
-  // return null;
-  // }
-  // }
-  // return ae;
-  // }
-
-  /**
-   * Return the set of additional documents and initializes it, if needed.
-   */
   public TextRulerExampleDocumentSet getAdditionalDocuments() {
     if (additionalDocuments == null) {
       if (!StringUtils.isBlank(additionalFolderPath)) {
@@ -1897,7 +1628,7 @@
     return enableFeatures;
   }
 
-  // @Override
+  @Override
   public void setParameters(Map<String, Object> params) {
     if (TextRulerToolkit.DEBUG)
       saveParametersToTempFolder(params);
@@ -1915,12 +1646,6 @@
       enableFeatures = (Boolean) params.get(ENABLE_FEATURES_KEY);
   }
 
-  /**
-   * Creates a file in the *.csv format, containing TraBaL errors (error type, file name, false
-   * annotation and true annotation).
-   * 
-   * @throws Exception
-   */
   public void getErrorsAsCSV(String filePath) throws Exception {
     String result = "";
     if (exampleDocuments == null) {
@@ -1958,11 +1683,8 @@
     }
   }
 
-  /**
-   * Compares trabal rules, disregarding the error rate, so basic rules with maximum number of
-   * covered positives are chosen.
-   */
   protected Comparator<TrabalRule> basicComparator = new Comparator<TrabalRule>() {
+    @Override
     public int compare(TrabalRule o1, TrabalRule o2) {
       // coveredPositives
       if (o1.getCoveringStatistics().getCoveredPositivesCount() > o2.getCoveringStatistics()
@@ -1988,19 +1710,17 @@
     }
   };
 
-  /**
-   * Compares trabal rules, starting with the error rate.
-   */
   protected Comparator<TrabalRule> enhancedComparator = new Comparator<TrabalRule>() {
+    @Override
     public int compare(TrabalRule o1, TrabalRule o2) {
       // positives - negatives
-      if (o1.getCoveringStatistics().getCoveredPositivesCount()
-              - o1.getCoveringStatistics().getCoveredNegativesCount() > o2.getCoveringStatistics()
-              .getCoveredPositivesCount() - o2.getCoveringStatistics().getCoveredNegativesCount())
+      if (o1.getCoveringStatistics().getCoveredPositivesCount() - o1.getCoveringStatistics()
+              .getCoveredNegativesCount() > o2.getCoveringStatistics().getCoveredPositivesCount()
+                      - o2.getCoveringStatistics().getCoveredNegativesCount())
         return -1;
-      if (o1.getCoveringStatistics().getCoveredPositivesCount()
-              - o1.getCoveringStatistics().getCoveredNegativesCount() < o2.getCoveringStatistics()
-              .getCoveredPositivesCount() - o2.getCoveringStatistics().getCoveredNegativesCount())
+      if (o1.getCoveringStatistics().getCoveredPositivesCount() - o1.getCoveringStatistics()
+              .getCoveredNegativesCount() < o2.getCoveringStatistics().getCoveredPositivesCount()
+                      - o2.getCoveringStatistics().getCoveredNegativesCount())
         return 1;
       // coveredPositives
       if (o1.getCoveringStatistics().getCoveredPositivesCount() > o2.getCoveringStatistics()
diff --git a/ruta-maven-plugin/pom.xml b/ruta-maven-plugin/pom.xml
index 79e0aa8..a61adea 100644
--- a/ruta-maven-plugin/pom.xml
+++ b/ruta-maven-plugin/pom.xml
@@ -42,6 +42,27 @@
     <connection>scm:svn:http://svn.apache.org/repos/asf/uima/ruta/tags/ruta-2.7.0/ruta-maven-plugin</connection>
     <developerConnection>scm:svn:https://svn.apache.org/repos/asf/uima/ruta/tags/ruta-2.7.0/ruta-maven-plugin</developerConnection>
   </scm>
+  
+  <dependencyManagement>
+		<dependencies>
+			<dependency>
+				<groupId>org.springframework</groupId>
+				<artifactId>spring-context</artifactId>
+				<version>${spring-version}</version>
+			</dependency>
+			<dependency>
+				<groupId>org.springframework</groupId>
+				<artifactId>spring-core</artifactId>
+				<version>${spring-version}</version>
+			</dependency>
+			<dependency>
+				<groupId>org.springframework</groupId>
+				<artifactId>spring-beans</artifactId>
+				<version>${spring-version}</version>
+			</dependency>
+		</dependencies>
+	</dependencyManagement>
+  
 	<dependencies>
 		<!-- Dependencies on the Maven Plugin API and friends -->
 		<dependency>
diff --git a/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/RutaGenerateDescriptorMojo.java b/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/RutaGenerateDescriptorMojo.java
index 801642b..55cb1d8 100644
--- a/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/RutaGenerateDescriptorMojo.java
+++ b/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/RutaGenerateDescriptorMojo.java
@@ -87,15 +87,15 @@
 
   private static final String RUTA_NATURE = "org.apache.uima.ruta.ide.nature";
 
-  @Parameter( defaultValue = "${project}", readonly = true )
+  @Parameter(defaultValue = "${project}", readonly = true)
   private MavenProject project;
 
   @Component
   private BuildContext buildContext;
 
-  @Parameter( defaultValue = "${session}", readonly = true )
+  @Parameter(defaultValue = "${session}", readonly = true)
   private MavenSession session;
-  
+
   /**
    * The source files for the multi tree word list.
    */
@@ -198,6 +198,7 @@
   @Parameter(required = false)
   private String[] buildPaths;
 
+  @Override
   public void execute() throws MojoExecutionException, MojoFailureException {
 
     if (!typeSystemOutputDirectory.exists()) {
@@ -212,8 +213,7 @@
 
     this.project.addCompileSourceRoot(this.typeSystemOutputDirectory.getPath());
     this.project.addCompileSourceRoot(this.analysisEngineOutputDirectory.getPath());
-    
-    
+
     String[] files = null;
     if (scriptFiles != null) {
       try {
@@ -239,18 +239,18 @@
     List<File> filesToBuild = new ArrayList<File>();
     for (String each : files) {
       File file = new File(each);
-      
+
       // TODO should check the correct package!
       List<File> possibleDescriptors = getPossibleDescriptors(file);
-      if(possibleDescriptors == null) {
+      if (possibleDescriptors == null) {
         filesToBuild.add(file);
         continue;
       }
-      
+
       long scriptModified = file.lastModified();
       for (File eachDescriptor : possibleDescriptors) {
         long descModified = eachDescriptor.lastModified();
-        if(scriptModified > descModified) {
+        if (scriptModified > descModified) {
           filesToBuild.add(file);
           break;
         }
@@ -262,8 +262,6 @@
       return;
     }
 
-   
-    
     RutaDescriptorFactory factory = new RutaDescriptorFactory();
     if (typeSystemTemplate != null) {
       try {
@@ -292,8 +290,7 @@
 
     List<String> extensions = getExtensionsFromClasspath(classloader);
     options.setLanguageExtensions(extensions);
-    
-    
+
     if (maxBuildRetries == -1) {
       maxBuildRetries = filesToBuild.size() * 3;
     }
@@ -322,9 +319,8 @@
         getLog().warn("Failed to parse UIMA Ruta script: " + scriptName, re);
       } catch (IOException ioe) {
         toBuild.add(descriptorInformation);
-        getLog().warn(
-                "Tried to build " + scriptName
-                        + ", but failed (dependency probably not yet build): " + ioe.getMessage());
+        getLog().warn("Tried to build " + scriptName
+                + ", but failed (dependency probably not yet build): " + ioe.getMessage());
         count++;
       } catch (SAXException saxe) {
         getLog().warn("Failed to write descriptor: " + scriptName, saxe);
@@ -376,7 +372,6 @@
 
     return result;
   }
-  
 
   private List<String> getExtensionsFromClasspath(ClassLoader classloader) {
     List<String> result = new ArrayList<String>();
@@ -398,18 +393,18 @@
   }
 
   private void createDescriptors(RutaDescriptorFactory factory, RutaBuildOptions options,
-          RutaDescriptorInformation descriptorInformation) throws IOException,
-          RecognitionException, InvalidXMLException, ResourceInitializationException,
-          URISyntaxException, SAXException {
+          RutaDescriptorInformation descriptorInformation) throws IOException, RecognitionException,
+          InvalidXMLException, ResourceInitializationException, URISyntaxException, SAXException {
     String packageString = "";
     if (!StringUtils.isBlank(descriptorInformation.getPackageString())) {
       packageString = descriptorInformation.getPackageString().replaceAll("[.]", "/").concat("/");
     }
-    String engineOutput = new File(analysisEngineOutputDirectory, packageString
-            + descriptorInformation.getScriptName() + analysisEngineSuffix + ".xml")
-            .getAbsolutePath();
-    String typeSystemOutput = new File(typeSystemOutputDirectory, packageString
-            + descriptorInformation.getScriptName() + typeSystemSuffix + ".xml").getAbsolutePath();
+    String engineOutput = new File(analysisEngineOutputDirectory,
+            packageString + descriptorInformation.getScriptName() + analysisEngineSuffix + ".xml")
+                    .getAbsolutePath();
+    String typeSystemOutput = new File(typeSystemOutputDirectory,
+            packageString + descriptorInformation.getScriptName() + typeSystemSuffix + ".xml")
+                    .getAbsolutePath();
     Pair<AnalysisEngineDescription, TypeSystemDescription> descriptions = factory
             .createDescriptions(engineOutput, typeSystemOutput, descriptorInformation, options,
                     scriptPaths, descriptorPaths, resourcePaths);
@@ -434,10 +429,6 @@
     }
   }
 
-  /**
-   * Create a class loader which covers the classes compiled in the current project and all
-   * dependencies.
-   */
   public static URLClassLoader getClassloader(MavenProject project, Log aLog)
           throws MojoExecutionException {
 
@@ -446,12 +437,12 @@
     for (String element : project.getCompileSourceRoots()) {
       try {
         urls.add(new File(element).toURI().toURL());
-        if(aLog != null) {
+        if (aLog != null) {
           aLog.debug("Classpath entry: " + element);
         }
       } catch (MalformedURLException e) {
-        throw new MojoExecutionException("Unable to assemble classpath: "
-                + ExceptionUtils.getRootCauseMessage(e), e);
+        throw new MojoExecutionException(
+                "Unable to assemble classpath: " + ExceptionUtils.getRootCauseMessage(e), e);
       }
     }
 
@@ -459,31 +450,31 @@
       try {
         String directory = element.getDirectory();
         urls.add(new File(directory).toURI().toURL());
-        if(aLog != null) {
+        if (aLog != null) {
           aLog.debug("Classpath entry: " + directory);
         }
       } catch (MalformedURLException e) {
-        throw new MojoExecutionException("Unable to assemble classpath: "
-                + ExceptionUtils.getRootCauseMessage(e), e);
+        throw new MojoExecutionException(
+                "Unable to assemble classpath: " + ExceptionUtils.getRootCauseMessage(e), e);
       }
     }
 
     try {
       for (Object object : project.getCompileClasspathElements()) {
         String path = (String) object;
-        if(aLog != null) {
+        if (aLog != null) {
           aLog.debug("Classpath entry: " + object);
         }
         urls.add(new File(path).toURI().toURL());
       }
     } catch (IOException e) {
-      throw new MojoExecutionException("Unable to assemble classpath: "
-              + ExceptionUtils.getRootCauseMessage(e), e);
+      throw new MojoExecutionException(
+              "Unable to assemble classpath: " + ExceptionUtils.getRootCauseMessage(e), e);
     } catch (DependencyResolutionRequiredException e) {
-      throw new MojoExecutionException("Unable to resolve dependencies: "
-              + ExceptionUtils.getRootCauseMessage(e), e);
+      throw new MojoExecutionException(
+              "Unable to resolve dependencies: " + ExceptionUtils.getRootCauseMessage(e), e);
     }
-    Set<Artifact> artifacts = (Set<Artifact>) project.getDependencyArtifacts();
+    Set<Artifact> artifacts = project.getDependencyArtifacts();
     if (artifacts != null) {
       for (Artifact dep : artifacts) {
         try {
@@ -491,9 +482,9 @@
             // Unresolved file because it is in the wrong scope (e.g. test?)
             continue;
           }
-          if(aLog != null) {
-          aLog.debug("Classpath entry: " + dep.getGroupId() + ":" + dep.getArtifactId() + ":"
-                  + dep.getVersion() + " -> " + dep.getFile());
+          if (aLog != null) {
+            aLog.debug("Classpath entry: " + dep.getGroupId() + ":" + dep.getArtifactId() + ":"
+                    + dep.getVersion() + " -> " + dep.getFile());
           }
           urls.add(dep.getFile().toURI().toURL());
         } catch (Exception e) {
diff --git a/ruta-parent/pom.xml b/ruta-parent/pom.xml
index 06ad9b8..a317a04 100644
--- a/ruta-parent/pom.xml
+++ b/ruta-parent/pom.xml
@@ -129,6 +129,7 @@
     </postNoticeText>
     <uimaVersion>2.10.3</uimaVersion>
     <uimafit-version>2.4.0</uimafit-version>
+    <spring-version>4.3.22.RELEASE</spring-version>
      <!-- 
      BACKWARD_COMPATIBLE_IMPLEMENTER - patch version (=.=.+)
      BACKWARD_COMPATIBLE_USER        - minor version (=.+.0)
@@ -138,9 +139,9 @@
     <compat.level>NON_BACKWARD_COMPATIBLE</compat.level>
     <compat.previous.version>2.6.0</compat.previous.version>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.target>1.7</maven.compiler.target>
-    <maven.compiler.source>1.7</maven.compiler.source>
-    <api_check_oldVersion>2.6.0</api_check_oldVersion>
+    <maven.compiler.target>1.8</maven.compiler.target>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <api_check_oldVersion>2.6.1</api_check_oldVersion>
   </properties>
   
   <dependencyManagement>
@@ -310,7 +311,7 @@
           <plugin>              
             <groupId>com.github.siom79.japicmp</groupId>
             <artifactId>japicmp-maven-plugin</artifactId>
-            <version>0.9.3</version>
+            <version>0.13.0</version>
             <configuration>
               <oldVersion>
                 <dependency>
