diff --git a/archetypes/pom.xml b/archetypes/pom.xml
index 1e4b8bd..ce92c97 100644
--- a/archetypes/pom.xml
+++ b/archetypes/pom.xml
@@ -22,7 +22,7 @@
 
   <parent>
     <groupId>org.apache.royale.framework</groupId>
-    <artifactId>royale.framework-parent</artifactId>
+    <artifactId>royale-framework-parent</artifactId>
     <version>0.9.1-SNAPSHOT</version>
   </parent>
 
diff --git a/build.xml b/build.xml
index 6077bff..1a55b3c 100644
--- a/build.xml
+++ b/build.xml
@@ -1466,7 +1466,7 @@
             <arg value="+env.PLAYERGLOBAL_HOME=${env.PLAYERGLOBAL_HOME}" />
         </mxmlc>
         <mkdir dir="${basedir}/mustella/tests/basicTests/fonts" />
-        <copy todir="${basedir}/mustella/tests/basicTests/fonts" >
+        <copy todir="${basedir}/mustella/tests/basicTests/fonts" failonerror="false">
             <fileset dir="${ROYALE_HOME}/frameworks/fonts">
                 <include name="**/*.swf" />
             </fileset>
@@ -1628,6 +1628,24 @@
         <checksum algorithm="md5" file="${basedir}/out/apache-royale-jsonly-${release.version}-bin.zip" forceOverwrite="yes"/>
     </target>
 
+    <target name="sign-jsonly" if="env.AIR_HOME" >
+        <exec executable="gpg">
+            <arg value="--armor" />
+            <arg value="--output" />
+            <arg value="${basedir}/out/apache-royale-jsonly-${release.version}-bin.zip.asc" />
+            <arg value="--detach-sig" />
+            <arg value="${basedir}/out/apache-royale-jsonly-${release.version}-bin.zip" />
+        </exec>
+        
+        <exec executable="gpg">
+            <arg value="--armor" />
+            <arg value="--output" />
+            <arg value="${basedir}/out/apache-royale-jsonly-${release.version}-bin.tar.gz.asc" />
+            <arg value="--detach-sig" />
+            <arg value="${basedir}/out/apache-royale-jsonly-${release.version}-bin.tar.gz" />
+        </exec>
+    </target>
+
     <target name="sign" >
         <exec executable="gpg">
             <arg value="--armor" />
diff --git a/distribution/jars/compc/pom.xml b/distribution/jars/compc/pom.xml
index 8ee6d4b..0b26bd9 100644
--- a/distribution/jars/compc/pom.xml
+++ b/distribution/jars/compc/pom.xml
@@ -22,7 +22,7 @@
 
   <parent>
     <groupId>org.apache.royale.framework</groupId>
-    <artifactId>royale.framework-parent</artifactId>
+    <artifactId>royale-framework-parent</artifactId>
     <version>0.9.0-SNAPSHOT</version>
     <relativePath>../../../pom.xml</relativePath>
   </parent>
diff --git a/distribution/jars/compiler-asc/pom.xml b/distribution/jars/compiler-asc/pom.xml
index 72ed495..a9898e9 100644
--- a/distribution/jars/compiler-asc/pom.xml
+++ b/distribution/jars/compiler-asc/pom.xml
@@ -22,7 +22,7 @@
 
   <parent>
     <groupId>org.apache.royale.framework</groupId>
-    <artifactId>royale.framework-parent</artifactId>
+    <artifactId>royale-framework-parent</artifactId>
     <version>0.9.0-SNAPSHOT</version>
     <relativePath>../../../pom.xml</relativePath>
   </parent>
diff --git a/distribution/jars/compiler-compc/pom.xml b/distribution/jars/compiler-compc/pom.xml
index 9cdb2b1..bf0b711 100644
--- a/distribution/jars/compiler-compc/pom.xml
+++ b/distribution/jars/compiler-compc/pom.xml
@@ -22,7 +22,7 @@
 
   <parent>
     <groupId>org.apache.royale.framework</groupId>
-    <artifactId>royale.framework-parent</artifactId>
+    <artifactId>royale-framework-parent</artifactId>
     <version>0.9.0-SNAPSHOT</version>
     <relativePath>../../../pom.xml</relativePath>
   </parent>
diff --git a/distribution/jars/compiler-mxmlc/pom.xml b/distribution/jars/compiler-mxmlc/pom.xml
index 239a7e2..0c5f181 100644
--- a/distribution/jars/compiler-mxmlc/pom.xml
+++ b/distribution/jars/compiler-mxmlc/pom.xml
@@ -22,7 +22,7 @@
 
   <parent>
     <groupId>org.apache.royale.framework</groupId>
-    <artifactId>royale.framework-parent</artifactId>
+    <artifactId>royale-framework-parent</artifactId>
     <version>0.9.0-SNAPSHOT</version>
     <relativePath>../../../pom.xml</relativePath>
   </parent>
diff --git a/distribution/jars/compiler-optimizer/pom.xml b/distribution/jars/compiler-optimizer/pom.xml
index d348a16..a0f8408 100644
--- a/distribution/jars/compiler-optimizer/pom.xml
+++ b/distribution/jars/compiler-optimizer/pom.xml
@@ -22,7 +22,7 @@
 
   <parent>
     <groupId>org.apache.royale.framework</groupId>
-    <artifactId>royale.framework-parent</artifactId>
+    <artifactId>royale-framework-parent</artifactId>
     <version>0.9.0-SNAPSHOT</version>
     <relativePath>../../../pom.xml</relativePath>
   </parent>
diff --git a/distribution/jars/compiler-swfdump/pom.xml b/distribution/jars/compiler-swfdump/pom.xml
index a65225b..3cea5cf 100644
--- a/distribution/jars/compiler-swfdump/pom.xml
+++ b/distribution/jars/compiler-swfdump/pom.xml
@@ -22,7 +22,7 @@
 
   <parent>
     <groupId>org.apache.royale.framework</groupId>
-    <artifactId>royale.framework-parent</artifactId>
+    <artifactId>royale-framework-parent</artifactId>
     <version>0.9.0-SNAPSHOT</version>
     <relativePath>../../../pom.xml</relativePath>
   </parent>
diff --git a/distribution/jars/mxmlc/pom.xml b/distribution/jars/mxmlc/pom.xml
index da9d99c..dd2a80d 100644
--- a/distribution/jars/mxmlc/pom.xml
+++ b/distribution/jars/mxmlc/pom.xml
@@ -22,7 +22,7 @@
 
   <parent>
     <groupId>org.apache.royale.framework</groupId>
-    <artifactId>royale.framework-parent</artifactId>
+    <artifactId>royale-framework-parent</artifactId>
     <version>0.9.0-SNAPSHOT</version>
     <relativePath>../../../pom.xml</relativePath>
   </parent>
diff --git a/distribution/pom.xml b/distribution/pom.xml
index 2d703eb..db37c52 100644
--- a/distribution/pom.xml
+++ b/distribution/pom.xml
@@ -22,7 +22,7 @@
 
   <parent>
     <groupId>org.apache.royale.framework</groupId>
-    <artifactId>royale.framework-parent</artifactId>
+    <artifactId>royale-framework-parent</artifactId>
     <version>0.9.0-SNAPSHOT</version>
   </parent>
 
diff --git a/examples/pom.xml b/examples/pom.xml
index 07962aa..270ce20 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -22,7 +22,7 @@
 
   <parent>
     <groupId>org.apache.royale.framework</groupId>
-    <artifactId>royale.framework-parent</artifactId>
+    <artifactId>royale-framework-parent</artifactId>
     <version>0.9.0-SNAPSHOT</version>
   </parent>
 
diff --git a/examples/royale/ASDoc/build.xml b/examples/royale/ASDoc/build.xml
index 7a71999..5b30ed1 100644
--- a/examples/royale/ASDoc/build.xml
+++ b/examples/royale/ASDoc/build.xml
@@ -54,7 +54,7 @@
         <java jar="${ROYALE_COMPILER_HOME}/lib/asdoc.jar" resultProperty="errorCode"
             fork="true">
             <jvmarg line="${mxmlc.jvm.args}"/>
-            <jvmarg line="-Droyalelib=${ROYALE_HOME}/frameworks}"/>
+            <jvmarg line="-Droyalelib='${ROYALE_HOME}/frameworks'"/>
             <arg value="+royalelib=${ROYALE_HOME}/frameworks" />
             <arg value="-external-library-path=${env.AIR_HOME}/frameworks/libs/air/airglobal.swc" />
             <arg value="-external-library-path+=${ROYALE_HOME}/js/libs/google_maps.swc" />
diff --git a/frameworks/pom.xml b/frameworks/pom.xml
index 67b5d13..3d3a50f 100644
--- a/frameworks/pom.xml
+++ b/frameworks/pom.xml
@@ -22,7 +22,7 @@
 
   <parent>
     <groupId>org.apache.royale.framework</groupId>
-    <artifactId>royale.framework-parent</artifactId>
+    <artifactId>royale-framework-parent</artifactId>
     <version>0.9.1-SNAPSHOT</version>
   </parent>
 
diff --git a/frameworks/projects/Core/src/main/royale/CoreClasses.as b/frameworks/projects/Core/src/main/royale/CoreClasses.as
index a74ad70..963d0c0 100644
--- a/frameworks/projects/Core/src/main/royale/CoreClasses.as
+++ b/frameworks/projects/Core/src/main/royale/CoreClasses.as
@@ -232,6 +232,13 @@
 	import org.apache.royale.utils.loadBeadFromValuesManager; loadBeadFromValuesManager;
 
 	import org.apache.royale.utils.array.rangeCheck; rangeCheck;
+
+	import org.apache.royale.utils.string.contains; contains;
+	import org.apache.royale.utils.string.isWhitespace; isWhitespace;
+	import org.apache.royale.utils.string.trim; trim;
+	import org.apache.royale.utils.string.trimRight; trimRight;
+	import org.apache.royale.utils.string.trimLeft; trimLeft;
+
 	import org.apache.royale.utils.date.addDays; addDays;
 	import org.apache.royale.utils.date.addHours; addHours;
 	import org.apache.royale.utils.date.addMinutes; addMinutes;
diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/contains.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/contains.as
new file mode 100644
index 0000000..2e16d52
--- /dev/null
+++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/contains.as
@@ -0,0 +1,35 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 "Licens"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.royale.utils.string
+{
+    import org.apache.royale.debugging.assert;
+	/**
+	 *  Checks whether a string contains the specified substring.
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion Royale 0.9
+	 */
+    public function contains(string:String,value:String):Boolean
+    {
+        assert(string != null,"contains() cannot be called with a null string");
+        assert(string != null,"contains() cannot be called with a null substring");
+        return string.indexOf(value) != -1;
+    }
+}
\ No newline at end of file
diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/isWhitespace.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/isWhitespace.as
new file mode 100644
index 0000000..0fd7bd7
--- /dev/null
+++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/isWhitespace.as
@@ -0,0 +1,56 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 "Licens"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.royale.utils.string
+{
+            /**
+         *  Returns <code>true</code> if the specified string is
+         *  a single space, tab, carriage return, newline, or formfeed character.
+         *
+         *  @return <code>true</code> if the specified string is
+         *  a single space, tab, carriage return, newline, or formfeed character.
+         *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion Royale 0.9
+         */
+        public function isWhitespace(character:String):Boolean
+        {
+            switch (character)
+            {
+                case " ":
+                case "\t":
+                case "\r":
+                case "\n":
+                case "\f":
+                    // non breaking space
+                case "\u00A0":
+                    // line seperator
+                case "\u2028":
+                    // paragraph seperator
+                case "\u2029":
+                    // ideographic space
+                case "\u3000":
+                    return true;
+                    
+                default:
+                    return false;
+            }
+        }
+}
\ No newline at end of file
diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/trim.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/trim.as
new file mode 100644
index 0000000..2d93f90
--- /dev/null
+++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/trim.as
@@ -0,0 +1,54 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 "Licens"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.royale.utils.string
+{
+    import org.apache.royale.debugging.assert;
+	/**
+	 *  Trims all whitespace off the beginning and end of a string.
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion Royale 0.9
+	 */
+    public function trim(str:String):String
+    {
+        assert(str != null,"trim() cannot be called on null");
+
+        COMPILE::SWF
+        {
+            var startIndex:int = 0;
+            while (isWhitespace(str.charAt(startIndex)))
+                ++startIndex;
+            
+            var endIndex:int = str.length - 1;
+            while (isWhitespace(str.charAt(endIndex)))
+                --endIndex;
+            
+            if (endIndex >= startIndex)
+                return str.slice(startIndex, endIndex + 1);
+            else
+                return "";
+        }
+
+        COMPILE::JS
+        {
+            return str.trim();
+        }
+    }
+}
\ No newline at end of file
diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/trimLeft.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/trimLeft.as
new file mode 100644
index 0000000..0842830
--- /dev/null
+++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/trimLeft.as
@@ -0,0 +1,46 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 "Licens"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.royale.utils.string
+{
+    import org.apache.royale.debugging.assert;
+	/**
+	 *  Checks that an index falls within the allowable range of an array.
+	 *  Returns true if it's valid, false if not.
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion Royale 0.9
+	 */
+    public function trimLeft(str:String):String
+    {
+        assert(str != null,"trim() cannot be called on null");
+
+        COMPILE::SWF{
+            var startIndex:int = 0;
+            while (isWhitespace(str.charAt(startIndex)))
+                ++startIndex;
+            
+            return str.slice(startIndex);
+        }
+
+        COMPILE::JS{
+            return str.trimLeft();
+        }
+    }   
+}
\ No newline at end of file
diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/trimRight.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/trimRight.as
new file mode 100644
index 0000000..3370286
--- /dev/null
+++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/trimRight.as
@@ -0,0 +1,50 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 "Licens"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.royale.utils.string
+{
+    import org.apache.royale.debugging.assert;
+	/**
+	 *  Trims all whitespace off the end of a string.
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion Royale 0.9
+	 */
+    public function trimRight(str:String):String
+    {
+        assert(str != null,"trim() cannot be called on null");
+
+        COMPILE::SWF{
+            var startIndex:int = 0;
+            
+            var endIndex:int = str.length - 1;
+            while (isWhitespace(str.charAt(endIndex)))
+                --endIndex;
+            
+            if (endIndex >= startIndex)
+                return str.slice(startIndex, endIndex + 1);
+            else
+                return "";
+        }
+
+        COMPILE::JS{
+            return str.trimRight();
+        }
+    }
+}
\ No newline at end of file
diff --git a/frameworks/projects/Core/src/test/royale/flexUnitTests/CoreTester.as b/frameworks/projects/Core/src/test/royale/flexUnitTests/CoreTester.as
index 3c9c5bf..2f99400 100644
--- a/frameworks/projects/Core/src/test/royale/flexUnitTests/CoreTester.as
+++ b/frameworks/projects/Core/src/test/royale/flexUnitTests/CoreTester.as
@@ -28,5 +28,6 @@
 		public var dateUtilsTest:DateUtilsTest;
         public var keyConverterTest:KeyConverterTest;
         public var keyboardEventConverterTest:KeyboardEventConverterTest;
+        public var stringUtilsTest:StringUtilsTest;
     }
 }
diff --git a/frameworks/projects/Core/src/test/royale/flexUnitTests/StringUtilsTest.as b/frameworks/projects/Core/src/test/royale/flexUnitTests/StringUtilsTest.as
new file mode 100644
index 0000000..5390817
--- /dev/null
+++ b/frameworks/projects/Core/src/test/royale/flexUnitTests/StringUtilsTest.as
@@ -0,0 +1,74 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flexUnitTests
+{
+    import org.apache.royale.utils.string.*;
+    import org.apache.royale.test.asserts.*;
+    
+    public class StringUtilsTest
+    {		
+        [Before]
+        public function setUp():void
+        {
+        }
+        
+        [After]
+        public function tearDown():void
+        {
+        }
+        
+        [BeforeClass]
+        public static function setUpBeforeClass():void
+        {
+        }
+        
+        [AfterClass]
+        public static function tearDownAfterClass():void
+        {
+        }
+        
+        [Test]
+        public function testContains():void
+        {
+            assertTrue(contains("food","foo"),"food contains foo");
+            assertTrue(!contains("foo","food"),"foo does not contain food");
+            assertTrue(!contains("food","baz"),"food does not contain baz");
+        }
+
+        [Test]
+        public function testTrim():void
+        {
+            assertTrue(trim("  foo  ") == "foo","Should be 'foo'");
+        }
+
+        [Test]
+        public function testTrimLeft():void
+        {
+            assertTrue(trimLeft("  foo  ") == "foo  ","Should be 'foo  ' (with spaces after)");
+        }
+
+        [Test]
+        public function testTrimRight():void
+        {
+            assertTrue(trimRight("  foo  ") == "  foo","Should be '  foo' (with spaces before)");
+        }
+
+
+    }
+}
diff --git a/manualtests/pom.xml b/manualtests/pom.xml
index 853fe90..6463dde 100644
--- a/manualtests/pom.xml
+++ b/manualtests/pom.xml
@@ -22,7 +22,7 @@
 
   <parent>
     <groupId>org.apache.royale.framework</groupId>
-    <artifactId>royale.framework-parent</artifactId>
+    <artifactId>royale-framework-parent</artifactId>
     <version>0.9.0-SNAPSHOT</version>
 	<relativePath />
   </parent>
diff --git a/pom.xml b/pom.xml
index f59c7b5..4dfe5b9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,7 +29,7 @@
   </parent>
 
   <groupId>org.apache.royale.framework</groupId>
-  <artifactId>royale.framework-parent</artifactId>
+  <artifactId>royale-framework-parent</artifactId>
   <version>0.9.1-SNAPSHOT</version>
   <packaging>pom</packaging>
 
diff --git a/releasecandidate.xml b/releasecandidate.xml
index d2c5a36..406fe7a 100644
--- a/releasecandidate.xml
+++ b/releasecandidate.xml
@@ -335,31 +335,21 @@
         <echo>changed to branch ${branch.name}</echo>
     </target>
 
-    <target name="get-maven-compiler-folder" unless="maven.compiler.folder">
-        <input
-        message="Enter Maven Compiler Staging Repo folder name"
-        addproperty="maven.compiler.folder"/>
-    </target>
-    <target name="get-maven-typedefs-folder" unless="maven.typedefs.folder">
-        <input
-        message="Enter Maven Typedefs Staging Repo folder name"
-        addproperty="maven.typedefs.folder"/>
-    </target>
-    <target name="get-maven-asjs-folder" unless="maven.asjs.folder">
-        <input
-        message="Enter Maven ASJS Staging Repo folder name"
-        addproperty="maven.asjs.folder"/>
-    </target>
     <target name="verify-task">
         <input
-        message="This task will build a release candidate.  It expects that the make_branches and maven targets ahve been run first.  Press any &lt;enter&gt; to enter the location of the Maven source artifacts."
+        message="This task will build a release candidate.  It expects that the make_branches and maven targets have been run first.  Press any &lt;enter&gt; to enter the location of the Maven source artifacts."
         />
     </target>
     
-    <target name="get-maven-folders" depends="get-maven-compiler-folder, get-maven-typedefs-folder,get-maven-asjs-folder" />
+    <target name="get-maven-folders">
+        <input
+        message="Enter Maven Staging Repo folder number"
+        addproperty="maven.staging.folder.number"/>
+    </target>
     
-    <target name="main" depends="check-empty-folder,check-no-repos,verify-task,check-name-and-svn,install-rat,credentials,get-maven-folders,get-maven-source-artifacts" description="Perform packaging steps">
+    <target name="main" depends="check-empty-folder,check-no-repos,verify-task,check-name-and-svn,install-rat,credentials,get-maven-folders,get-maven-source-artifacts,check-royale-asjs" description="Perform packaging steps">
 		<antcall target="check-new-version" />
+        <antcall target="ant-artifacts" />
 		<antcall target="stage.rc" />
 		<antcall target="push.rc" />
 	</target>
@@ -479,6 +469,7 @@
     </target>
     
     <target name="git-commit-and-push-typedefs-if-modified" if="typedefs.modification.exists">
+        <echo>calling git add</echo>
         <exec executable="${git}" dir="${typedefs}" failonerror="true" >
             <arg value="add" />
             <arg value="pom.xml" />
@@ -491,11 +482,16 @@
     </target>
     
     <target name="git-commit-and-push-typedefs">
-        <exec executable="${git}" dir="${typedefs}" failonerror="true" outputproperty="git.status.typedefs">
+        <exec executable="${git}" dir="${typedefs}" failonerror="true">
+            <arg value="remote" />
+            <arg value="-v" />
+        </exec>
+        <exec executable="${git}" dir="${typedefs}" failonerror="true" outputproperty="git.push.status.typedefs">
             <arg value="status" />
         </exec>
+        <echo>${git.push.status.typedefs}</echo>
         <condition property="typedefs.modification.exists">
-            <contains string="${git.status.typedefs}" substring="modified:" />
+            <contains string="${git.push.status.typedefs}" substring="modified:" />
         </condition>
         <antcall target="git-commit-and-push-typedefs-if-modified" />
     </target>
@@ -513,11 +509,11 @@
     </target>
     
     <target name="git-commit-and-push-asjs">
-        <exec executable="${git}" dir="${asjs}" failonerror="true" outputproperty="git.status.asjs">
+        <exec executable="${git}" dir="${asjs}" failonerror="true" outputproperty="git.push.status.asjs">
             <arg value="status" />
         </exec>
         <condition property="asjs.modification.exists">
-            <contains string="${git.status.asjs}" substring="modified:" />
+            <contains string="${git.push.status.asjs}" substring="modified:" />
         </condition>
         <antcall target="git-commit-and-push-asjs-if-modified" />
     </target>
@@ -578,7 +574,7 @@
             <arg value="main" />
             <!--<arg value="-DpushChanges=false" />-->
         </exec>
-        <!--<delete file="${compiler}/copyofrelease.properties" failonerror="false" />-->
+        <delete file="${compiler}/copyofrelease.properties" failonerror="false" />
     </target>
     
     <target name="royale.compiler" depends="clone-compiler,checkout-release-branch-compiler,maven.prepare.compiler,maven.perform.compiler" />
@@ -675,9 +671,6 @@
         <exec executable="${browser}" spawn="true">
             <arg value="http://repository.apache.org/" />
         </exec>
-        <exec executable="${browser}">
-            <arg value="http://central.sonatype.org/pages/releasing-the-deployment.html#locate-and-examine-your-staging-repository" />
-        </exec>
     </target>
     
 	<target name="maven" depends="check-empty-folder, use_release_branch, royale.compiler, royale.typedefs, royale.framework, close.maven.staging.repo">
@@ -697,21 +690,35 @@
         <mkdir dir="${basedir}/temp/royale-asjs" />
         <mkdir dir="${basedir}/temp/royale-typedefs" />
         <mkdir dir="${basedir}/temp/royale-compiler" />
-        <get src="http://repository.apache.org/staging/royale/${maven.folder.name}/royale-asjs" dest="${basedir}/temp" />
+        <get src="https://repository.apache.org/content/repositories/orgapacheroyale-${maven.staging.folder.number}/org/apache/royale/framework/royale-framework-parent/${release.version}/royale-framework-parent-${release.version}-source-release.zip" dest="${basedir}/temp/royale-asjs.zip" />
         <unzip src="${basedir}/temp/royale-asjs.zip"
-        dest="${basedir}/royale-asjs"/>
-        <get src="http://repository.apache.org/staging/royale/${maven.folder.name}/royale-typedefs" dest="${basedir}/temp" />
+            dest="${basedir}/royale-asjs">
+          <cutdirsmapper dirs="1"/>
+        </unzip>
+        <get src="https://repository.apache.org/content/repositories/orgapacheroyale-${maven.staging.folder.number}/org/apache/royale/typedefs/royale-typedefs-parent/${release.version}/royale-typedefs-parent-${release.version}-source-release.zip" dest="${basedir}/temp/royale-typedefs.zip" />
         <unzip src="${basedir}/temp/royale-typedefs.zip"
-        dest="${basedir}/royale-typedefs"/>
-        <get src="http://repository.apache.org/staging/royale/${maven.folder.name}/royale-compiler" dest="${basedir}/temp" />
+            dest="${basedir}/royale-typedefs">
+          <cutdirsmapper dirs="1"/>
+        </unzip>
+        <get src="https://repository.apache.org/content/repositories/orgapacheroyale-${maven.staging.folder.number}/org/apache/royale/compiler/royale-compiler-parent/${release.version}/royale-compiler-parent-${release.version}-source-release.zip" dest="${basedir}/temp/royale-compiler.zip" />
         <unzip src="${basedir}/temp/royale-compiler.zip"
-        dest="${basedir}/royale-compiler"/>
+            dest="${basedir}/royale-compiler">
+          <cutdirsmapper dirs="1"/>
+        </unzip>
 
+    </target>
+    
+    <target name="ant-artifacts">
 		<ant dir="${basedir}/royale-asjs" target="release" />
 		<ant dir="${basedir}/royale-asjs" target="create-md5" />
+        <ant dir="${basedir}/royale-asjs" target="create-md5-jsonly" />
 		<ant dir="${basedir}/royale-asjs" target="sign" />
+        <ant dir="${basedir}/royale-asjs" target="sign-jsonly" />
 		<!--<ant antfile="build.xml" target="doc-create-md5" />-->
 		<!--<ant antfile="build.xml" target="doc-sign" />-->
+    </target>
+    
+    <target name="stage.rc">
 		<mkdir dir="${dist.dev}/royale/${release.version}/rc${rc}/binaries" />
 		<!--<mkdir dir="${dist.dev}/royale/${release.version}/rc${rc}/doc" />-->
 		<copy todir="${dist.dev}/royale/${release.version}/rc${rc}" >
@@ -724,6 +731,11 @@
 				<include name="apache-royale-${release.version}-bin*" />
 			</fileset>
 		</copy>
+        <copy todir="${dist.dev}/royale/${release.version}/rc${rc}/binaries" >
+            <fileset dir="${asjs}/out" >
+                <include name="apache-royale-jsonly-${release.version}-bin*" />
+            </fileset>
+        </copy>
 		<!--<copy todir="${dist.dev}/royale/${release.version}/rc${rc}/doc" >
 			<fileset dir="${basedir}/out" >
 				<include name="apache-royale-${release.version}-asdoc*" />
diff --git a/testsuite/pom.xml b/testsuite/pom.xml
index bb1f110..b3f4f54 100644
--- a/testsuite/pom.xml
+++ b/testsuite/pom.xml
@@ -22,7 +22,7 @@
 
   <parent>
     <groupId>org.apache.royale.framework</groupId>
-    <artifactId>royale.framework-parent</artifactId>
+    <artifactId>royale-framework-parent</artifactId>
     <version>0.9.0-SNAPSHOT</version>
   </parent>
 
