diff --git a/GCL/pom.xml b/GCL/pom.xml
index 4a338c9..e33c4fe 100644
--- a/GCL/pom.xml
+++ b/GCL/pom.xml
@@ -1,32 +1,33 @@
 <?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">
+<!--
+
+  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>
 
   <parent>
     <groupId>org.apache.royale.typedefs</groupId>
     <artifactId>royale-typedefs-parent</artifactId>
-    <version>0.9.7</version>
+    <version>0.9.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>royale-typedefs-gcl</artifactId>
-  <version>0.9.7</version>
+  <version>0.9.7-SNAPSHOT</version>
   <packaging>swc</packaging>
 
   <name>Apache Royale: TypeDefs: GCL</name>
@@ -50,11 +51,11 @@
     <dependency>
       <groupId>org.apache.royale.typedefs</groupId>
       <artifactId>royale-typedefs-js</artifactId>
-      <version>0.9.7</version>
+      <version>0.9.7-SNAPSHOT</version>
       <type>swc</type>
       <classifier>typedefs</classifier>
       <scope>runtime</scope>
     </dependency>
   </dependencies>
 
-<properties><project.build.outputTimestamp>2020-05-05T15:56:18Z</project.build.outputTimestamp></properties></project>
+</project>
diff --git a/cordova/pom.xml b/cordova/pom.xml
index 076ff72..88bd238 100644
--- a/cordova/pom.xml
+++ b/cordova/pom.xml
@@ -1,39 +1,40 @@
 <?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">
+<!--
+
+  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>
 
   <parent>
     <groupId>org.apache.royale.typedefs</groupId>
     <artifactId>royale-typedefs-parent</artifactId>
-    <version>0.9.7</version>
+    <version>0.9.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>royale-typedefs-cordova</artifactId>
-  <version>0.9.7</version>
+  <version>0.9.7-SNAPSHOT</version>
   <packaging>swc</packaging>
 
   <name>Apache Royale: TypeDefs: Cordova</name>
 
   <properties>
     <cordova.version>4.11</cordova.version>
-  <project.build.outputTimestamp>2020-05-05T15:56:18Z</project.build.outputTimestamp></properties>
+  </properties>
 
   <build>
     <plugins>
@@ -67,7 +68,7 @@
     <dependency>
       <groupId>org.apache.royale.typedefs</groupId>
       <artifactId>royale-typedefs-js</artifactId>
-      <version>0.9.7</version>
+      <version>0.9.7-SNAPSHOT</version>
       <type>swc</type>
       <classifier>typedefs</classifier>
       <scope>runtime</scope>
diff --git a/createjs/pom.xml b/createjs/pom.xml
index f42309e..e6a43cb 100644
--- a/createjs/pom.xml
+++ b/createjs/pom.xml
@@ -1,32 +1,33 @@
 <?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">
+<!--
+
+  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>
 
   <parent>
     <groupId>org.apache.royale.typedefs</groupId>
     <artifactId>royale-typedefs-parent</artifactId>
-    <version>0.9.7</version>
+    <version>0.9.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>royale-typedefs-createjs</artifactId>
-  <version>0.9.7</version>
+  <version>0.9.7-SNAPSHOT</version>
   <packaging>swc</packaging>
 
   <name>Apache Royale: TypeDefs: CreateJS</name>
@@ -34,7 +35,7 @@
   <properties>
     <createjs.version>0.8.0</createjs.version>
     <tweenjs.version>0.6.2</tweenjs.version>
-  <project.build.outputTimestamp>2020-05-05T15:56:18Z</project.build.outputTimestamp></properties>
+  </properties>
 
   <build>
     <plugins>
@@ -77,147 +78,147 @@
               <name>externs/createjs.js</name>
               <path>../src/main/javascript/createjs.js</path>
             </include-file>
-            <!--
-            <include-file>
-              <name>externs/AlphaMapFilter.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/filters/AlphaMapFilter.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/AlphaMaskFilter.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/filters/AlphaMaskFilter.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/BlurFilter.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/filters/BlurFilter.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/ColorFilter.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/filters/ColorFilter.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/ColorMatrix.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/filters/ColorMatrix.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/ColorMatrixFilter.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/filters/ColorMatrixFilter.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/Filter.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/filters/Filter.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/Bitmap.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/display/Bitmap.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/BitmapText.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/display/BitmapText.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/Container.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/display/Container.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/DisplayObject.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/display/DisplayObject.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/DOMElement.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/display/DOMElement.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/Graphics.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/display/Graphics.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/MovieClip.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/display/MovieClip.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/Shadow.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/display/Shadow.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/Shape.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/display/Shape.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/Sprite.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/display/Sprite.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/SpriteContainer.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/display/SpriteContainer.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/SpriteSheet.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/display/SpriteSheet.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/SpriteStage.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/display/SpriteStage.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/Stage.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/display/Stage.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/Text.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/display/Text.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/ButtonHelper.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/ui/ButtonHelper.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/DisplayProps.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/geom/DisplayProps.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/Matrix2D.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/geom/Matrix2D.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/Point.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/geom/Point.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/Rectangle.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/geom/Rectangle.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/Ease.js</name>
-              <path>downloads/TweenJS-0.6.2/src/tweenjs/Ease.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/Tween.js</name>
-              <path>downloads/TweenJS-0.6.2/src/tweenjs/Tween.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/Timeline.js</name>
-              <path>downloads/TweenJS-0.6.2/src/tweenjs/Timeline.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/Event.js</name>
-              <path>downloads/EaselJS-0.8.0/src/createjs/events/Event.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/EventDispatcher.js</name>
-              <path>downloads/EaselJS-0.8.0/src/createjs/events/EventDispatcher.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/MouseEvent.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/events/MouseEvent.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/SpriteSheetBuilder.js</name>
-              <path>downloads/EaselJS-0.8.0/src/easeljs/utils/SpriteSheetBuilder.js</path>
-            </include-file>
-            <include-file>
-              <name>externs/Ticker.js</name>
-              <path>downloads/EaselJS-0.8.0/src/createjs/utils/Ticker.js</path>
-            </include-file>
+            <!--
+            <include-file>
+              <name>externs/AlphaMapFilter.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/filters/AlphaMapFilter.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/AlphaMaskFilter.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/filters/AlphaMaskFilter.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/BlurFilter.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/filters/BlurFilter.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/ColorFilter.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/filters/ColorFilter.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/ColorMatrix.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/filters/ColorMatrix.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/ColorMatrixFilter.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/filters/ColorMatrixFilter.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/Filter.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/filters/Filter.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/Bitmap.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/display/Bitmap.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/BitmapText.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/display/BitmapText.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/Container.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/display/Container.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/DisplayObject.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/display/DisplayObject.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/DOMElement.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/display/DOMElement.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/Graphics.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/display/Graphics.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/MovieClip.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/display/MovieClip.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/Shadow.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/display/Shadow.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/Shape.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/display/Shape.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/Sprite.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/display/Sprite.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/SpriteContainer.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/display/SpriteContainer.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/SpriteSheet.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/display/SpriteSheet.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/SpriteStage.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/display/SpriteStage.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/Stage.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/display/Stage.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/Text.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/display/Text.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/ButtonHelper.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/ui/ButtonHelper.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/DisplayProps.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/geom/DisplayProps.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/Matrix2D.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/geom/Matrix2D.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/Point.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/geom/Point.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/Rectangle.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/geom/Rectangle.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/Ease.js</name>
+              <path>downloads/TweenJS-0.6.2/src/tweenjs/Ease.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/Tween.js</name>
+              <path>downloads/TweenJS-0.6.2/src/tweenjs/Tween.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/Timeline.js</name>
+              <path>downloads/TweenJS-0.6.2/src/tweenjs/Timeline.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/Event.js</name>
+              <path>downloads/EaselJS-0.8.0/src/createjs/events/Event.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/EventDispatcher.js</name>
+              <path>downloads/EaselJS-0.8.0/src/createjs/events/EventDispatcher.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/MouseEvent.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/events/MouseEvent.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/SpriteSheetBuilder.js</name>
+              <path>downloads/EaselJS-0.8.0/src/easeljs/utils/SpriteSheetBuilder.js</path>
+            </include-file>
+            <include-file>
+              <name>externs/Ticker.js</name>
+              <path>downloads/EaselJS-0.8.0/src/createjs/utils/Ticker.js</path>
+            </include-file>
              -->
           </includeFiles>
           <skipSwc>true</skipSwc>
@@ -230,7 +231,7 @@
     <dependency>
       <groupId>org.apache.royale.typedefs</groupId>
       <artifactId>royale-typedefs-js</artifactId>
-      <version>0.9.7</version>
+      <version>0.9.7-SNAPSHOT</version>
       <type>swc</type>
       <classifier>typedefs</classifier>
       <scope>runtime</scope>
diff --git a/google_maps/pom.xml b/google_maps/pom.xml
index 4744f8b..31da5f3 100644
--- a/google_maps/pom.xml
+++ b/google_maps/pom.xml
@@ -1,39 +1,40 @@
 <?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">
+<!--
+
+  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>
 
   <parent>
     <groupId>org.apache.royale.typedefs</groupId>
     <artifactId>royale-typedefs-parent</artifactId>
-    <version>0.9.7</version>
+    <version>0.9.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>royale-typedefs-googlemaps</artifactId>
-  <version>0.9.7</version>
+  <version>0.9.7-SNAPSHOT</version>
   <packaging>swc</packaging>
 
   <name>Apache Royale: TypeDefs: GoogleMaps</name>
 
   <properties>
     <googlemaps.version>v3_11</googlemaps.version>
-  <project.build.outputTimestamp>2020-05-05T15:56:18Z</project.build.outputTimestamp></properties>
+  </properties>
 
   <build>
     <plugins>
@@ -88,7 +89,7 @@
     <dependency>
       <groupId>org.apache.royale.typedefs</groupId>
       <artifactId>royale-typedefs-js</artifactId>
-      <version>0.9.7</version>
+      <version>0.9.7-SNAPSHOT</version>
       <type>swc</type>
       <classifier>typedefs</classifier>
       <scope>runtime</scope>
diff --git a/jasmine/pom.xml b/jasmine/pom.xml
index b0e6cb6..dc27bb1 100644
--- a/jasmine/pom.xml
+++ b/jasmine/pom.xml
@@ -1,39 +1,40 @@
 <?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">
+<!--
+
+  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>
 
   <parent>
     <groupId>org.apache.royale.typedefs</groupId>
     <artifactId>royale-typedefs-parent</artifactId>
-    <version>0.9.7</version>
+    <version>0.9.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>royale-typedefs-jasmine</artifactId>
-  <version>0.9.7</version>
+  <version>0.9.7-SNAPSHOT</version>
   <packaging>swc</packaging>
 
   <name>Apache Royale: TypeDefs: Jasmine</name>
 
   <properties>
     <jasmine.version>2.0</jasmine.version>
-  <project.build.outputTimestamp>2020-05-05T15:56:18Z</project.build.outputTimestamp></properties>
+  </properties>
 
   <build>
     <plugins>
@@ -100,7 +101,7 @@
     <dependency>
       <groupId>org.apache.royale.typedefs</groupId>
       <artifactId>royale-typedefs-js</artifactId>
-      <version>0.9.7</version>
+      <version>0.9.7-SNAPSHOT</version>
       <type>swc</type>
       <classifier>typedefs</classifier>
       <scope>runtime</scope>
diff --git a/jquery/pom.xml b/jquery/pom.xml
index bad1a03..d2c06a3 100644
--- a/jquery/pom.xml
+++ b/jquery/pom.xml
@@ -1,39 +1,40 @@
 <?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">
+<!--
+
+  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>
 
   <parent>
     <groupId>org.apache.royale.typedefs</groupId>
     <artifactId>royale-typedefs-parent</artifactId>
-    <version>0.9.7</version>
+    <version>0.9.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>royale-typedefs-jquery</artifactId>
-  <version>0.9.7</version>
+  <version>0.9.7-SNAPSHOT</version>
   <packaging>swc</packaging>
 
   <name>Apache Royale: TypeDefs: JQuery</name>
 
   <properties>
     <jquery.version>1.9</jquery.version>
-  <project.build.outputTimestamp>2020-05-05T15:56:18Z</project.build.outputTimestamp></properties>
+  </properties>
 
   <build>
     <plugins>
@@ -154,7 +155,7 @@
     <dependency>
       <groupId>org.apache.royale.typedefs</groupId>
       <artifactId>royale-typedefs-js</artifactId>
-      <version>0.9.7</version>
+      <version>0.9.7-SNAPSHOT</version>
       <type>swc</type>
       <classifier>typedefs</classifier>
       <scope>runtime</scope>
diff --git a/js/pom.xml b/js/pom.xml
index 903adf9..f6aed6d 100644
--- a/js/pom.xml
+++ b/js/pom.xml
@@ -1,32 +1,33 @@
 <?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">
+<!--
+
+  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>
 
   <parent>
     <groupId>org.apache.royale.typedefs</groupId>
     <artifactId>royale-typedefs-parent</artifactId>
-    <version>0.9.7</version>
+    <version>0.9.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>royale-typedefs-js</artifactId>
-  <version>0.9.7</version>
+  <version>0.9.7-SNAPSHOT</version>
   <packaging>swc</packaging>
 
   <name>Apache Royale: TypeDefs: JS</name>
@@ -49,9 +50,9 @@
             </configuration>
           </execution>
         </executions>
-        <!--
-            Dependency to the closure compiler externs artifact so
-            the "unpack-resources" goal can find the externs.zip
+        <!--
+            Dependency to the closure compiler externs artifact so
+            the "unpack-resources" goal can find the externs.zip
         -->
         <dependencies>
           <dependency>
@@ -337,4 +338,4 @@
     </plugins>
   </build>
 
-<properties><project.build.outputTimestamp>2020-05-05T15:56:18Z</project.build.outputTimestamp></properties></project>
+</project>
diff --git a/node/pom.xml b/node/pom.xml
index bb28079..8bc88ac 100644
--- a/node/pom.xml
+++ b/node/pom.xml
@@ -1,39 +1,40 @@
 <?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">
+<!--
+
+  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>
 
   <parent>
     <groupId>org.apache.royale.typedefs</groupId>
     <artifactId>royale-typedefs-parent</artifactId>
-    <version>0.9.7</version>
+    <version>0.9.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>royale-typedefs-node</artifactId>
-  <version>0.9.7</version>
+  <version>0.9.7-SNAPSHOT</version>
   <packaging>swc</packaging>
 
   <name>Apache Royale: TypeDefs: Node</name>
 
   <properties>
     <closure.version>20181210</closure.version>
-  <project.build.outputTimestamp>2020-05-05T15:56:18Z</project.build.outputTimestamp></properties>
+  </properties>
   
   <build>
     <plugins>
@@ -50,9 +51,9 @@
             </goals>
             <configuration>
                 <url>https://github.com/royale-extras/closure-compiler/archive/royale.zip</url>
-              <!--
-                  Give it a number matching the date so we can
-                  trigger a new download by updating the date
+              <!--
+                  Give it a number matching the date so we can
+                  trigger a new download by updating the date
               -->
               <outputFileName>node-externs.zip</outputFileName>
               <outputDirectory>${project.build.directory}/downloads</outputDirectory>
@@ -222,7 +223,7 @@
     <dependency>
       <groupId>org.apache.royale.typedefs</groupId>
       <artifactId>royale-typedefs-js</artifactId>
-      <version>0.9.7</version>
+      <version>0.9.7-SNAPSHOT</version>
       <type>swc</type>
       <classifier>typedefs</classifier>
       <scope>runtime</scope>
diff --git a/pom.xml b/pom.xml
index 8f9463f..8ad2802 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,22 +1,23 @@
 <?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">
+<!--
+
+  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>
 
   <parent>
@@ -27,7 +28,7 @@
 
   <groupId>org.apache.royale.typedefs</groupId>
   <artifactId>royale-typedefs-parent</artifactId>
-  <version>0.9.7</version>
+  <version>0.9.7-SNAPSHOT</version>
   <packaging>pom</packaging>
 
   <name>Apache Royale: TypeDefs: Parent</name>
@@ -36,7 +37,7 @@
     <connection>scm:git:https://gitbox.apache.org/repos/asf/royale-typedefs.git</connection>
     <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/royale-typedefs.git</developerConnection>
     <url>https://github.com/apache/royale-typedefs</url>
-    <tag>org.apache.royale.typedefs-0.9.7-rc4</tag>
+    <tag>release/0.9.7</tag>
   </scm>
 
   <properties>
@@ -48,7 +49,7 @@
     <royale.compiler.version>0.9.7</royale.compiler.version>
 
     <release-profiles>apache-release</release-profiles>
-  <project.build.outputTimestamp>2020-05-05T15:56:18Z</project.build.outputTimestamp></properties>
+  </properties>
 
   <!-- Only configure the site distribution as the rest is handled by the apache parent -->
   <distributionManagement>
@@ -110,11 +111,11 @@
               <excludes>
                 <!-- Patch files aren't supposed to have headers -->
                 <exclude>**/*.patch</exclude>
-                <!--
-                 Exclude any eventually existing content of target directories.
-                 Some times when building with a bigger maven reactor and then
-                 with a smaller one, RAT will complain about stuff still in the
-                 target directories. We don't want that.
+                <!--
+                 Exclude any eventually existing content of target directories.
+                 Some times when building with a bigger maven reactor and then
+                 with a smaller one, RAT will complain about stuff still in the
+                 target directories. We don't want that.
                  -->
                 <exclude>**/target/**</exclude>
                 <exclude>**/release-dir/**</exclude>
@@ -180,9 +181,9 @@
   </build>
 
   <profiles>
-    <!--
-      This profile enables the changes required to do releases on the Royale CI server.
-      It should not be used otherwise.
+    <!--
+      This profile enables the changes required to do releases on the Royale CI server.
+      It should not be used otherwise.
     -->
     <profile>
       <id>royale-release</id>
@@ -197,11 +198,11 @@
         <repository>
           <id>apache.releases.https</id>
           <name>Apache Release Distribution Repository</name>
-          <!--
-            'maven.multiModuleProjectDirectory' is a property introduced with maven 3.3.1 ...
-            don't worry if your IDE is complaining.
-            Also this will be set to the 'target/checkout' directory the output will be in
-            'target/local-release-dir'.
+          <!--
+            'maven.multiModuleProjectDirectory' is a property introduced with maven 3.3.1 ...
+            don't worry if your IDE is complaining.
+            Also this will be set to the 'target/checkout' directory the output will be in
+            'target/local-release-dir'.
           -->
           <url>file://${maven.multiModuleProjectDirectory}/../local-release-dir</url>
         </repository>
@@ -269,9 +270,9 @@
             <groupId>com.theoryinpractise</groupId>
             <artifactId>reproducible-maven-plugin</artifactId>
           </plugin>
-          <!--
-            Configure the release plugin to add the ${project.build.outputTimestamp} in the release prepare
-            phase and to remove it again when preparing the next development iteration
+          <!--
+            Configure the release plugin to add the ${project.build.outputTimestamp} in the release prepare
+            phase and to remove it again when preparing the next development iteration
           -->
           <plugin>
             <groupId>org.apache.maven.plugins</groupId>
@@ -293,8 +294,8 @@
               </additionalCompilerOptions>
             </configuration>
           </plugin>
-          <!--
-            Create MD5 and SHA512 checksum files for the release artifacts.
+          <!--
+            Create MD5 and SHA512 checksum files for the release artifacts.
           -->
           <plugin>
             <groupId>net.nicoulaj.maven.plugins</groupId>
@@ -327,3 +328,4 @@
   </profiles>
 
 </project>
+
