diff --git a/ruta-parent/pom.xml b/ruta-parent/pom.xml
index 5492b12..c99d1d5 100644
--- a/ruta-parent/pom.xml
+++ b/ruta-parent/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.apache.uima</groupId>
     <artifactId>parent-pom</artifactId>
-    <version>13</version>
+    <version>14-SNAPSHOT</version>
     <relativePath />
   </parent>
 
@@ -242,140 +242,4 @@
       </plugin>
     </plugins>
   </build>
-  <profiles>
-    <profile>
-      <id>enforce-compatibility</id>
-      <activation>
-        <file>
-          <exists>marker-file-identifying-api-compatibility-check</exists>
-        </file>
-      </activation>
-      <build>
-        <!-- https://issues.apache.org/jira/browse/UIMA-5307
-
-          <plugin>
-          <artifactId>maven-enforcer-plugin</artifactId>
-          <dependencies>
-          <dependency>
-          <groupId>org.semver</groupId>
-          <artifactId>enforcer-rule</artifactId>
-          <version>0.9.33</version>
-          </dependency>
-          </dependencies>
-          <executions>
-          <execution>
-          <id>enforce-compatibility</id>
-          <phase>verify</phase>
-          <goals>
-          <goal>enforce</goal>
-          </goals>
-          <configuration>
-          <rules>
-          <requireBackwardCompatibility implementation="org.semver.enforcer.RequireBackwardCompatibility">
-          <previousVersion>${compat.previous.version}</previousVersion>
-          <dumpDetails>true</dumpDetails>
-          <compatibilityType>${compat.level}</compatibilityType>
-          <excludes>
-          <exclude>**/impl/**/*</exclude>
-          <exclude>**/internal/**/*</exclude>
-          <exclude>org/apache/uima/cas/CASRuntimeException</exclude>
-          <exclude>org/apache/uima/cas/SerialFormat</exclude>
-          <exclude>org/apache/uima/util/CasIOUtils</exclude>
-          <exclude>org/apache/uima/util/CasLoadMode</exclude>
-          </excludes>
-          </requireBackwardCompatibility>
-          </rules>
-          </configuration>
-          </execution>
-          </executions>
-          </plugin>
-        -->
-        <pluginManagement>
-          <plugins>
-            <plugin>
-              <groupId>org.apache.rat</groupId>
-              <artifactId>apache-rat-plugin</artifactId>
-              <executions>
-                <execution>
-                  <id>default-cli</id>
-                  <configuration>
-                    <consoleOutput>true</consoleOutput>
-                    <excludes combine.children="append">
-                      <exclude>**/api-change-report/**/*.*</exclude>
-                      &gt;
-                    </excludes>
-                  </configuration>
-                </execution>
-              </executions>
-            </plugin>
-          </plugins>
-        </pluginManagement>
-
-        <plugins>
-          <!-- https://siom79.github.io/japicmp/MavenPlugin.html -->
-          <plugin>
-            <groupId>com.github.siom79.japicmp</groupId>
-            <artifactId>japicmp-maven-plugin</artifactId>
-            <version>0.13.0</version>
-            <configuration>
-              <skip>true</skip>
-              <oldVersion>
-                <dependency>
-                  <groupId>${project.groupId}</groupId>
-                  <artifactId>${project.artifactId}</artifactId>
-                  <version>${api_check_oldVersion}</version>
-                </dependency>
-              </oldVersion>
-              <parameter>
-                <onlyModified>true</onlyModified>
-                <excludes>
-                  <exclude>org.apache.uima.ruta.type</exclude>
-                  <exclude>org.apache.uima.ruta.parser.RutaParser</exclude>
-                </excludes>
-                <!-- filter out classes with impl in their package or class name -->
-                <!-- <postAnalysisScript>${project.basedir}/../ruta-parent/src/main/groovy/api-report.groovy</postAnalysisScript> -->
-              </parameter>
-            </configuration>
-            <executions>
-              <execution>
-                <phase>verify</phase>
-                <goals>
-                  <goal>cmp</goal>
-                </goals>
-              </execution>
-            </executions>
-          </plugin>
-
-          <!-- This copy is to have the api change report included in the source distribution -->
-          <plugin>
-            <artifactId>maven-antrun-plugin</artifactId>
-            <executions>
-              <execution>
-                <id>copy-API-change-report</id>
-                <phase>install</phase>
-                <!-- must follow verify -->
-                <goals>
-                  <goal>run</goal>
-                </goals>
-                <configuration>
-                  <target>
-                    <taskdef name="if" classname="net.sf.antcontrib.logic.IfTask" />
-                    <if>
-                      <available file="${project.build.directory}/japicmp/" />
-                      <then>
-                        <copy toDir="${basedir}/api-change-report">
-                          <fileset dir="${project.build.directory}/japicmp" />
-                        </copy>
-                      </then>
-                    </if>
-                  </target>
-                </configuration>
-              </execution>
-            </executions>
-
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-  </profiles>
 </project>
diff --git a/ruta-parent/src/main/groovy/api-report.groovy b/ruta-parent/src/main/groovy/api-report.groovy
deleted file mode 100644
index 8809e6c..0000000
--- a/ruta-parent/src/main/groovy/api-report.groovy
+++ /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.
- */
-  def it = jApiClasses.iterator()
-  while (it.hasNext()) {
-    def jApiClass = it.next()
-    def fqn = jApiClass.getFullyQualifiedName()
-    if (fqn.contains("impl")) {
-      it.remove()
-    }
-  }  
-  return jApiClasses
\ No newline at end of file
