diff --git a/GCL/pom.xml b/GCL/pom.xml
index e33c4fe..1bcc812 100644
--- a/GCL/pom.xml
+++ b/GCL/pom.xml
@@ -1,33 +1,32 @@
 <?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-SNAPSHOT</version>
+    <version>0.9.7</version>
   </parent>
 
   <artifactId>royale-typedefs-gcl</artifactId>
-  <version>0.9.7-SNAPSHOT</version>
+  <version>0.9.7</version>
   <packaging>swc</packaging>
 
   <name>Apache Royale: TypeDefs: GCL</name>
@@ -51,11 +50,11 @@
     <dependency>
       <groupId>org.apache.royale.typedefs</groupId>
       <artifactId>royale-typedefs-js</artifactId>
-      <version>0.9.7-SNAPSHOT</version>
+      <version>0.9.7</version>
       <type>swc</type>
       <classifier>typedefs</classifier>
       <scope>runtime</scope>
     </dependency>
   </dependencies>
 
-</project>
+<properties><project.build.outputTimestamp>2020-05-07T16:03:38Z</project.build.outputTimestamp></properties></project>
diff --git a/cordova/pom.xml b/cordova/pom.xml
index 88bd238..b69d37b 100644
--- a/cordova/pom.xml
+++ b/cordova/pom.xml
@@ -1,40 +1,39 @@
 <?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-SNAPSHOT</version>
+    <version>0.9.7</version>
   </parent>
 
   <artifactId>royale-typedefs-cordova</artifactId>
-  <version>0.9.7-SNAPSHOT</version>
+  <version>0.9.7</version>
   <packaging>swc</packaging>
 
   <name>Apache Royale: TypeDefs: Cordova</name>
 
   <properties>
     <cordova.version>4.11</cordova.version>
-  </properties>
+  <project.build.outputTimestamp>2020-05-07T16:03:38Z</project.build.outputTimestamp></properties>
 
   <build>
     <plugins>
@@ -68,7 +67,7 @@
     <dependency>
       <groupId>org.apache.royale.typedefs</groupId>
       <artifactId>royale-typedefs-js</artifactId>
-      <version>0.9.7-SNAPSHOT</version>
+      <version>0.9.7</version>
       <type>swc</type>
       <classifier>typedefs</classifier>
       <scope>runtime</scope>
diff --git a/createjs/pom.xml b/createjs/pom.xml
index e6a43cb..8c464dd 100644
--- a/createjs/pom.xml
+++ b/createjs/pom.xml
@@ -1,33 +1,32 @@
 <?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-SNAPSHOT</version>
+    <version>0.9.7</version>
   </parent>
 
   <artifactId>royale-typedefs-createjs</artifactId>
-  <version>0.9.7-SNAPSHOT</version>
+  <version>0.9.7</version>
   <packaging>swc</packaging>
 
   <name>Apache Royale: TypeDefs: CreateJS</name>
@@ -35,7 +34,7 @@
   <properties>
     <createjs.version>0.8.0</createjs.version>
     <tweenjs.version>0.6.2</tweenjs.version>
-  </properties>
+  <project.build.outputTimestamp>2020-05-07T16:03:38Z</project.build.outputTimestamp></properties>
 
   <build>
     <plugins>
@@ -78,147 +77,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>
@@ -231,7 +230,7 @@
     <dependency>
       <groupId>org.apache.royale.typedefs</groupId>
       <artifactId>royale-typedefs-js</artifactId>
-      <version>0.9.7-SNAPSHOT</version>
+      <version>0.9.7</version>
       <type>swc</type>
       <classifier>typedefs</classifier>
       <scope>runtime</scope>
diff --git a/google_maps/pom.xml b/google_maps/pom.xml
index 31da5f3..877e5b6 100644
--- a/google_maps/pom.xml
+++ b/google_maps/pom.xml
@@ -1,40 +1,39 @@
 <?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-SNAPSHOT</version>
+    <version>0.9.7</version>
   </parent>
 
   <artifactId>royale-typedefs-googlemaps</artifactId>
-  <version>0.9.7-SNAPSHOT</version>
+  <version>0.9.7</version>
   <packaging>swc</packaging>
 
   <name>Apache Royale: TypeDefs: GoogleMaps</name>
 
   <properties>
     <googlemaps.version>v3_11</googlemaps.version>
-  </properties>
+  <project.build.outputTimestamp>2020-05-07T16:03:38Z</project.build.outputTimestamp></properties>
 
   <build>
     <plugins>
@@ -89,7 +88,7 @@
     <dependency>
       <groupId>org.apache.royale.typedefs</groupId>
       <artifactId>royale-typedefs-js</artifactId>
-      <version>0.9.7-SNAPSHOT</version>
+      <version>0.9.7</version>
       <type>swc</type>
       <classifier>typedefs</classifier>
       <scope>runtime</scope>
diff --git a/jasmine/pom.xml b/jasmine/pom.xml
index dc27bb1..9f3f98c 100644
--- a/jasmine/pom.xml
+++ b/jasmine/pom.xml
@@ -1,40 +1,39 @@
 <?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-SNAPSHOT</version>
+    <version>0.9.7</version>
   </parent>
 
   <artifactId>royale-typedefs-jasmine</artifactId>
-  <version>0.9.7-SNAPSHOT</version>
+  <version>0.9.7</version>
   <packaging>swc</packaging>
 
   <name>Apache Royale: TypeDefs: Jasmine</name>
 
   <properties>
     <jasmine.version>2.0</jasmine.version>
-  </properties>
+  <project.build.outputTimestamp>2020-05-07T16:03:38Z</project.build.outputTimestamp></properties>
 
   <build>
     <plugins>
@@ -101,7 +100,7 @@
     <dependency>
       <groupId>org.apache.royale.typedefs</groupId>
       <artifactId>royale-typedefs-js</artifactId>
-      <version>0.9.7-SNAPSHOT</version>
+      <version>0.9.7</version>
       <type>swc</type>
       <classifier>typedefs</classifier>
       <scope>runtime</scope>
diff --git a/jquery/pom.xml b/jquery/pom.xml
index d2c06a3..497329c 100644
--- a/jquery/pom.xml
+++ b/jquery/pom.xml
@@ -1,40 +1,39 @@
 <?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-SNAPSHOT</version>
+    <version>0.9.7</version>
   </parent>
 
   <artifactId>royale-typedefs-jquery</artifactId>
-  <version>0.9.7-SNAPSHOT</version>
+  <version>0.9.7</version>
   <packaging>swc</packaging>
 
   <name>Apache Royale: TypeDefs: JQuery</name>
 
   <properties>
     <jquery.version>1.9</jquery.version>
-  </properties>
+  <project.build.outputTimestamp>2020-05-07T16:03:38Z</project.build.outputTimestamp></properties>
 
   <build>
     <plugins>
@@ -155,7 +154,7 @@
     <dependency>
       <groupId>org.apache.royale.typedefs</groupId>
       <artifactId>royale-typedefs-js</artifactId>
-      <version>0.9.7-SNAPSHOT</version>
+      <version>0.9.7</version>
       <type>swc</type>
       <classifier>typedefs</classifier>
       <scope>runtime</scope>
diff --git a/js/pom.xml b/js/pom.xml
index f6aed6d..fcd7951 100644
--- a/js/pom.xml
+++ b/js/pom.xml
@@ -1,33 +1,32 @@
 <?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-SNAPSHOT</version>
+    <version>0.9.7</version>
   </parent>
 
   <artifactId>royale-typedefs-js</artifactId>
-  <version>0.9.7-SNAPSHOT</version>
+  <version>0.9.7</version>
   <packaging>swc</packaging>
 
   <name>Apache Royale: TypeDefs: JS</name>
@@ -50,9 +49,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>
@@ -338,4 +337,4 @@
     </plugins>
   </build>
 
-</project>
+<properties><project.build.outputTimestamp>2020-05-07T16:03:38Z</project.build.outputTimestamp></properties></project>
diff --git a/node/pom.xml b/node/pom.xml
index 8bc88ac..e775696 100644
--- a/node/pom.xml
+++ b/node/pom.xml
@@ -1,40 +1,39 @@
 <?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-SNAPSHOT</version>
+    <version>0.9.7</version>
   </parent>
 
   <artifactId>royale-typedefs-node</artifactId>
-  <version>0.9.7-SNAPSHOT</version>
+  <version>0.9.7</version>
   <packaging>swc</packaging>
 
   <name>Apache Royale: TypeDefs: Node</name>
 
   <properties>
     <closure.version>20181210</closure.version>
-  </properties>
+  <project.build.outputTimestamp>2020-05-07T16:03:38Z</project.build.outputTimestamp></properties>
   
   <build>
     <plugins>
@@ -51,9 +50,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>
@@ -223,7 +222,7 @@
     <dependency>
       <groupId>org.apache.royale.typedefs</groupId>
       <artifactId>royale-typedefs-js</artifactId>
-      <version>0.9.7-SNAPSHOT</version>
+      <version>0.9.7</version>
       <type>swc</type>
       <classifier>typedefs</classifier>
       <scope>runtime</scope>
diff --git a/pom.xml b/pom.xml
index 8ad2802..f30830d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,23 +1,22 @@
 <?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>
@@ -28,7 +27,7 @@
 
   <groupId>org.apache.royale.typedefs</groupId>
   <artifactId>royale-typedefs-parent</artifactId>
-  <version>0.9.7-SNAPSHOT</version>
+  <version>0.9.7</version>
   <packaging>pom</packaging>
 
   <name>Apache Royale: TypeDefs: Parent</name>
@@ -37,7 +36,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>release/0.9.7</tag>
+    <tag>org.apache.royale.typedefs-0.9.7-rc5</tag>
   </scm>
 
   <properties>
@@ -49,7 +48,7 @@
     <royale.compiler.version>0.9.7</royale.compiler.version>
 
     <release-profiles>apache-release</release-profiles>
-  </properties>
+  <project.build.outputTimestamp>2020-05-07T16:03:38Z</project.build.outputTimestamp></properties>
 
   <!-- Only configure the site distribution as the rest is handled by the apache parent -->
   <distributionManagement>
@@ -111,11 +110,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>
@@ -181,9 +180,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>
@@ -198,11 +197,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>
@@ -270,9 +269,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>
@@ -294,8 +293,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>
@@ -328,4 +327,3 @@
   </profiles>
 
 </project>
-
