Merge branch 'develop' into ios7skins
diff --git a/.gitignore b/.gitignore
index 58381a3..1177a2c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -136,6 +136,4 @@
 air-sdk-description.xml
 samples/descriptor-sample.xml
 include/FlashRuntimeExtensions.h
-
-/frameworks/projects/mobiletheme/src/spark/skins/ios7/visualcomps/*.ai
 visualcomps
diff --git a/CONTRIBUTING b/CONTRIBUTING
index 8938901..890cec5 100644
--- a/CONTRIBUTING
+++ b/CONTRIBUTING
@@ -1,105 +1,98 @@
 Apache Flex (Flex)
 ==================
 
-    Apache Flex SDK is an application development framework for easily building
-    Flash-based applications for mobile devices, web browsers, and desktops.
-   
-    For detailed information about Apache Flex SDK and other Apache Flex projects
-    please visit:
+Apache Flex SDK is an application development framework for easily building
+Flash-based applications for mobile devices, web browsers, and desktops.
+
+For detailed information about Apache Flex SDK and other Apache Flex projects
+please visit:
     http://flex.apache.org/
 
 
 Contributing
 ============
 
-    Apache Flex is for the community and we would like to see more
-    community involvement.
+Apache Flex is for the community and we would like to see more
+community involvement.
 
-    The community can help the Apache Flex project by helping out in the
-    following areas.
-      - Testing / Fixing bugs. Providing patches.
-      - Assisting other users with their requests for help.
-      - Helping out with release candidates.
-      - Wiki / Documentation.
-      - Translations into other languages.
-      - Public relations.
-      - Examples of code and components.
-      
-    All contributions are welcome. Continued involvement in the project may
-    warrant you being selected as a committer by the Apache Flex PMC.
-    
-    For more details information please visit:
+The community can help the Apache Flex project by helping out in the following
+areas.
+    - Testing / Fixing bugs. Providing patches.
+    - Assisting other users with their requests for help.
+    - Helping out with release candidates.
+    - Wiki / Documentation.
+    - Translations into other languages.
+    - Public relations.
+    - Examples of code and components.
+
+All contributions are welcome. Continued involvement in the project may warrant
+you being selected as a committer by the Apache Flex PMC.
+
+For more details information please visit:
     https://cwiki.apache.org/confluence/display/FLEX/Helping+Out
-    
+
+
 Mailing Lists
 =============
 
-    The two main mailing list are the user list for discussing how to code in
-    Flex and any issues you run into and the dev list for discussing ongoing
-    development of the SDK.
-    
-    You can subscribe to the mailing lists by sending an email to:
+The two main mailing list are the user list for discussing how to code in Flex
+and any issues you run into and the dev list for discussing ongoing development
+of the SDK.
+
+You can subscribe to the mailing lists by sending an email to:
     users-subscribe@flex.apache.org
     dev-subscribe@flex.apache.org
-    
-    Note that both mailing lists have are mid-high volume lists.
-    
-    For those who prefer forums:
+
+Note that both mailing lists have are mid-high volume lists.
+
+For those who prefer forums:
     http://s.apache.org/flex-users-forum
     http://s.apache.org/flex-dev-forum
-    
+
+
 Reporting Bugs
 ==============
-   
-    The bug base for Apache Flex can be found here:
+
+The bug base for Apache Flex can be found here:
     https://issues.apache.org/jira/browse/FLEX
-    
-    You need to set up a JIRA account to submit a bug report but can browse
-    and search the bug base without an account.
+
+You need to set up a JIRA account to submit a bug report but can browse and
+search the bug base without an account.
     https://cwiki.apache.org/confluence/display/FLEX/3.1+JIRA+Account
-    
-    When reporting an issue the follow information is helpful:
+
+When reporting an issue the follow information is helpful:
     - OS, browser and Flash Player version or AIR version
     - Screen shots
     - Small sample application showing the issue
     - Steps on how to reproduce the issue
-         
-    Please search through JIRA before submitting new bugs. It may be that the
-    bug you've found has already been reported.
+     
+Please search through JIRA before submitting new bugs. It may be that the bug 
+you've found has already been reported.
+
 
 Getting the code
 ================
 
-    The Apache FLex SDK code is stored in a git repository.
-    https://cwiki.apache.org/confluence/display/FLEX/1.+Setting+up+the+SDK
+See the README for how to prepare your system, and get and build the SDK.
 
-    To check out:
-    git clone https://git-wip-us.apache.org/repos/asf/flex-sdk.git sdk
-    cd sdk
-    git checkout develop
-
-    You will also need:
-    git clone https://git-wip-us.apache.org/repos/asf/flex-tlf.git tlf
-
-    See the RELEASE_NOTE for how to set up and build the SDK.
-    
-    You can also see a GitHub mirror here:
+You can also see a GitHub mirror here:
     https://github.com/apache/flex-sdk
 
+
 Contributing Code
 =================
-    
-    If you have a bug fix, new component or other code you which to give to
-    Apache Flex please open a JIRA ticket and attach the code to it.
-    
-    A committer will take a look, review and test it and help you get the code
-    into the SDK.
-    
-    If the code is a significant size we may ask you to sign an license
-    agreement (ICLA) or software grant.
-    
 
-Thanks for using Apache Flex.  Enjoy!
+If you have a bug fix, new component or other code you which to give to Apache
+Flex please open a JIRA ticket and attach the code to it.
 
-The Apache Flex Project
-<http://flex.apache.org>
+A committer will take a look, review and test it and help you get the code into
+the SDK.
+
+If the code is a significant size we may ask you to sign an license agreement
+(ICLA) or software grant.
+
+
+                                            Thanks for using Apache Flex. Enjoy!
+
+                                                         The Apache Flex Project
+                                                          http://flex.apache.org
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 7b8d747..f26c0d6 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -1,6 +1,13 @@
 The following volunteers have contributed code, documentation, testing and/or
 support to the Apache Flex SDK.
 
+Apache Flex SDK 4.14.0
+----------------------
+Aaron Nash, After24, Alex Harui, Curtis Aube, Darrell Loverin, Erik de Bruin,
+Frédéric Thomas, Gareth Daniel Smith, Justin Mclean, Lee Burrows, Mahmoud Ali,
+Marcus Wilkinson, Mark Kessler, Mihai Chira, Neil Madsen, OmPrakash Muppirala,
+Tom Chiverton
+
 Apache Flex SDK 4.13.0
 ----------------------
 Alex Harui, Alexander Konovalov, Alexander Mazuruk, Alexander Scheibe, Bi Jane Jia,
diff --git a/LICENSE b/LICENSE
index 99588a0..a661961 100644
--- a/LICENSE
+++ b/LICENSE
@@ -201,7 +201,7 @@
    See the License for the specific language governing permissions and
    limitations under the License.
 
-------------------------------------------------------------------------------------------
+--------------------------------------------------------------------------------
 
 For the easing algorithms used in frameworks/src/mx/effect/easing:
 
@@ -212,33 +212,35 @@
 Easing Equations © 2001-2003, Robert Penner
 All rights reserved.
 
-Redistribution and use in source and binary forms, with or without modification, are 
-permitted provided that the following conditions are met:
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
 
-Redistributions of source code must retain the above copyright notice, this list of 
-conditions and the following disclaimer.
-Redistributions in binary form must reproduce the above copyright notice, this list of 
-conditions and the following disclaimer in the documentation and/or other materials 
-provided with the distribution.
-Neither the name of the author nor the names of contributors may be used to endorse or 
-promote products derived from this software without specific prior written permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 
-TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
+Redistributions of source code must retain the above copyright notice, this list
+of conditions and the following disclaimer.
+Redistributions in binary form must reproduce the above copyright notice, this
+list of conditions and the following disclaimer in the documentation and/or 
+other materials provided with the distribution.
+Neither the name of the author nor the names of contributors may be used to
+endorse or promote products derived from this software without specific prior
+written permission.
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-See frameworks/project/framework/src/mx/effect/easing/easing_readme.txt for more details 
-on what was used in this product.
+See frameworks/project/framework/src/mx/effect/easing/easing_readme.txt for more
+details on what was used in this product.
 
-------------------------------------------------------------------------------------------
+--------------------------------------------------------------------------------
 
-For all directories except for the asc compiler in modules/asc, and modules/thirdparty 
-directories:
+For all directories except for the asc compiler in modules/asc, and
+modules/thirdparty directories:
 
 Adobe Flex
 Copyright date 2003 - 2013 Adobe Systems Incorporated. All Rights Reserved.
@@ -713,7 +715,7 @@
      use the text of this Exhibit A rather than the text found in the
      Original Code Source Code for Your Modifications.]
 
-------------------------------------------------------------------------------------------
+--------------------------------------------------------------------------------
 
 APACHE FLEX SUBCOMPONENTS:
 
@@ -728,4 +730,10 @@
 The Roboto-Regular and Roboto-Bold fonts are available under Apache License 2.0.  
 For details see frameworks\projects\mobiletheme\src\spark\skins\android4\assets\fonts
 
-------------------------------------------------------------------------------------------
+The Font Awesome font is available under OFL.  For details
+see frameworks/projects/flatspark/src/flatspark/assets/fonts/awesome
+
+The Lato font is available under OFL. For details
+see frameworks/projects/flatspark/src/flatspark/assets/fonts/lato
+
+--------------------------------------------------------------------------------
diff --git a/NOTICE b/NOTICE
index ca0b3ca..5aa5688 100644
--- a/NOTICE
+++ b/NOTICE
@@ -1,27 +1,28 @@
 Apache Flex
 Copyright 2014 The Apache Software Foundation
 
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
+This product includes software developed at The Apache Software Foundation
+(http://www.apache.org/).
 
-The Initial Developer of the Original Code, known as Adobe Flex, 
-is Adobe Systems Incorporated (http://www.adobe.com/).
+The Initial Developer of the Original Code, known as Adobe Flex, is Adobe
+Systems Incorporated (http://www.adobe.com/).
     Copyright 2003 - 2012 Adobe Systems Incorporated. All Rights Reserved.
 
 The asc compiler contains code written by Jeff Dyer at: 
     Copyright Mountain View Compiler Company (1998-2003).
 
-The easing equations in the mx tween class are based on code written by Robert Penner.
-    Copyright 2001 Robert Penner
-    All rights reserved.
+The easing equations in the mx tween class are based on code written by Robert
+Penner.
+    Copyright 2001 Robert Penner. All rights reserved.
 
-The Batik SVG toolkit source contains code from the World Wide Web Consortium (W3C) for
-     the Document Object Model API (DOM API) and SVG Document Type Definition (DTD).
+The Batik SVG toolkit source contains code from the World Wide Web Consortium
+(W3C) for the Document Object Model API (DOM API) and SVG Document Type
+Definition (DTD).
 
-The Batik SVG toolkit source contains code from the International Organisation for
-     Standardization for the definition of character entities used in the software's 
-     documentation.
+The Batik SVG toolkit source contains code from the International Organisation
+for Standardization for the definition of character entities used in the
+software's documentation.
 
-The Open Source Media Framework used by the video components is licensed under the 
-    Mozilla Public License Version 1.1.  The source code can be found here:
+The Open Source Media Framework used by the video components is licensed under
+the Mozilla Public License Version 1.1. The source code can be found here:
     http://sourceforge.net/projects/osmf.adobe/files/OSMF%201.0%20%28final%20source%2C%20ASDocs%2C%20PDF%20guides%2C%20and%20release%20notes%29/OSMF_1.0.zip
diff --git a/README b/README
index a3e70b3..e640701 100644
--- a/README
+++ b/README
@@ -1,602 +1,498 @@
-Apache Flex (Flex)
-==================
+The Apache Flex SDK
+===================
 
-    Apache Flex SDK is an application development framework for easily building
-    Flash-based applications for mobile devices, web browsers, and desktops.
+The Apache Flex SDK is the evolution of the popular Adobe Flex SDK. The Apache
+Flex SDK is an application development framework for easily building Flash
+based applications for mobile devices, web browsers, and desktops. Currently
+supported platforms include:
 
-    Apache Flex 4.13.0 is a follow up release to Apache Flex 4.12.1. This version
-    adds new features and implements bug fixes that were unavailable in previous
-    versions.  It is compatible with most code written to target Adobe Flex 4.6.
+    Microsoft Windows
+    Mac OS X
+    Apple iOS
+    Google Android
+    RIM BlackBerry
+    (Linux)
 
-    For detailed information about Apache Flex please visit
+Linux support is currently experimental and you may run into issues. The Apache
+Flex project would like to see a fully supported Linux release, but we need
+help from the community in order to do that. Please help out if you can.
+
+For more information about the Apache Flex project, please visit:
+
     http://flex.apache.org/
 
-    Apache Flex is a large project with many pieces.  The framework is
-    implemented in ActionScript and the compiler is implemented in Java.
+The Apache Flex SDK 4.14.0 is a follow up release to version 4.13.0. It is
+compatible with most code written for the original Adobe Flex 4.6 SDK.
 
-    Currently supported platforms include:
 
-        Microsoft Windows
-        Mac OS X
-        Apple iOS
-        Google Android
-        RIM BlackBerry
-        Linux
 
-    Apache Flex is the software evolution of the popular Adobe Flex SDK project.
+Installing the Apache Flex SDK
+==============================
 
-    The community surrounding Flex is vast, diverse, distributed globally, and
-    with all levels of proficiency in software development.
+The Apache Flex SDK Installer is an AIR application that simplifies the 
+download and installation of the Apache Flex SDK and its (required) components.
+It is aimed at anyone who wants to use the latest release of the Apache Flex
+SDK, but who might not necessarily be familiar with the tools and procedures
+required to compile the Apache Flex SDK from source code. The application will
+grab the binary distribution of the SDK from apache.org or one of its mirrors,
+install it onto your computer and prepare it for use with your favourite IDE
+such as Adobe Flash Builder or JetBrains IntelliJ IDEA.
 
-    There has been more that 30,000 installs of Apache Flex. The Apache Flex web
-    site gets 3 quarters of a million page views a year and more than 250,000
-    unique visitors a year.
+You can get the Apache Flex SDK Installer from the Apache Flex website at:
 
+    http://flex.apache.org/installer.html
 
-Getting the convenience packages for Apache Flex
-================================================
+Starting with the Apache Flex SDK 4.12, Linux users can install the binary
+distribution using ANT. More information about installing the binary package
+with ANT can be found on our wiki at:
 
-    The Apache Flex SDK Installer is an application that simplifies the download
-    and installation of the Apache Flex SDK and its (required) components. It is
-    aimed at anyone who wants to use the latest release of the Apache Flex SDK,
-    but who might not necessarily be familiar with the tools and procedures
-    required to compile the Apache Flex SDK from source code. The application
-    will grab the binary distribution of the SDK from apache.org or one of its
-    mirrors, install it onto your computer and prepare it for use with your
-    favorite IDE such as Adobe Flash Builder or JetBrains IntelliJ IDEA.
+    https://cwiki.apache.org/confluence/display/FLEX/Installation+help#Installationhelp-Antinstaller
 
-    You can get the SDK Installer from the Apache Flex website at
 
-      http://flex.apache.org/installer.html
 
-    The SDK installer requires the Adobe AIR runtime to be installed.
+Building the Apache Flex SDK from source
+========================================
 
-    Starting with Apache Flex 4.12 the binary distribution can be installed
-    using only ANT in addition to the AIR installer mentioned above. This is
-    the recommended method for Linux users.  More information about installing
-    the binary package with ANT can be found on our wiki at :
+The Apache Flex SDK is a large project. It requires build tools which must be
+installed on your system and it depends on some external software. The external
+software is downloaded as part of the build process.
 
-      https://cwiki.apache.org/confluence/display/FLEX/Installation+help#Installationhelp-Antinstaller
+The following steps are all you need for a fully functional SDK:
+- Prepare your system
+    - install external software
+    - set environment variables
+- Get the source code
+    - flex-sdk
+    - flex-tlf
+- Build the SDK
+- Prepare the SDK for use with an IDE
+- Optional steps:
+  - Flash Player configuration
+  - Other locale support
 
-Getting the latest sources via git
-==================================
 
-    Getting the source code is the recommended way to get Apache Flex.  We also
-    offer an automated installer along with binary distributions on our website
-    at http://flex.apache.org/.
+Prepare your system
+-------------------
 
-    You can always checkout the latest source via git using the following
-    command:
+Before building the Apache Flex SDK you must install the following software and
+set the corresponding environment variables. Make sure to use absolute paths,
+relative paths will result in build errors.
 
-	 git clone https://git-wip-us.apache.org/repos/asf/flex-sdk.git sdk
-	 cd sdk
-	 git checkout develop
+The environment variables PLAYERGLOBAL_HOME, AIR_HOME, FLASHPLAYER_DEBUGGER,
+TLF_HOME, and ADOBE_EXTENSION_MANAGER can also be set in a property file
+called env.properties. See the env-template.properties file for instructions.
 
-    An Apache Flex SDK also requires source code from other Apache Flex git
-    repositories.  To get the latest source via git for the Text Layout
-    Framework use the following command:
+The Adobe Flash Player and Adobe AIR have excluded licenses so they can not be
+bundled with the Apache Flex SDK, i.e. they need to be installed separately.
+
+The Adobe Flash Player ‘playerglobal.swc’ is needed to compile all the
+components with the exception of the ‘airframework’ and ‘airspark’
+components which require ‘airglobal.swc’ from the AIR Integration Kit. The
+AIR Integration kit is also needed to build and debug mobile applications. The
+Adobe Flash Player content debugger is used by the ant ‘checkintests’
+target and other pieces of the test subsystem to run compiled applications.
+
+
+---------------------------------------------------------------------
+SOFTWARE                                      ENVIRONMENT VARIABLE
+---------------------------------------------------------------------
+
+Java SDK 1.6 or greater (* 1)                 JAVA_HOME
+    (for Java 1.7 see note at (* 2))
+
+Ant 1.7.1 or greater (* 1)                    ANT_HOME
+    (for Java 1.7 see note at (* 2))
+
+Adobe AIR Integration Kit (* 3)               AIR_HOME
+
+Adobe Flash Player Content Debugger (* 4)     FLASHPLAYER_DEBUGGER
+
+Adobe Flash Player playerglobal swcs (* 5)    PLAYERGLOBAL_HOME
+
+Optional: Text Layout Framework (* 6)         TLF_HOME
+
+Optional: Adobe Extension Manager CS5 (* 7)   ADOBE_EXTENSION_MANAGER
+
+---------------------------------------------------------------------
+
+* 1)
+The bin directories for ANT_HOME and JAVA_HOME should be added to your PATH.
+
+On Windows, set PATH to
+
+    PATH=%PATH%;%ANT_HOME%\bin;%JAVA_HOME%\bin
+
+On the Mac (bash), set PATH to
+
+    export PATH='$PATH:$ANT_HOME/bin:$JAVA_HOME/bin'
+
+On Linux make sure your path includes ANT_HOME and JAVA_HOME.
+
+* 2)
+If you are using Java SDK 1.7 or greater on a Mac you must use Ant 1.8 or
+greater. If you use Java 1.7 with Ant 1.7, ant reports the java version as
+1.6 so the JVM args for the data model (-d32/-d64) will not be set correctly
+and you will get compile errors.
+
+* 3)
+The Adobe AIR integration kit for Windows can be downloaded from:
+
+   http://airdownload.adobe.com/air/win/download/15.0/AdobeAIRSDK.zip
+
+The Adobe AIR integration kit for Mac can be downloaded from:
+
+    http://airdownload.adobe.com/air/mac/download/15.0/AdobeAIRSDK.tbz2
+
+The Adobe AIR integration kit for Linux can be downloaded from:
+
+    http://airdownload.adobe.com/air/lin/download/2.6/AdobeAIRSDK.tbz2
+
+Download the AIR SDK for your platform and unzip it. Set AIR_HOME to the
+absolute path of the AIR SDK directory.
+
+This version of the Apache Flex SDK was certified for use with Adobe AIR 3.7
+and is compatible with version 3.1 and up. It has been fully tested on AIR 3.7,
+4 and 15.
+
+* 4)
+The Adobe Flash Player content debuggers can be found here:
+
+    http://www.adobe.com/support/flashplayer/downloads.html
+
+This version of the Apache Flex SDK was certified for use with Adobe Flash
+Player 11.1, and is compatible with version 10.2 and up. It has been tested
+with versions 11.1, 11.7, 13.0 and 15.0 on Windows and Mac. It has been
+compiled against other Adobe Flash Player versions but has not been fully
+tested. It has not been fully tested on Linux.
+
+On Windows, set FLASHPLAYER_DEBUGGER to the absolute path including the
+filename of the FlashPlayerDebugger.exe. Note the filename of flash player
+debugger maybe different, e.g. C:\MyPath\FlashPlayerDebugger.exe
+
+On the Mac, set FLASHPLAYER_DEBUGGER to the absolute path of
+'Flash Player Debugger.app/Contents/MacOS/Flash Player Debugger'
+
+On Linux, set FLASHPLAYER_DEBUGGER to the absolute path of flashplayerdebugger.
+
+* 5)
+The Adobe Flash Player playerglobal.swc for 11.1 can be downloaded from:
+
+    http://download.macromedia.com/get/flashplayer/updaters/11/playerglobal11_1.swc
+
+Set PLAYERGLOBAL_HOME to the absolute path of the player directory (not
+including the version subdirectory). The target-player option controls which
+PLAYERGLOBAL_HOME subdirectory is used.
+
+Additional information about downloading and setting up this and/or other
+versions of the Adobe Flash Player can be found in the section
+'Adobe Flash Player Version Support' below.
+
+* 6)
+The build scripts assume that the source code folder containing the Apache Flex
+Text Layout Framework root folder ('flex-tlf') is at the same level as the SDK
+root folder ('flex-sdk'). See 'Getting the source code', below. If this is not
+the case on your system, then you must set the TLF_HOME environment variable to
+point to your TLF root folder.
+
+* 7)
+The Adobe Extension Manager is only required for those creating releases or
+testing changes to the flash-integration SWC. Note that if you change APIs on
+classes that flash-integration depends on, you may need to update
+flash-integration.
 
-	 git clone https://git-wip-us.apache.org/repos/asf/flex-tlf.git tlf
-	 cd tlf
-	 git checkout develop
+On Windows, download the Adobe Extension Manager from:
 
-    In an Apache Flex source code package hosted on the distribution server or
-    one of its mirrors, the Text Layout Framework code is already included in
-    the package.  This is also true for the convenience package.
+    http://download.macromedia.com/pub/dw_exchange/extension_manager/win/AdobeExtensionManager5All.zip
 
-    Linux support is currently experimental and you may run into issues. Apache
-    Flex would like to see a fully supported Linux release, but we need support
-    from the community in order to do that. Please help out if you can.
+and set ADOBE_EXTENSION_MANAGER to the absolute path of
+'Adobe Extension Manager CS5.exe'
 
-    For further information visit http://flex.apache.org/download-source.html
+On Mac, download the Adobe Extension Manager from:
 
-Building Apache Flex 4.13.0
-=========================
+    http://download.macromedia.com/pub/dw_exchange/extension_manager/mac/AdobeExtensionManager5All.dmg
 
-    Apache Flex is a large project. It requires some build tools which must be
-    installed prior to building Flex and it depends on some external software
-    which are downloaded as part of the build process.  Some of these have
-    different licenses.  See the Software Dependencies section for more
-    information on the external software dependencies.
+and set ADOBE_EXTENSION_MANAGER to the absolute path of
+'Adobe Extension Manager CS5.app/Contents/MacOS/Adobe Extension Manager CS5'
 
-    From Apache's perspective, the Adobe Flash Player and Adobe AIR have
-    excluded licenses so they can not be bundled with the Apache Flex binaries.
-    They must be installed prior to building Apache Flex.
+On Linux, no Adobe Extension Manager exists.
 
-    Linux support is currently experimental and while it is possible to compile
-    the SDK it has not been fully tested so you may run into issues.
 
-Install Prerequisites
----------------------
+Get the source code
+-------------------
 
-    Before building Flex you must install the following software and set the
-    corresponding environment variables using absolute file paths.  Relative
-    file paths will result in build errors.
+The Apache Flex SDK source code uses git for SCM.
 
-    The environment variables PLAYERGLOBAL_HOME, AIR_HOME, FLASHPLAYER_DEBUGGER,
-    TLF_HOME, and ADOBE_EXTENSION_MANAGER can also be set in the property file
-    called env.properties. See the env-template.properties file for
-    instructions.
+You can get the latest source ('develop' branch) using the following commands:
 
-    The Adobe Flash Player playerglobal.swc is needed to compile all the
-    components
-    with the exception of the airframework and airspark components which require
-    airglobal.swc from the AIR Integration Kit.  The AIR Integration kit is also
-    needed to build and debug mobile applications.  The Adobe Flash Player
-    content debugger is used by checkintests and other pieces of the test
-    subsystem to run compiled applications.
+    git clone https://git-wip-us.apache.org/repos/asf/flex-sdk.git flex-sdk
+    cd flex-sdk
+    git checkout develop
 
-    The build scripts assume that the source code folder containing the Text
-    Layout Framework (tlf) folder is at the same level as the sdk folder or
-    located inside the frameworks/projects folder.   If this is not true, then
-    you must set the TLF_HOME environment variable to point to the tlf folder.
+The Apache Flex SDK requires source code from the Apache Flex Text Layout
+Framework (TLF). To get the latest source for TLF ('develop' branch), use the
+following commands:
 
-    ==================================================================================
-    SOFTWARE                                    ENVIRONMENT VARIABLE (absolute paths)
-    ==================================================================================
+    git clone https://git-wip-us.apache.org/repos/asf/flex-tlf.git flex-tlf
+    cd flex-tlf
+    git checkout develop
 
-    Java SDK 1.6 or greater (*1)                JAVA_HOME
-        (for Java 1.7 see note at (*2))
+For further information visit:
 
-    Ant 1.7.1 or greater (*1)                   ANT_HOME
-        (for Java 1.7 see note at (*2))
+    http://flex.apache.org/download-source.html
 
-    Adobe AIR Integration Kit (*3)              AIR_HOME
 
-    Adobe Flash Player Content Debugger (*4)    FLASHPLAYER_DEBUGGER
+Build the SDK
+-------------
 
-    Adobe Flash Player playerglobal swcs (*5)   PLAYERGLOBAL_HOME
+When you have all the prerequisites in place and the environment variables set,
+use these commands:
 
-    Adobe Extension Manager CS5 (*6)            ADOBE_EXTENSION_MANAGER
+    cd <flex-sdk>
+    ant main
 
-    Text Layout Framework                       TLF_HOME
+to download the third party dependencies and build the source. You will be
+prompted to acknowledge and/or confirm some of the downloads. Since the
+third-party dependencies take a little while to download and they don't change
+very often, they are not cleaned with the regular clean target.
 
-    ==================================================================================
+If you would like to build the RSLs, use:
 
-    *1) The bin directories for ANT_HOME and JAVA_HOME should be added to your
-        PATH.
+    ant frameworks-rsls
 
-        On Windows, set PATH to
+To clean the build, of everything other than the downloaded third-party
+dependencies use:
 
-            PATH=%PATH%;%ANT_HOME%\bin;%JAVA_HOME%\bin
+    ant clean
 
-        On the Mac (bash), set PATH to
+To clean the build, of everything, including the downloaded third-party
+dependencies, use:
 
-            export PATH="$PATH:$ANT_HOME/bin:$JAVA_HOME/bin"
+    ant super-clean
 
-         On Linux make sure you path include ANT_HOME and JAVA_HOME.
+To generate a source distribution package and a binary distribution package,
+use:
 
-    *2)  If you are using Java SDK 1.7 or greater on a Mac you must use Ant 1.8
-         or greater. If you use Java 1.7 with Ant 1.7, ant reports the java
-         version as 1.6 so the JVM args for the data model (-d32/-d64) will not
-         be set correctly and you will get compile errors.
+    ant -Dbuild.number=<YYYYMMDD> -Dbuild.noprompt= release
 
-    *3) The Adobe AIR integration kit for Windows can be downloaded from:
-           http://airdownload.adobe.com/air/win/download/15.0/AdobeAIRSDK.zip
+The packages can be found in the 'out' subdirectory.
 
-         The Adobe AIR integration kit for Mac can be downloaded from:
-            http://airdownload.adobe.com/air/mac/download/15.0/AdobeAIRSDK.tbz2
+To build the ASDoc package, use:
 
-          The Adobe AIR integration kit for Linux can be downloaded from:
-            http://airdownload.adobe.com/air/lin/download/2.6/AdobeAIRSDK.tbz2
+    ant asdoc-package
 
-        This version of Apache Flex was certified for use with AIR 15.0, and
-        should be compatible with versions of AIR newer than 3.1. It has been
-        fully tested on AIR 3.7, 4 and 15.
+To get a brief listing of all the targets type, use:
 
-        Download the AIR SDK for your platform and unzip it. Set AIR_HOME to the
-        absolute path of the AIR SDK directory.
+    ant -projecthelp
 
-    *4) The Adobe Flash Player content debuggers can be found here:
-            http://www.adobe.com/support/flashplayer/downloads.html
 
-        This version of Apache Flex was certified for use with Adobe Flash
-        Player 11.1, and is compatible with versions 10.2 through 15.0. It has
-        been tested with versions 11.1, 11.7, 11.8, 11.9, 12.0, 13.0, 14.0 
-        and 15.0 on Windows and Mac. It has been compiled against other Adobe 
-        Flash Player versions but has not been fully tested. It has not been 
-        fully tested on Linux.
+Prepare the SDK for use with an IDE
+-----------------------------------
 
-        On Windows, set FLASHPLAYER_DEBUGGER to the absolute path including the
-        filename of the FlashPlayerDebugger.exe. Note the filename of flash
-        player debugger maybe different.
-           e.g. C:\MyPath\FlashPlayerDebugger.exe
+If you want to use the SDK you built from source in Adobe Flash Builder, you
+need to run these commands and scripts:
 
-        On the Mac, set FLASHPLAYER_DEBUGGER to the absolute path of
-        Flash Player Debugger.app/Contents/MacOS/Flash Player Debugger
+    cd <flex.dir>
+    ant frameworks-rsls
+    ./ide/constructFlexForIDE.[sh/bat]
+    (Mac only: ./ide/addAIRtoSDK.sh)
 
-        On Linux, set FLASHPLAYER_DEBUGGER to the absolute path of
-        flashplayerdebugger
+This builds the RSLS for the SDK and copy some IDE related files from the Adobe
+Flex SDK 4.6. On a Mac you will need to run the 'addAIRtoSDK.sh' script to
+complete the installation.
 
-    *5) The Adobe Flash Player playerglobal.swc for 11.1 can be downloaded from:
-            http://download.macromedia.com/get/flashplayer/updaters/11/playerglobal11_1.swc
+To create an SDK for another IDE, or if you want to use a different version of
+Adobe AIR (Adobe Flex 4.6 uses Adobe AIR 3.1), run:
 
-        Use URL above to download playerglobal11_1.swc. Create the directory,
-        player/11.1 and copy playerglobal11_1.swc to
-        player/11.1/playerglobal.swc.
+    /ide/flashbuilder/makeApacheFlexForIDE.bat (on Windows)
+    /ide/flashbuilder/makeApacheFlexForIDE.sh (on Mac and Linux)
 
-        Set PLAYERGLOBAL_HOME to the absolute path of the player directory (not
-        including the version subdirectory). The target-player option controls
-        which PLAYERGLOBAL_HOME subdirectory is used.
 
-        Information about downloading, setting up and support of the Adobe Flash
-        Player can be found in the section "Adobe Flash Player Version Support" below.
 
-    *6) The Adobe Extension Manager is only required for those creating releases
-        or testing changes to the flash-integration swc.  Note that if you
-        change APIs on classes that flash-integration depends on, you may need
-        to update flash-integration.
+Using the Binary Distribution
+=============================
 
-        The Adobe Extension Manager for Windows can be downloaded from:
-            http://download.macromedia.com/pub/dw_exchange/extension_manager/win/AdobeExtensionManager5All.zip
+In order to use the binary distribution of the SDK, you must first download the
+third-party dependencies. First, make sure your system is good to go: see
+'Prepare your system' above. Note: you cannot use the env.properties file to
+set the environment variables when you use the Binany Distribution. Now, use:
 
-         The Adobe Extension Manager for Mac can be downloaded from:
-            http://download.macromedia.com/pub/dw_exchange/extension_manager/mac/AdobeExtensionManager5All.dmg
+    cd <flex-sdk>/frameworks
+    ant thirdparty-downloads
 
-        On Windows, set ADOBE_EXTENSION_MANAGER to the absolute path of "Adobe
-        Extension Manager CS5.exe"
+To complete the setup of the SDK, follow the instructions in the
+'Prepare the SDK for use with an IDE' section above.
 
-        On Mac, set ADOBE_EXTENSION_MANAGER to the absolute path of "Adobe
-        Extension Manager CS5.app"
 
-        On Linux, no Adobe Extension Manager exists and there's nothing that
-        needs to be done here.
 
 FlashPlayer Configuration
--------------------------
+=========================
 
-    For testing, the Adobe Flash Player's mm.cfg file must have the following
-    entries
+For testing, the Adobe Flash Player's mm.cfg file must have the following
+entries
 
-        ErrorReportingEnable=1
-        TraceOutputFileEnable=1
+    ErrorReportingEnable=1
+    TraceOutputFileEnable=1
 
-    and a FlashPlayerTrust file must allow local SWFs to access local files.
+and a FlashPlayerTrust file must allow local SWFs to access local files.
 
-    More information about these settings can be found here:
-        http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7c95.html
+More information about these settings can be found here:
+
+    http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7c95.html
+
+
 
 Other Locale Support
---------------------
+====================
 
-    The Apache Flex SDK defaults to using the en_US locale and SDK error
-    messages are by default displayed in American English.
+The Apache Flex SDK defaults to using the en_US locale and SDK error messages
+are by default displayed in American English.
 
-    To compile the SDK for another locale either:
+To compile the SDK for another locale either:
 
-    Change the locale in the build.properties file to have a value other than
-    "en_US".  For this new locale to take effect the SDK needs to be recompiled.
-    For example, to use the Australian English locale change locale to have a
-    value of "en_AU"
-    like so:
+Change the locale in the build.properties file to have a value other than
+'en_US'. For this new locale to take effect the SDK needs to be recompiled. For
+example, to use the Australian English locale change locale to have a value of
+'en_AU' like so:
 
-        locale = en_AU
+    locale = en_AU
 
-    OR
+OR
 
-    Compile the SDK with a -Dlocale=<locale> option, where <locale> is the new
-    locale to compile the SDK against.
+Compile the SDK with a -Dlocale=<locale> option, where <locale> is the new
+locale to compile the SDK against.
 
-    To compile all supported locales, which may take some time, use
+To compile all supported locales, which may take some time, use
 
-        ant other.locales
+    ant other.locales
 
-    The list of supported locales currently include:
-        da_DK	el_GR	en_GB	fi_FI	it_IT	nb_NO	pt_PT	zh_CN
-        de_CH	en_AU	en_US	fr_CH	ja_JP	nl_NL	ru_RU	zh_TW
-        de_DE	en_CA	es_ES	fr_FR	ko_KR	pt_BR	sv_SE
+The list of supported locales currently include:
+    da_DK    el_GR    en_GB    fi_FI    it_IT    nb_NO    pt_PT    zh_CN
+    de_CH    en_AU    en_US    fr_CH    ja_JP    nl_NL    ru_RU    zh_TW
+    de_DE    en_CA    es_ES    fr_FR    ko_KR    pt_BR    sv_SE
 
-    The Apache Flex SDK has only been tested for the en_US locale, however there
-    is unlikely to be any issues with a SDK compiled for another locales.
+The Apache Flex SDK has only been tested for the en_US locale, however there is
+unlikely to be any issues with a SDK compiled for another locales.
+
 
 Adobe Flash Player Version Support
-----------------------------------
+==================================
 
-    The Apache Flex SDK defaults to using the Adobe Flash Player 11.1. The SDK
-    can be used with Flash Player versions 10.2, 10.3, 11.0, 11.1, 11.2, 11.3,
-    11.4, 11.5, 11.6, 11.7, 11.8, 11.9, 12.0, 13.0, 14.0 and 15.0.
+The Apache Flex SDK defaults to using the Adobe Flash Player 11.1. The SDK can
+be used with Flash Player versions 10.2 and up.
 
-    It is recommended that you update to the latest version of Adobe Flash
-    Player.  Newer versions of the Adobe Flash player address security
-    vulnerabilities, fix bugs/issues, increase stability, and implement new
-    features.
+It is recommended that you update to the latest version of Adobe Flash Player.
+Newer versions of the Adobe Flash player address security vulnerabilities, fix
+bugs/issues, increase stability, and implement new features.
 
-    To use the SDK for another version of the Adobe Flash Player either:
+To use the SDK for another version of the Adobe Flash Player either:
 
-    Change the flex-config.xml configuration file to specify another version of
-    the Adobe Flash Player.
+Change the flex-config.xml configuration file to specify another version of the
+Adobe Flash Player.
 
-    OR
+OR
 
-    Change the playerglobal.version in the build.properties file to have a value
-    other than "11.1". For this change to take effect the SDK needs to be
-    recompiled.  For example to compile against the latest version of the Adobe
-    Flash Player set the value of playerglobal.version to be "14.0" like so:
+Change the playerglobal.version in the build.properties file to have a value
+other than '11.1'. For this change to take effect the SDK needs to be
+recompiled. For example to compile against the latest version of the Adobe
+Flash Player set the value of playerglobal.version to be '14.0' like so:
 
-        playerglobal.version = 14.0
+    playerglobal.version = 14.0
 
-    OR
+OR
 
-    Compile the SDK with a -Dplayerglobal.version=<version> option, where
-    <version> is the Adobe Flash Player version to compile the SDK against.
+Compile the SDK with a -Dplayerglobal.version=<version> option, where <version>
+is the Adobe Flash Player version to compile the SDK against.
 
+Different versions of the Adobe Flash Player require different versions of
+playerglobal.swc.
 
-    Different versions of the Adobe Flash Player require different versions of
-    playerglobal.swc.
-
-    These can be found at:
+These can be found at:
 
     http://download.macromedia.com/get/flashplayer/installers/archive/playerglobal/playerglobal10_2.swc
     http://download.macromedia.com/get/flashplayer/installers/archive/playerglobal/playerglobal10_3.swc
-    http://download.macromedia.com/get/flashplayer/updaters/11/playerglobal11_0.swc
-    http://download.macromedia.com/get/flashplayer/updaters/11/playerglobal11_1.swc
-    http://download.macromedia.com/get/flashplayer/updaters/11/playerglobal11_2.swc
-    http://download.macromedia.com/get/flashplayer/updaters/11/playerglobal11_3.swc
-    http://download.macromedia.com/get/flashplayer/updaters/11/playerglobal11_4.swc
-    http://download.macromedia.com/get/flashplayer/updaters/11/playerglobal11_5.swc
-    http://download.macromedia.com/get/flashplayer/updaters/11/playerglobal11_6.swc
-    http://download.macromedia.com/get/flashplayer/updaters/11/playerglobal11_7.swc
-    http://download.macromedia.com/get/flashplayer/updaters/11/playerglobal11_8.swc
-    http://download.macromedia.com/get/flashplayer/updaters/11/playerglobal11_9.swc
-    http://download.macromedia.com/get/flashplayer/updaters/12/playerglobal12_0.swc
-    http://download.macromedia.com/get/flashplayer/updaters/13/playerglobal13_0.swc
-    http://download.macromedia.com/get/flashplayer/updaters/14/playerglobal14_0.swc
-    http://download.macromedia.com/get/flashplayer/updaters/15/playerglobal15_0.swc
 
-    Copy the target playerglobal.swc to the directory:
+and
 
-        frameworks/libs/player/<version>/playerglobal.swc
+   http://download.macromedia.com/get/flashplayer/updaters/<version.major>/playerglobal<version.major>_<version.minor>.swc
 
-    Where <version> is the major and minor version numbers of the Adobe Flash
-    Player separated by a period or full stop.
+(e.g. http://download.macromedia.com/get/flashplayer/updaters/11/playerglobal11_1.swc)
 
-    If all of the playerglobal swcs where installed the frameworks/libs/player
-    directory structure would look like this.
+Copy the target playerglobal.swc to the directory:
 
-        /frameworks
-            /libs
-                /player
-                    /10.2
-                         /playerglobal.swc
-                    /10.3
-                         /playerglobal.swc
-                    /11.0
-                         /playerglobal.swc
-                    /11.2
-                         /playerglobal.swc
-                    /11.2
-                         /playerglobal.swc
-                    /11.3
-                         /playerglobal.swc
-                    /11.4
-                         /playerglobal.swc
-                    /11.5
-                         /playerglobal.swc
-                    /11.6
-                         /playerglobal.swc
-                    /11.7
-                         /playerglobal.swc
-                    /11.8
-                         /playerglobal.swc
-                    /11.9
-                         /playerglobal.swc
-                    /12.0
-                         /playerglobal.swc
-                    /13.0
-                         /playerglobal.swc
-                    /14.0
-                         /playerglobal.swc
-                    /15.0
-                         /playerglobal.swc
+    frameworks/libs/player/<version>/playerglobal.swc
 
-    Apache Flex has been tested with Adobe Flash Player 11.1, 11.5, 11.7, 11.8,
-    11.9, 12.0, 13.0, 14.0 and 15.0 on Windows and Mac.
+Where <version> is the major and minor version numbers of the Adobe Flash
+Player separated by a period or full stop.
 
-    Apache Flex has not been tested on Linux so some issues may exist in this
-    release.
-
-    It compiles against other Adobe Flash Player versions and is expected to
-    work but there may be some issues, particularly with the earlier 10.2 and
-    10.3 versions of the Adobe Flash Player.
 
 Software Dependencies
----------------------
+=====================
 
-    Apache Flex uses third-party code that will be downloaded as part of the
-    Apache Flex build.  In addition, there is some optional third-party code
-    that you can choose to download if you would like to take advantage of the
-    features offered and you agree to the license terms.
+The Apache Flex SDK uses third-party code that will be downloaded as part of
+the build. In addition, there is some optional third-party code that you can
+choose to download if you would like to take advantage of the features offered
+and you agree to the license terms.
 
-    The Apache Version 2.0 license is in the LICENSE file.
+The Apache Version 2.0 license is in the LICENSE file.
 
-    The following dependencies have licenses which are, or are compatible with,
-    the Apache Version 2.0 license.  You will not be prompted to acknowledge the
-    download.  Most of the jars are installed in lib/external.
+The following dependencies have licenses which are, or are compatible with, the
+Apache Version 2.0 license. You will not be prompted to acknowledge the
+download. Most of the jars are installed in lib/external.
 
-        batik - http://archive.apache.org/dist/xmlgraphics/batik/batik-1.6.zip
-        commons-collections - http://archive.apache.org/dist/commons/collections/binaries/commons-collections-3.0.tar.gz
-        commons-discovery - http://archive.apache.org/dist/commons/discovery/binaries/commons-discovery-0.2.tar.gz
-        commons-logging - http://archive.apache.org/dist/commons/logging/binaries/commons-logging-1.0.4.tar.gz
-        javacc - http://java.net/projects/javacc/downloads/download/javacc-5.0.tar.gz
-        saxon9 - http://sourceforge.net/projects/saxon/files/Saxon-B/9.1.0.8/saxonb9-1-0-8j.zip/download
-        velocity - http://archive.apache.org/dist/velocity/engine/1.4/velocity-1.4.tar.gz
-        xalan - http://archive.apache.org/dist/xml/xalan-j/binaries/xalan-j_2_6_0-bin.tar.gz
-        xerces - http://archive.apache.org/dist/xerces/j/Xerces-J-bin.2.9.1.zip
+    batik - http://archive.apache.org/dist/xmlgraphics/batik/batik-1.6.zip
+    commons-collections - http://archive.apache.org/dist/commons/collections/binaries/commons-collections-3.0.tar.gz
+    commons-discovery - http://archive.apache.org/dist/commons/discovery/binaries/commons-discovery-0.2.tar.gz
+    commons-logging - http://archive.apache.org/dist/commons/logging/binaries/commons-logging-1.0.4.tar.gz
+    javacc - http://java.net/projects/javacc/downloads/download/javacc-5.0.tar.gz
+    saxon9 - http://sourceforge.net/projects/saxon/files/Saxon-B/9.1.0.8/saxonb9-1-0-8j.zip/download
+    velocity - http://archive.apache.org/dist/velocity/engine/1.4/velocity-1.4.tar.gz
+    xalan - http://archive.apache.org/dist/xml/xalan-j/binaries/xalan-j_2_6_0-bin.tar.gz
+    xerces - http://archive.apache.org/dist/xerces/j/Xerces-J-bin.2.9.1.zip
 
-    The following dependencies have licenses which Apache considers to be
-    reciprocal licenses so you will be prompted to acknowledge the license
-    before the software is downloaded to your system. These files are installed
-    in frameworks/libs.
+The following dependencies have licenses which Apache considers to be
+reciprocal licenses so you will be prompted to acknowledge the license before
+the software is downloaded to your system. These files are installed in
+frameworks/libs.
 
-        osmf.swc
+    osmf.swc (Open Source Media Framework v1.0; used for video components)
 
-        Open Source Media Framework v1.0 used for video components
+    This file is extracted from:
 
-        This file is extracted from:
         http://sourceforge.net/projects/osmf.adobe/files/OSMF%201.0%20%28final%20source%2C%20ASDocs%2C%20PDF%20guides%2C%20and%20release%20notes%29/OSMF_1.0.zip/download
 
-        This software is released under the Mozilla Public License Version 1.1:
-        <http://www.mozilla.org/MPL/>
+    and is released under the Mozilla Public License Version 1.1:
 
-    The following dependencies have licenses which Apache considers to be not
-    compatible with the Apache License Version 2.0. You will be prompted to read
-    and agree to the license terms of the dependency before the software can be 
-    downloaded to your system.
-    These are optional components which enable additional features.  They are
-    installed in libs/external/optional.
+        http://www.mozilla.org/MPL/
 
-    flex-messaging-common.jar
-        Provides integration with Adobe BlazeDS.
+The following dependencies have licenses which Apache considers to be not
+compatible with the Apache License Version 2.0. You will be prompted to read
+and agree to the license terms of the dependency before the software can be
+downloaded to your system. These are optional components which enable
+additional features. They are installed in libs/external/optional.
 
-        This files are extracted from:
+    flex-messaging-common.jar (provides integration with Adobe BlazeDS)
+
+    This file is extracted from:
+
         http://fpdownload.adobe.com/pub/flex/sdk/builds/flex4.6/flex_sdk_4.6.0.23201B.zip
 
-        This software is released under an Adobe license:
-        <http://www.adobe.com/products/eulas/pdfs/adobe_flex_software_development_kit-combined-20110916_0930.pdf>
+    and is released under an Adobe license:
 
-    flex-fontkit.jar
-    afe.jar, adt.jar
-    aglj40.jar
-    rideau.jar
-        Adobe proprietary software which provides embedded font support.
+        http://www.adobe.com/products/eulas/pdfs/adobe_flex_software_development_kit-combined-20110916_0930.pdf
 
-        These jars are extracted from:
+    adt.jar, afe.jar, aglj40.jar, flex-fontkit.jar and rideau.jar (provides embedded font support)
+
+    These jars are extracted from:
+
         http://fpdownload.adobe.com/pub/flex/sdk/builds/flex4.6/flex_sdk_4.6.0.23201B.zip
 
-        This software is released under an Adobe license:
-        <http://www.adobe.com/products/eulas/pdfs/adobe_flex_software_development_kit-combined-20110916_0930.pdf>
+    and are released under an Adobe license:
 
-Using the Binary Distribution
------------------------------
-
-    You must download the third-party dependencies.
-
-    When you have all the prerequisites in place and the environment variables
-    set, (see Install Prerequisites above -- you cannot use the env.properties
-    file to set the environment variables for these steps.), use
-
-        cd <flex.dir>/frameworks
-        ant thirdparty-downloads
-
-    Additionally, you will need to build the RSLS for the SDK before you run the
-    batch files.
-
-        cd <flex.dir>
-        ant frameworks-rsls
-
-    To use this SDK in a IDE like Flash Builder 4.6 or 4.7 the SDK needs
-    several other files to be packaged and integrated with the Apache Flex SDK.
-
-	If you have an existing installation of Flash Builder run:
-
-		/ide/constructFlexForIDE.sh (on Mac and Linux)
-		/ide/constructFlexForIDE.bat (on Windows)
-
-	This will create an Apache Flex 4.13.0 SDK that can be used with Flash
-        Builder by copying the required files from the Adobe Flex 4.6 SDK.
-
-	To create an SDK for other IDE or if you want to use Adobe AIR 14.0
-        (rather than AIR 3.1 contained in Adobe Flex 4.6) run:
-
-		/ide/flashbuilder/makeApacheFlexForIDE.sh (on Mac and Linux)
-		/ide/flashbuilder/makeApacheFlexForIDE.bat (on Windows)
-
-	This will create an Apache Flex 4.13.0 SDK that can be used by an IDE by
-    downloading Adobe Flex 4.6 SDK and Adobe AIR 14.0.
-
-Building the Framework in a Binary Distribution
------------------------------------------------
-
-    The source for most of the framework is included in the binary distribution.
-    It can be useful if you wish to debug and/or extend components.
-
-    When you have all the prerequisites in place and the environment variables
-    set, (see Install Prerequisites above), use
-
-        cd <flex.dir>/frameworks
-        ant main        (or just ant since the default target is main)
-
-    to download the third-party dependencies and build the Flex framework.  You 
-    may be prompted to acknowledge some of the downloads.  Since the third-party
-    dependencies take a little while to download and they don't change very
-    often, they are not cleaned with the regular clean target.
-
-    To clean the build, of everything other than the downloaded third-party
-    dependencies use
-
-        ant clean
-
-    To clean the build, of everything, including the downloaded third-party
-    dependencies use
-
-        ant super-clean (which is just thirdparty-clean followed by clean)
-
-Building the Source in the Source Distribution
-----------------------------------------------
-
-    The source for both the Flex compiler and the Flex framework is included in
-    the source distribution.  The compiler is in the modules directory and the
-    framework is in the frameworks directory.
-
-	Because the sdk uses the Text Layout Framework, you will have to clone
-        it too and link it to the textLayout project of the sdk:
-
-	cd <flex.dir>/..
-	git clone https://git-wip-us.apache.org/repos/asf/flex-tlf.git tlf
-
-    When you have all the prerequisites in place and the environment variables
-    set (see Install Prerequisites above), use
-
-        cd <flex.dir>
-        ant main        (or just ant since the default target is main)
-
-    to download the thirdparty dependencies and build the source.  You may be
-    prompted to acknowledge and/or confirm some of the downloads.  Since the
-    third-party dependencies take a little while to download and they don't
-    change very often, they are not cleaned with the regular clean target.
-
-    If you would like to build the RSLs, use
-
-        ant frameworks-rsls
-
-    To clean the build, of everything other than the downloaded third-party
-    dependencies use
-
-        ant clean
-
-    To clean the build, of everything, including the downloaded third-party
-    dependencies use
-
-        ant super-clean (which is just thirdparty-clean followed by clean)
-
-    To generate a source distribution package and a binary distribution package
-    use
-
-        ant -Dbuild.number=<YYYYMMDD> -Dbuild.noprompt= release
-
-    The packages can be found in the "out" subdirectory.
-
-    To build the ASDoc package
-
-        ant asdoc-package
-
-    To get a brief listing of all the targets type
-
-        ant -projecthelp
+        http://www.adobe.com/products/eulas/pdfs/adobe_flex_software_development_kit-combined-20110916_0930.pdf
 
 
-Using the SDK in Flash Builder
-------------------------------
 
-    If you want to use the SDK you build from source in Flash Builder, you
-    need to run these commands/scripts:
+Thanks for using the Apache Flex SDK. Enjoy!
 
-        cd <flex.dir>
-        ant frameworks-rsls
-        ./ide/constructFlexForIDE.[sh/bat]
-        [if you're on a Mac, also run: ./ide/addAIRtoSDK.sh]
-
-Thanks for using Apache Flex.  Enjoy!
-
-                                          The Apache Flex Project
-                                          <http://flex.apache.org>
+                                      The Apache Flex Project
+                                      <http://flex.apache.org>
diff --git a/RELEASE_NOTES b/RELEASE_NOTES
index c79379f..07c05c9 100644
--- a/RELEASE_NOTES
+++ b/RELEASE_NOTES
@@ -1,3 +1,117 @@
+Apache Flex 4.14.0
+==================
+
+Apache Flex 4.14.0 is an update to Apache Flex 4.13.0
+
+Known Issues
+_____________
+
+Adobe Flash Builder Integration
+
+Adobe Flash Builder 4.7 and Adobe Flash Builder 4.6 both contain a bug where,
+when generating the .mxml file for a new project that uses Apache Flex SDK
+4.10.0 or later Spark Application, Flash Builder will incorrectly insert the
+attribute:
+
+    layout="absolute"
+
+This results in a compile error in the new project.  The remedy is to simply
+remove the errant attribute.
+
+The following wiki page has been set up to contain the latest news on Adobe's
+attempt to correct this problem:
+
+    https://cwiki.apache.org/confluence/display/FLEX/Adobe+Flash+Builder+'New+Project'+Bug
+
+Adobe has provided a patch for Flash Builder 4.7 that resolves this issue:
+
+    http://helpx.adobe.com/flash-builder/kb/flex-new-project-issue--.html
+
+Differences from Apache Flex 4.13.0 include:
+
+AIR and Flash Player support
+------------------------------
+ - Support Flash Player 15.0
+ - Support for AIR 15.0
+
+SDK Changes
+-------------
+- iOS 7 and Android 4.x Mobile theme support
+- new theme: FlatSpark
+- Spark RichTextEditor
+
+Bug Fixes
+----------
+Below is a complete list of all the bug fixes that have been included since the
+last full release, Apache Flex 4.13.0. If you would like specific information
+about any of the items below, go to
+
+    https://issues.apache.org
+
+and search for the JIRA Issue Number by using the Quick Search. Details of the
+bug and its fix will be included on the resulting page.
+
+JIRA Issue Number and Summary
+--------------------------------------------------------------------------------
+FLEX-34454  Setting modalTransparencyBlur to 0 gives blur when Alert ist shown
+            on top of modal Dialog
+FLEX-34373  spark.components.Alert should set a focus to defaultButton
+FLEX-34557  Platform.isBrowser does not work correctly
+FLEX-34213  Flex mobile list performance
+FLEX-34531  mx.charts.series.HLOCSeries excluding a style being used in example
+FLEX-34476  Added RichTextEditor
+FLEX-34323  Allow the mustella tests directory to be located anywhere
+FLEX-34460  adt is missing in windows install
+FLEX-34633  HSlider track (Android4 skin) not being filled if thumb position set
+            programmatically
+FLEX-34457  in one case, text selection using the arrow keys doesn't work in
+            RichEditableText
+FLEX-34634  DataGroup fires RendererExistenceEvent with a null renderer when an
+            offscreen item is removed/replaced in the dataProvider
+FLEX-34636  Release build does not work as described in README on OS X
+FLEX-34543  Invalid event data when saving or cancelling grid item editor
+            session after data provider changes
+FLEX-28291  Linear Vector Layout on the ComboBox
+FLEX-34212  invalidIndex RTE in LinearLayoutVector when mouse scrolling List
+FLEX-34608  IOS 7 Hslider (Scrubber) skin
+FLEX-34611  Application crash when textFlow property set to null with
+            preserveSelection
+FLEX-34606  Redundant variable
+FLEX-34592  Can't use optionnal importer for TLF plainTextFormat and
+            TextLayoutFormat
+FLEX-34390  SkinnableTextBase bug (found in Flex 4.13.0 RC2)
+FLEX-34538  Spark Alert component does not add proper padding
+FLEX-34539  Callout skin assumes top level application is s:Application
+FLEX-34556  Starting an app in portrait on an iPad results in wrong DPI
+FLEX-34318  [Mavenizer] Refactor the Mavenizer in preparation of future
+            mavenized releases of flex
+FLEX-34458  HierarchicalCollectionViewCursor.current returns wrong item after
+            previous sibling is removed when current was "${L}"
+            (CursorBookmark.LAST)
+FLEX-34385  Document try..catch limitation
+FLEX-34119  mx.collections.HierarchicalCollectionViewCursor causes CursorError
+            RTE from ListCollectionView when the underlying collections change
+FLEX-32541  sortable ou sortableColumns = false still shows box of sorting and 
+            sortItemRenderer = null throws error
+FLEX-33732  Mobile theme support Android 4.x look and feel
+FLEX-34424  HierarchicalCollectionViewCursor.current returns null when previous 
+            sibling is removed
+FLEX-34456  HierarchicalCollectionViewCursors interfere with each other's 
+            operation
+FLEX-33054  Cursor Seek in HierarchicalCollectionViewCursor operates on wrong 
+            child level
+FLEX-34440  'Bookmark no longer valid' CursorError caused by 
+            HierarchicalCollectionView's conversion of 
+            CollectionEventKind.REPLACE into CollectionEventKind.REMOVE
+FLEX-34034  You can paste a newline code to a single-line TextInput.
+FLEX-34450  mx.validators.EmailValidator does not accept ".email" domain
+FLEX-34378  mx:DateValidator allows multiple separator chars
+
+Other fixes (no JIRA issue created):
+- correct case for osmf.swc so compiles on Linux work
+- Adding a mixin to set android os version during AIR simulation
+
+
 Apache Flex 4.13.0
 =================
 
diff --git a/build.xml b/build.xml
index 8acac59..06b7b8f 100644
--- a/build.xml
+++ b/build.xml
@@ -1799,6 +1799,7 @@
                 <exclude name="CONTRIBUTING"/>
                 <exclude name="modules/thirdparty/batik/lib/**/LICENSE*.txt"/>
                 <exclude name="modules/thirdparty/batik/lib/**/README*.txt"/>
+                <exclude name="frameworks/projects/flatspark/src/flatspark/assets/fonts/**/OFL.txt"/>
                 <!-- exclude w3c sources -->
                 <exclude name="modules/thirdparty/batik/resources/org/apache/flex/forks/batik/dom/svg/resources/*.mod"/>
                 <exclude name="modules/thirdparty/batik/resources/org/apache/flex/forks/batik/dom/svg/resources/*.dtd"/>
diff --git a/frameworks/build.xml b/frameworks/build.xml
index fcfa9f9..3780f11 100644
--- a/frameworks/build.xml
+++ b/frameworks/build.xml
@@ -204,6 +204,9 @@
 		<condition property="playerglobal.swfversion" value="25">
 			<equals arg1="${playerglobal.version}" arg2="14.0" />
 		</condition>
+		<condition property="playerglobal.swfversion" value="26">
+			<equals arg1="${playerglobal.version}" arg2="15.0" />
+		</condition>
 	</target>	
 
     <!--
diff --git a/frameworks/downloads.xml b/frameworks/downloads.xml
index 1baff1b..11dafec 100644
--- a/frameworks/downloads.xml
+++ b/frameworks/downloads.xml
@@ -26,8 +26,9 @@
 	<property file="${FLEX_HOME}/local.properties"/>
 
 	<property name="download.dir" value="${FLEX_HOME}/in"/>
-	
-    <!-- See note in modules/download.xml about this property. --> 
+
+    <property name="lib.dir" value="${FLEX_HOME}/lib"/>
+    <!-- See note in modules/download.xml about this property. -->
     <property name="lib.opt.dir" value="${FLEX_HOME}/lib/external/optional"/>
 
     <property name="adobe.flex.dir" value="adobe_flex_sdk_4.6"/>
@@ -215,64 +216,29 @@
             </fileset>
         </delete>
     </target>
-    
-	<!--============================================================================= -->
+
+    <!--
+        flex-messaging-common.jar - BlazeDS interface for -service compiler option.
+    -->
+
+    <target name="blazeds-jar" depends="get-blazeds-jar"
+            description="Downloads and copies flex-messaging-common.jar to the optional lib directory."/>
+
+    <target name="get-blazeds-jar">
+        <available file="${download.dir}/flex-messaging-common.jar" type="file"
+                   property="apache.flex.blazeds.exists"/>
+
+        <antcall target="get-apache-flex-blazeds"/>
+
+        <copy file="${download.dir}/flex-messaging-common.jar"
+              todir="${lib.dir}" verbose="true"/>
+    </target>
+
+    <!--============================================================================= -->
 	<!--      Optional Jars.  Licenses are not compatible with Apache v2 license.     -->
 	<!--============================================================================= -->
 	
 	<!--
-        flex-messaging-common.jar - BlazeDS interface for -service compiler option
-        This does not get installed if build.noprompt is set.
-    -->
-    
-    <target name="blazeds-jar-check" unless="blazeds.donot.ask"
-        description="Checks if flex-messaging-common.jar is in optional lib directory.">
-        <available file="${lib.opt.dir}/flex-messaging-common.jar" property="blazeds.donot.ask"/>
-        <condition property="blazeds.donot.ask">
-            <isset property="build.noprompt"/>
-        </condition>
-    </target>
-    
-    <target name="blazeds-jar" depends="blazeds-jar-check,get-blazeds-jar" 
-        description="Downloads and copies flex-messaging-common.jar to the optional lib directory."/>
-
-    <!-- Prompt before downloading.  -->
-    <target name="ask-blazeds" unless="blazeds.donot.ask"
-        description="Prompt the user before downloading BlaseDS">
-
-        <property name="blazeds.prompt.text" 
-            value="Apache Flex can optionally integrate with Adobe BlazeDS.
-            ${line.separator}This feature requires flex-messaging-common.jar from the Adobe Flex SDK.
-            ${line.separator}The Adobe SDK license agreement for Adobe Flex 4.6 applies to this jar.
-            ${line.separator}This license is not compatible with the Apache v2 license.
-            ${adobe.flex.license}
-            ${line.separator}Do you want to install this jar from the Adobe Flex SDK?"/>
-        <input
-            message="${blazeds.prompt.text}"
-            validargs="y,n"
-            defaultvalue="n"
-            addproperty="input.blazeds.download"/>
-        <condition property="do.blazeds.install">
-            <equals arg1="y" arg2="${input.blazeds.download}"/>
-        </condition>
-        <!-- Only ask once per ant run.  -->
-        <property name="blazeds.donot.ask" value="set"/>
-    </target>
-        
-    <target name="get-blazeds-jar" depends="ask-blazeds" if="do.blazeds.install">
-
-        <available file="${download.dir}/${adobe.flex.dir}" type="dir"
-            property="adobe.flex.sdk.exists"/>
-        
-        <antcall target="get-adobe-flex-sdk"/>
-
-        <copy file="${download.dir}/${adobe.flex.dir}/lib/flex-messaging-common.jar" 
-            todir="${lib.opt.dir}" verbose="true"/>
-        <copy file="${download.dir}/${adobe.flex.dir}/license-adobesdk.htm" 
-            tofile="${lib.opt.dir}/flex-messaging-common-LICENSE.htm" verbose="true"/>
-    </target>
-
-	<!--
         Embedded Font Support
         This does not get installed if build.noprompt is set.
     -->
@@ -374,6 +340,13 @@
     <target name="clean-adobe-flex-sdk">
         <delete dir="${download.dir}/${adobe.flex.dir}"/>
     </target>
+
+    <target name="get-apache-flex-blazeds" unless="apache.flex.blazeds.exists"
+            description="Downloads the Apache Flex BlazeDS libraries">
+        <mkdir dir="${download.dir}"/>
+        <get src="https://builds.apache.org/view/E-G/view/Flex/job/flex-blazeds/lastSuccessfulBuild/artifact/modules/common/target/flex-messaging-common.jar"
+             dest="${download.dir}/flex-messaging-common.jar" />
+    </target>
     
     <target name="get_from_mirror">
         <condition property="usingmirror" value="true">
diff --git a/frameworks/projects/experimental/src/spark/components/Alert.as b/frameworks/projects/experimental/src/spark/components/Alert.as
index 770b454..b613739 100644
--- a/frameworks/projects/experimental/src/spark/components/Alert.as
+++ b/frameworks/projects/experimental/src/spark/components/Alert.as
@@ -396,7 +396,7 @@
          *  @productversion Flex 4.5
          */
         public static function show(message:String = "", title:String = "", flags:uint = OK, parent:Sprite = null, closeHandler:Function = null,
-                                    iconClass:Class = null, defaultButtonFlag:uint = 0 /* Alert.OK */, moduleFactory:IFlexModuleFactory = null):Alert {
+                                    iconClass:Class = null, defaultButtonFlag:uint = Alert.OK, moduleFactory:IFlexModuleFactory = null):Alert {
 
             var modal:Boolean = (flags & Alert.NONMODAL) ? false : true;
 
@@ -758,6 +758,42 @@
             return result;
         }
 
+		/**
+		 *  @private
+		 */
+		private function getDefaultButton():Button 
+		{
+			var label:String;
+			switch (_defaultButtonFlag) 
+			{
+				case YES :
+					label = YES_LABEL;
+					break;
+				case NO :
+					label = NO_LABEL;
+					break;
+				case OK :
+					label = OK_LABEL;
+					break;
+				case CANCEL :
+					label = CANCEL_LABEL;
+					break;
+				default :
+					label = '';
+					break;
+			}
+			
+			for each (var button:Button in _buttons) 
+			{
+				if (button.label === label) 
+				{
+					return button;
+				}
+			}
+			
+			return null;
+		}
+		
         /**
          *  @private
          */
@@ -790,9 +826,10 @@
                 awm.activate(this);
             }
             if (_buttons) {
-                if (_defaultButtonFlag >= 0 && _defaultButtonFlag < _buttons.length - 1) {
-                    _buttons[ _defaultButtonFlag ].setFocus();
-                    _buttons[ _defaultButtonFlag ].drawFocus(true);
+				var button:Button = getDefaultButton();
+				if (button) {
+					button.setFocus();
+					button.drawFocus(true);
                 }
             }
         }
diff --git a/frameworks/projects/experimental/src/spark/skins/AlertSkin.mxml b/frameworks/projects/experimental/src/spark/skins/AlertSkin.mxml
index 67afe58..f4882ee 100644
--- a/frameworks/projects/experimental/src/spark/skins/AlertSkin.mxml
+++ b/frameworks/projects/experimental/src/spark/skins/AlertSkin.mxml
@@ -232,6 +232,7 @@
 
 				</s:Group>
 				<s:VGroup width="100%" height="100%" paddingLeft="5" paddingRight="5" paddingBottom="5"
+						  paddingTop="5"
 						  verticalAlign="middle" horizontalAlign="center">
 					<s:RichText id="messageDisplay"
 							 left="9" right="3" top="1" bottom="0" minHeight="30" maxWidth="400"
diff --git a/frameworks/projects/flatspark/build.xml b/frameworks/projects/flatspark/build.xml
new file mode 100644
index 0000000..38f9c46
--- /dev/null
+++ b/frameworks/projects/flatspark/build.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+
+
+<project name="flatspark" default="main" basedir=".">
+
+    <property name="FLEX_HOME" location="${basedir}/../../.."/>
+    
+    <property file="${FLEX_HOME}/env.properties"/>
+    <property environment="env"/>
+    <property file="${FLEX_HOME}/build.properties"/>
+
+    <target name="main" depends="clean,compile" description="Clean build of flatspark.swc"/>
+
+    <target name="clean">
+        <delete failonerror="false">
+            <fileset file="${basedir}/bundles.properties"/>
+            <fileset dir="${FLEX_HOME}/frameworks/libs">
+                <include name="flatspark.swc"/>
+                <include name="flatspark.swc.incr"/>
+            </fileset>
+        </delete>
+    </target>
+
+    <target name="compile" description="Compiles flatspark.swc">
+        <echo message="Compiling frameworks/libs/flatspark.swc"/>
+
+        <!-- Load the <compc> task. We can't do this at the <project> level -->
+        <!-- because targets that run before flexTasks.jar gets built would fail. -->
+        <taskdef resource="flexTasks.tasks" classpath="${FLEX_HOME}/lib/flexTasks.jar"/>
+        <!--
+            This project builds a theme SWC containing skin classes.
+            It has no MXML tags and therefore no manifest.
+            Link in the classes (and their dependencies)
+            listed in SparkSkinsClasses.as.
+            Compile against framework.swc, but don't link it into flatspark.swc.
+            Link in accessibility support.
+            Include various CSS and asset files in the SWC.
+            Don't put any resources into the SWC. (The classes don't require any.)
+            Write a bundle list of referenced resource bundles
+            into the file bundles.properties in this directory.
+            (This should be an empty list.)
+        -->
+        <compc fork="true" 
+               output="${FLEX_HOME}/frameworks/libs/flatspark.swc">
+            <jvmarg line="${compc.jvm.args}"/>
+            <load-config filename="compile-config.xml" />
+            <arg value="+playerglobal.version=${playerglobal.version}" />
+            <arg value="+env.PLAYERGLOBAL_HOME=${env.PLAYERGLOBAL_HOME}" />
+        </compc>
+    </target>
+
+    <target name="doc" depends="clean-temp-docs" description="updates flatspark.swc with asdoc xml">
+        <!-- Load the <asdoc> task. We can't do this at the <project> level -->
+        <!-- because targets that run before flexTasks.jar gets built would fail. -->
+        <taskdef resource="flexTasks.tasks" classpath="${FLEX_HOME}/lib/flexTasks.jar"/>
+
+        <condition property="asdoc.jvm.args" value="-Xmx384m">
+            <os family="windows"/>
+        </condition>
+
+        <condition property="asdoc.jvm.args" value="-Xmx512m">
+            <os family="mac"/>
+        </condition>
+
+        <condition property="asdoc.jvm.args" value="-Xmx512m">
+            <os family="unix"/>
+        </condition>
+
+        <!-- Call asdoc to generate dita xml files -->
+        <asdoc output="${FLEX_HOME}/tempDoc" lenient="true" failonerror="true" keep-xml="true" skip-xsl="true" >
+            <compiler.source-path path-element="${basedir}/src"/>
+            <external-library-path dir="${env.PLAYERGLOBAL_HOME}">
+                <include name="${playerglobal.version}/playerglobal.swc"/>
+            </external-library-path>
+            <external-library-path dir="${FLEX_HOME}/frameworks/libs">
+                <include name="framework.swc" />
+                <include name="spark.swc" />
+            </external-library-path>
+            <jvmarg line="${asdoc.jvm.args}"/>
+        </asdoc>
+
+        <!-- updates flatspark.swc with asdoc xml -->
+        <zip destfile="${FLEX_HOME}/frameworks/libs/flatspark.swc" update="true">
+            <zipfileset dir="${FLEX_HOME}/tempDoc/tempdita" prefix="docs">
+                <include name="*.*"/>
+                <exclude name="ASDoc_Config.xml"/>
+                <exclude name="overviews.xml"/>
+            </zipfileset>
+        </zip>
+    </target>
+
+    <target name="clean-temp-docs">
+        <delete dir="${FLEX_HOME}/tempDoc" failonerror="false" includeEmptyDirs="true"/>
+    </target>
+
+</project>
diff --git a/frameworks/projects/flatspark/compile-config.xml b/frameworks/projects/flatspark/compile-config.xml
new file mode 100644
index 0000000..5b24081
--- /dev/null
+++ b/frameworks/projects/flatspark/compile-config.xml
@@ -0,0 +1,109 @@
+<!--
+
+  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.
+
+-->
+<flex-config>
+
+    <compiler>
+
+        <accessible>true</accessible>
+        
+        <external-library-path>
+            <path-element>${env.PLAYERGLOBAL_HOME}/${playerglobal.version}/playerglobal.swc</path-element>
+            <path-element>../../libs/framework.swc</path-element>
+            <path-element>../../libs/spark.swc</path-element>
+			<path-element>../../libs/experimental.swc</path-element>
+            <path-element>../../libs/textLayout.swc</path-element>
+        </external-library-path>
+        
+        <locale/>
+        
+        <library-path/>
+
+        <namespaces>
+            <namespace>
+                <uri>library://ns.adobe.com/flex/spark</uri>
+                <manifest>../../spark-manifest.xml</manifest>
+            </namespace>
+        </namespaces>
+        
+        <source-path>
+            <path-element>src</path-element>
+        </source-path>
+        
+        <warn-no-constructor>false</warn-no-constructor>
+
+    </compiler>
+	
+	<include-classes>
+		<class>FlatSparkSkinsClasses</class>
+	</include-classes>
+	
+	<include-file>
+        <name>defaults.css</name>
+        <path>defaults.css</path>
+    </include-file>
+	<include-file>
+        <name>flatspark/assets/fonts/awesome/FontAwesome.otf</name>
+        <path>src/flatspark/assets/fonts/awesome/FontAwesome.otf</path>
+    </include-file>
+    <include-file>
+        <name>flatspark/assets/fonts/lato/Lato_Black.otf</name>
+        <path>src/flatspark/assets/fonts/lato/Lato_Black.otf</path>
+    </include-file>
+	<include-file>
+        <name>flatspark/assets/fonts/lato/Lato_Black_Italic.otf</name>
+        <path>src/flatspark/assets/fonts/lato/Lato_Black_Italic.otf</path>
+    </include-file>
+	<include-file>
+        <name>flatspark/assets/fonts/lato/Lato_Bold.otf</name>
+        <path>src/flatspark/assets/fonts/lato/Lato_Bold.otf</path>
+    </include-file>
+	<include-file>
+        <name>flatspark/assets/fonts/lato/Lato_Bold_Italic.otf</name>
+        <path>src/flatspark/assets/fonts/lato/Lato_Bold_Italic.otf</path>
+    </include-file>
+	<include-file>
+        <name>flatspark/assets/fonts/lato/Lato_Hairline.otf</name>
+        <path>src/flatspark/assets/fonts/lato/Lato_Hairline.otf</path>
+    </include-file>
+	<include-file>
+        <name>flatspark/assets/fonts/lato/Lato_Hairline_Italic.otf</name>
+        <path>src/flatspark/assets/fonts/lato/Lato_Hairline_Italic.otf</path>
+    </include-file>
+	<include-file>
+        <name>flatspark/assets/fonts/lato/Lato_Light.otf</name>
+        <path>src/flatspark/assets/fonts/lato/Lato_Light.otf</path>
+    </include-file>
+	<include-file>
+        <name>flatspark/assets/fonts/lato/Lato_Light_Italic.otf</name>
+        <path>src/flatspark/assets/fonts/lato/Lato_Light_Italic.otf</path>
+    </include-file>
+	<include-file>
+        <name>flatspark/assets/fonts/lato/Lato_Regular.otf</name>
+        <path>src/flatspark/assets/fonts/lato/Lato_Regular.otf</path>
+    </include-file>
+	<include-file>
+        <name>flatspark/assets/fonts/lato/Lato_Regular_Italic.otf</name>
+        <path>src/flatspark/assets/fonts/lato/Lato_Regular_Italic.otf</path>
+    </include-file>
+    
+    <resource-bundle-list>bundles.properties</resource-bundle-list>
+    
+    <target-player>${playerglobal.version}</target-player>
+
+</flex-config>
diff --git a/frameworks/projects/flatspark/defaults.css b/frameworks/projects/flatspark/defaults.css
new file mode 100644
index 0000000..5771436
--- /dev/null
+++ b/frameworks/projects/flatspark/defaults.css
@@ -0,0 +1,116 @@
+/*
+ *
+ *  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.
+ *
+ */
+
+/* CSS file */
+@namespace s "library://ns.adobe.com/flex/spark";
+@namespace components "flatspark.components.*";
+@namespace ns "http://flex.apache.org/experimental/ns";
+
+
+@font-face { 
+	src: url("flatspark/assets/fonts/awesome/FontAwesome.otf"); 
+	fontFamily: FontAwesome;
+	embedAsCFF: true;
+}
+
+@font-face {
+	src:url("flatspark/assets/fonts/lato/Lato_Regular.otf");
+	fontFamily: Lato; 
+	embedAsCFF: true; 
+}
+
+@font-face {
+	src:url("flatspark/assets/fonts/lato/Lato_Regular_Italic.otf");
+	fontFamily: Lato;
+	fontStyle: italic;
+	embedAsCFF: true; 
+}
+
+@font-face {
+	src:url("flatspark/assets/fonts/lato/Lato_Bold.otf");
+	fontFamily: Lato;
+	fontWeight: bold;
+	embedAsCFF: true; 
+}
+
+@font-face {
+	src:url("flatspark/assets/fonts/lato/Lato_Bold_Italic.otf");
+	fontFamily: Lato;
+	fontStyle: italic;
+	fontWeight: bold;
+	embedAsCFF: true; 
+}
+
+@font-face {
+	src:url("flatspark/assets/fonts/lato/Lato_Light.otf");
+	fontFamily: LatoLight;
+	embedAsCFF: true; 
+}
+
+@font-face {
+	src:url("flatspark/assets/fonts/lato/Lato_Light_Italic.otf");
+	fontFamily: LatoLight;
+	fontStyle: italic;
+	embedAsCFF: true; 
+}
+
+@font-face {
+	src:url("flatspark/assets/fonts/lato/Lato_Hairline.otf");
+	fontFamily: LatoHairline;
+	embedAsCFF: true; 
+}
+
+@font-face {
+	src:url("flatspark/assets/fonts/lato/Lato_Hairline_Italic.otf");
+	fontFamily: LatoHairline;
+	fontStyle: italic;
+	embedAsCFF: true; 
+}
+
+@font-face {
+	src:url("flatspark/assets/fonts/lato/Lato_Black.otf");
+	fontFamily: LatoBlack;
+	embedAsCFF: true; 
+}
+
+@font-face {
+	src:url("flatspark/assets/fonts/lato/Lato_Black_Italic.otf");
+	fontFamily: LatoBlack;
+	fontStyle: italic;
+	embedAsCFF: true; 
+}
+
+global
+{
+	modal-transparency: 0.98;
+	modal-transparency-blur: 0;
+	modal-transparency-color: #2c3e50;
+}
+
+s|Application {
+	fontFamily: Lato, Helvetica, Arial, sans-serif;
+}
+
+components|ButtonIcon {
+	skinClass: ClassReference("flatspark.skins.ButtonIconSkin");
+}
+
+components|TextInputIcon {
+	skinClass: ClassReference("flatspark.skins.TextInputIconSkin");
+}
\ No newline at end of file
diff --git a/frameworks/projects/flatspark/src/FlatSparkSkinsClasses.as b/frameworks/projects/flatspark/src/FlatSparkSkinsClasses.as
new file mode 100644
index 0000000..24c3a81
--- /dev/null
+++ b/frameworks/projects/flatspark/src/FlatSparkSkinsClasses.as
@@ -0,0 +1,51 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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
+{
+
+/**
+ *  @private
+ *  This class is used to link additional classes into framework.swc
+ *  beyond those that are found by dependecy analysis starting
+ *  from the classes specified in manifest.xml.
+ *  For example, Button does not have a reference to ButtonSkin,
+ *  but ButtonSkin needs to be in framework.swc along with Button.
+ */
+internal class FlatSparkSkinsClasses
+{
+	// skins
+	import flatspark.skins.AlertSkin; AlertSkin;
+    import flatspark.skins.ButtonSkin; ButtonSkin;
+	import flatspark.skins.ButtonIconSkin; ButtonIconSkin;
+	import flatspark.skins.CheckBoxSkin; CheckBoxSkin;
+	import flatspark.skins.ComboBoxSkin; ComboBoxSkin;
+	import flatspark.skins.ScrollerSkin; ScrollerSkin;
+	import flatspark.skins.DropDownListSkin; DropDownListSkin;
+	import flatspark.skins.PanelSkin; PanelSkin;
+	import flatspark.skins.ProgressBarSkin; ProgressBarSkin;
+	import flatspark.skins.RadioButtonSkin; RadioButtonSkin;
+	import flatspark.skins.TextInputSkin; TextInputSkin;
+	import flatspark.skins.TextInputIconSkin; TextInputIconSkin;
+	import flatspark.skins.TitleWindowSkin; TitleWindowSkin;
+	// Maintain alphabetical order
+}
+
+}
+
diff --git a/frameworks/projects/flatspark/src/flatspark/assets/fonts/awesome/FontAwesome.otf b/frameworks/projects/flatspark/src/flatspark/assets/fonts/awesome/FontAwesome.otf
new file mode 100644
index 0000000..8b0f54e
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/assets/fonts/awesome/FontAwesome.otf
Binary files differ
diff --git a/frameworks/projects/flatspark/src/flatspark/assets/fonts/awesome/OFL.txt b/frameworks/projects/flatspark/src/flatspark/assets/fonts/awesome/OFL.txt
new file mode 100644
index 0000000..d68a2c8
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/assets/fonts/awesome/OFL.txt
@@ -0,0 +1,94 @@
+Copyright (c) 2014, Dave Gandy (http://fontawesome.io),
+with Reserved Font Name "Font Awesome".
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded, 
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Black.otf b/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Black.otf
new file mode 100644
index 0000000..237ffb7
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Black.otf
Binary files differ
diff --git a/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Black_Italic.otf b/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Black_Italic.otf
new file mode 100644
index 0000000..97f1b93
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Black_Italic.otf
Binary files differ
diff --git a/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Bold.otf b/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Bold.otf
new file mode 100644
index 0000000..7f0a3d3
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Bold.otf
Binary files differ
diff --git a/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Bold_Italic.otf b/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Bold_Italic.otf
new file mode 100644
index 0000000..4eb4518
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Bold_Italic.otf
Binary files differ
diff --git a/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Hairline.otf b/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Hairline.otf
new file mode 100644
index 0000000..4edb976
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Hairline.otf
Binary files differ
diff --git a/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Hairline_Italic.otf b/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Hairline_Italic.otf
new file mode 100644
index 0000000..50b82a2
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Hairline_Italic.otf
Binary files differ
diff --git a/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Light.otf b/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Light.otf
new file mode 100644
index 0000000..3226cb9
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Light.otf
Binary files differ
diff --git a/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Light_Italic.otf b/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Light_Italic.otf
new file mode 100644
index 0000000..d7557b0
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Light_Italic.otf
Binary files differ
diff --git a/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Regular.otf b/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Regular.otf
new file mode 100644
index 0000000..1f94789
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Regular.otf
Binary files differ
diff --git a/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Regular_Italic.otf b/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Regular_Italic.otf
new file mode 100644
index 0000000..6341374
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/Lato_Regular_Italic.otf
Binary files differ
diff --git a/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/OFL.txt b/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/OFL.txt
new file mode 100644
index 0000000..303088c
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/assets/fonts/lato/OFL.txt
@@ -0,0 +1,94 @@
+Copyright (c) 2014, Ɓukasz Dziedzic (https://www.google.com/fonts/specimen/Lato),
+with Reserved Font Name "Lato".
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded, 
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/frameworks/projects/flatspark/src/flatspark/components/ButtonIcon.as b/frameworks/projects/flatspark/src/flatspark/components/ButtonIcon.as
new file mode 100644
index 0000000..d14c53f
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/components/ButtonIcon.as
@@ -0,0 +1,41 @@
+/**	
+	  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 flatspark.components
+{
+
+	import spark.components.Button;
+	
+	import flatspark.enums.BrandColorEnum;
+
+	public class ButtonIcon extends spark.components.Button
+	{
+
+		[Bindable]
+		public var iconFont:String;
+		
+		[Bindable]
+		public var brand:int = BrandColorEnum.Default;
+
+
+		public function ButtonIcon()
+		{
+			super();
+		}
+
+	}
+}
diff --git a/frameworks/projects/flatspark/src/flatspark/components/TextInputIcon.as b/frameworks/projects/flatspark/src/flatspark/components/TextInputIcon.as
new file mode 100644
index 0000000..98b6a9c
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/components/TextInputIcon.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 "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 flatspark.components
+{
+	import flash.events.FocusEvent;
+	
+	import spark.components.TextInput;
+	
+	public class TextInputIcon extends spark.components.TextInput
+	{
+		[Bindable]
+		public var iconFont:String;
+		
+		public function TextInputIcon()
+		{
+			super();
+		}
+		
+	}
+}
\ No newline at end of file
diff --git a/frameworks/projects/flatspark/src/flatspark/enums/BrandColorEnum.as b/frameworks/projects/flatspark/src/flatspark/enums/BrandColorEnum.as
new file mode 100644
index 0000000..93742ee
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/enums/BrandColorEnum.as
@@ -0,0 +1,30 @@
+/**	
+ 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 flatspark.enums
+{
+	public class BrandColorEnum
+	{
+		public static const Primary:int = 1;
+		public static const Success:int = 2;
+		public static const Warning:int = 3;
+		public static const Inverse:int = 4;
+		public static const Default:int = 5;
+		public static const Info:int = 6;
+		public static const Danger:int = 7;
+	}
+}
\ No newline at end of file
diff --git a/frameworks/projects/flatspark/src/flatspark/enums/ButtonColorEnum.as b/frameworks/projects/flatspark/src/flatspark/enums/ButtonColorEnum.as
new file mode 100644
index 0000000..5eae405
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/enums/ButtonColorEnum.as
@@ -0,0 +1,59 @@
+/**	
+ 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 flatspark.enums
+{
+	import flatspark.utils.ColorUtils;
+
+	public class ButtonColorEnum
+	{
+		public static const PrimaryUp:uint = ColorUtils.Turquoise;
+		public static const PrimaryHover:uint = 0x48C9B0;
+		public static const PrimaryDown:uint = 0x16A085;
+		public static const PrimaryDisabled:uint = ColorUtils.Turquoise;
+		
+		public static const SuccessUp:uint = ColorUtils.Emerald;
+		public static const SuccessHover:uint = 0x58D68D;
+		public static const SuccessDown:uint = 0x27AD60;
+		public static const SuccessDisabled:uint = ColorUtils.Emerald;
+		
+		public static const WarningUp:uint = ColorUtils.SunFlower;
+		public static const WarningHover:uint = 0xF5D313;
+		public static const WarningDown:uint = 0xCDA70D;
+		public static const WarningDisabled:uint = ColorUtils.SunFlower;
+		
+		public static const InverseUp:uint = ColorUtils.WetAsphalt;
+		public static const InverseHover:uint = 0x415B76;
+		public static const InverseDown:uint = 0x2C3E50;
+		public static const InverseDisabled:uint = ColorUtils.WetAsphalt;
+		
+		public static const DefaultUp:uint = ColorUtils.Silver;
+		public static const DefaultHover:uint = 0xCACFD2;
+		public static const DefaultDown:uint = 0xA1A6A9;
+		public static const DefaultDisabled:uint = ColorUtils.Silver;
+		
+		public static const InfoUp:uint = ColorUtils.PeterRiver;
+		public static const InfoHover:uint = 0x5DADE2;
+		public static const InfoDown:uint = 0x2C81BA;
+		public static const InfoDisabled:uint = ColorUtils.PeterRiver;
+		
+		public static const DangerUp:uint = ColorUtils.Alizarin;
+		public static const DangerHover:uint = 0xEC7063;
+		public static const DangerDown:uint = 0xC44133;
+		public static const DangerDisabled:uint = ColorUtils.Alizarin;
+	}
+}
\ No newline at end of file
diff --git a/frameworks/projects/flatspark/src/flatspark/enums/ButtonSizeEnum.as b/frameworks/projects/flatspark/src/flatspark/enums/ButtonSizeEnum.as
new file mode 100644
index 0000000..63b6f2c
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/enums/ButtonSizeEnum.as
@@ -0,0 +1,31 @@
+/**	
+ 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 flatspark.enums
+{
+	public class ButtonSizeEnum
+	{
+		public static const Large:int = 43;
+		public static const Normal:int = 32;
+		public static const Small:int = 28;
+		public static const ExtraSmall:int = 20;
+		
+		public function ButtonSizeEnum()
+		{
+		}
+	}
+}
\ No newline at end of file
diff --git a/frameworks/projects/flatspark/src/flatspark/enums/ColorSwatchEnum.as b/frameworks/projects/flatspark/src/flatspark/enums/ColorSwatchEnum.as
new file mode 100644
index 0000000..f497f62
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/enums/ColorSwatchEnum.as
@@ -0,0 +1,40 @@
+/**	
+ 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 flatspark.enums
+{
+	public class ColorSwatchEnum
+	{
+		public static const Turquoise_GreenSea:int = 1;
+		public static const Emerald_Nephritis:int = 2;
+		public static const PeterRiver_BelizeHole:int = 3;
+		public static const Amethyst_Wisteria:int = 4;
+		public static const WetAsphalt_MidnightBlue:int = 5;
+		public static const SunFlower_Orange:int = 6;
+		public static const Carrot_Pumpkin:int = 7;
+		public static const Alizarin_Pomegranate:int = 8;
+		public static const Clouds_Silver:int = 9;
+		public static const Concrete_Asbestos:int = 10;
+		
+		
+		private var _colorSwatch:int;
+		
+		public function ColorSwatchEnum(colorSwatch:int = 3) {
+			_colorSwatch = colorSwatch;
+		}
+	}
+}
\ No newline at end of file
diff --git a/frameworks/projects/flatspark/src/flatspark/enums/SizeEnum.as b/frameworks/projects/flatspark/src/flatspark/enums/SizeEnum.as
new file mode 100644
index 0000000..fd68aee
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/enums/SizeEnum.as
@@ -0,0 +1,32 @@
+/**	
+ 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 flatspark.enums
+{
+	public class SizeEnum
+	{
+		public static const Small:int = 10;
+		public static const Medium:int = 12;
+		public static const Large:int = 14;
+
+		private var _size:int;
+		
+		public function SizeEnum(size:int = 12) {
+			_size = size;
+		}
+	}
+}
\ No newline at end of file
diff --git a/frameworks/projects/flatspark/src/flatspark/enums/TextInputSizeEnum.as b/frameworks/projects/flatspark/src/flatspark/enums/TextInputSizeEnum.as
new file mode 100644
index 0000000..2b2568e
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/enums/TextInputSizeEnum.as
@@ -0,0 +1,30 @@
+/**	
+ 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 flatspark.enums
+{
+	public class TextInputSizeEnum
+	{
+		public static const Large:int = 41;
+		public static const Normal:int = 38;
+		public static const Small:int = 31;
+		
+		public function TextInputSizeEnum()
+		{
+		}
+	}
+}
\ No newline at end of file
diff --git a/frameworks/projects/flatspark/src/flatspark/itemRenderers/DefaultItemRenderer.mxml b/frameworks/projects/flatspark/src/flatspark/itemRenderers/DefaultItemRenderer.mxml
new file mode 100644
index 0000000..7b2a914
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/itemRenderers/DefaultItemRenderer.mxml
@@ -0,0 +1,51 @@
+<?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.
+
+-->
+
+<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
+				xmlns:s="library://ns.adobe.com/flex/spark"
+				autoDrawBackground="false" height="32">
+	<s:states>
+		<s:State name="normal" />
+		<s:State name="hovered" />
+		<s:State name="selected" />
+	</s:states>
+	<fx:Script>
+		<![CDATA[
+			
+			import flatspark.utils.ColorUtils;
+			
+		]]>
+	</fx:Script>
+	
+	<s:Rect id="bgFill"
+			radiusX="4"
+			includeIn="hovered,selected"
+			left="0" right="0" top="0" bottom="0">
+		<s:fill>
+			<s:SolidColor color="{ColorUtils.MidnightBlue}"
+						  color.selected="{ColorUtils.Turquoise}"/>
+		</s:fill>
+	</s:Rect>
+	
+	<s:Label id="labelDisplay" paddingRight="4" paddingTop="1" paddingBottom="1" paddingLeft="4" 
+			 verticalAlign="middle" height="100%" fontFamily="Lato" fontSize="15" fontWeight="normal" 
+			 fontStyle="normal" color="{ColorUtils.Clouds}" color.hovered="{ColorUtils.Silver}"/>
+	
+</s:ItemRenderer>
diff --git a/frameworks/projects/flatspark/src/flatspark/skins/AlertSkin.mxml b/frameworks/projects/flatspark/src/flatspark/skins/AlertSkin.mxml
new file mode 100644
index 0000000..0e9a104
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/skins/AlertSkin.mxml
@@ -0,0 +1,230 @@
+<?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.
+
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
+			 xmlns:fb="http://ns.adobe.com/flashbuilder/2009" blendMode="normal" mouseEnabled="false"
+			 minWidth="131" minHeight="30" alpha.disabled="0.5" alpha.disabledWithControlBar="0.5">
+	<fx:Metadata>
+		<![CDATA[
+		[HostComponent("spark.components.Alert")]
+		]]>
+	</fx:Metadata>
+	
+		<fx:Script fb:purpose="styling">
+			<![CDATA[
+				import flatspark.utils.ColorUtils;
+
+		/* Define the skin elements that should not be colorized.
+		For panel, border and title background are skinned, but the content area and title text are not. */
+		static private const exclusions:Array = ["background", "titleDisplay", "contentGroup", "controlBarGroup"];
+		
+		/**
+		 * @private
+		 */
+		override public function get colorizeExclusions():Array {return exclusions;}
+		
+		/**
+		 * @private
+		 */
+		override protected function initializationComplete():void
+		{
+			useChromeColor = true;
+			super.initializationComplete();
+		}
+		
+		/**
+		 * @private
+		 */
+		override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
+		{
+				setPartCornerRadii(topMaskRect);
+				setPartCornerRadii(background);
+			
+			if (bottomMaskRect) setPartCornerRadii(bottomMaskRect);
+			
+			super.updateDisplayList(unscaledWidth, unscaledHeight);
+		}
+		
+		/**
+		 * @private
+		 */
+		private function setPartCornerRadii(target:Rect):void
+		{
+			target.topLeftRadiusX = cornerRadius;
+			target.topRightRadiusX = cornerRadius;
+			target.bottomLeftRadiusX = cornerRadius;
+			target.bottomRightRadiusX = cornerRadius;
+		}
+		
+		private var cornerRadius:Number=4;
+				
+			]]>
+	</fx:Script>
+	
+	<fx:Declarations>
+		<s:Group id="contentGroup" />
+	</fx:Declarations>
+	
+	<s:states>
+		<s:State name="normal" />
+		<s:State name="disabled" />
+		<s:State name="normalWithControlBar" stateGroups="withControls" />
+		<s:State name="disabledWithControlBar" stateGroups="withControls" />
+	</s:states>
+	
+	<!-- drop shadow can't be hittable so all other graphics go in this group -->
+	<s:Group left="0" right="0" top="0" bottom="0">
+		
+		<!-- top group mask -->
+		<!--- @private -->
+		<s:Group left="0" top="0" right="0" bottom="0" id="topGroupMask" >
+			<!--- @private -->
+			<s:Rect id="topMaskRect" left="0" top="0" right="0" bottom="0">
+				<s:fill>
+					<s:SolidColor alpha="0"/>
+				</s:fill>
+			</s:Rect>
+		</s:Group>
+		
+		<!-- bottom group mask -->
+		<!--- @private -->
+		<s:Group left="0" top="0" right="0" bottom="0" id="bottomGroupMask"
+				 includeIn="normalWithControlBar, disabledWithControlBar">
+			<!--- @private -->
+			<s:Rect id="bottomMaskRect" left="0" top="0" right="0" bottom="0">
+				<s:fill>
+					<s:SolidColor alpha="0"/>
+				</s:fill>
+			</s:Rect>
+		</s:Group>
+		
+		<!-- layer 2: background fill -->
+		<!--- Defines the appearance of the PanelSkin class's background. -->
+		<s:Rect id="background" left="0" top="0" right="0" bottom="0">
+			<s:fill>
+				<s:SolidColor id="backgroundFill" color="#FFFFFF"/>
+			</s:fill>
+		</s:Rect>
+		
+		<!-- layer 3: contents -->
+		<!--- Contains the vertical stack of titlebar content and controlbar. -->
+		<s:Group left="0" top="0" right="0" bottom="0" id="contents">
+			<s:layout>
+				<s:VerticalLayout gap="0" horizontalAlign="justify" />
+			</s:layout>
+			
+			<!--- @private -->
+			<s:Group id="topGroup" mask="{topGroupMask}">
+				
+				<!-- layer 0: title bar fill -->
+				<!--- @private -->
+				<s:Rect id="tbFill" left="0" right="0" top="0" bottom="1">
+					<s:fill>
+						<s:SolidColor color="{ColorUtils.Concrete}"/>
+					</s:fill>
+				</s:Rect>
+				
+				<!-- layer 1: title bar highlight -->
+				<!--- @private -->
+				<s:Rect id="tbHilite" left="0" right="0" top="0" bottom="1">
+					<s:fill>
+						<s:SolidColor color="{ColorUtils.Concrete}"/>
+					</s:fill>
+				</s:Rect>
+				
+				<!-- layer 2: title bar divider -->
+				<!--- @private -->
+				<s:Rect id="tbDiv" left="0" right="0" height="1" bottom="0">
+					<s:fill>
+						<s:SolidColor color="{ColorUtils.Asbestos}"/>
+					</s:fill>
+				</s:Rect>
+				
+				<!-- layer 3: text -->
+				<!--- @copy spark.components.Panel#titleDisplay -->
+				<s:Label id="titleDisplay" maxDisplayedLines="1"  fontFamily="Lato" fontSize="15" fontStyle="normal" color="#FFFFFF"
+						 left="15" right="5" top="2" bottom="0" minHeight="36" height="36"
+						 verticalAlign="middle" fontWeight="bold" />
+			</s:Group>
+			
+			<!--
+			Note: setting the minimum size to 0 here so that changes to the host component's
+			size will not be thwarted by this skin part's minimum size.   This is a compromise,
+			more about it here: http://bugs.adobe.com/jira/browse/SDK-21143
+			-->
+			<!--- @copy spark.components.SkinnableContainer#contentGroup -->
+			<!--<s:Group id="contentGroup" width="100%" height="100%" minWidth="0" minHeight="0">
+			</s:Group>-->
+			<s:HGroup width="100%" height="100%" verticalAlign="middle" horizontalAlign="center" paddingBottom="20" paddingLeft="20" paddingRight="20" paddingTop="20">
+				<s:Group id="iconGroup" height="100%">
+					
+				</s:Group>
+				<s:VGroup width="100%" height="100%" paddingLeft="5" paddingRight="5" paddingBottom="5" gap="20"
+						  verticalAlign="middle" horizontalAlign="center">
+					<s:RichText id="messageDisplay"  fontFamily="Lato" fontSize="14" fontStyle="normal" color="0x000000" lineHeight="160%"
+								left="9" right="3" top="1" bottom="0" minHeight="30" maxWidth="400"
+								verticalAlign="middle"/>
+					
+					<!--
+					To-do: Need to adjust the styles for buttons
+					-->
+					<s:HGroup id="buttonGroup" width="100%" minWidth="0" minHeight="0" gap="8"
+							  horizontalAlign="center"/>
+				</s:VGroup>
+			</s:HGroup>
+			
+			
+			<!--- @private -->
+			<s:Group id="bottomGroup" minWidth="0" minHeight="0"
+					 includeIn="normalWithControlBar, disabledWithControlBar" >
+				
+				<s:Group left="0" right="0" top="0" bottom="0" mask="{bottomGroupMask}">
+					
+					<!-- layer 0: control bar divider line -->
+					<s:Rect left="0" right="0" top="0" height="1" alpha="0.22">
+						<s:fill>
+							<s:SolidColor  color="#FFFFFF"/>
+						</s:fill>
+					</s:Rect>
+					
+					<!-- layer 1: control bar highlight -->
+					<s:Rect left="0" right="0" top="1" bottom="0">
+						<s:fill>
+							<s:SolidColor  color="#FFFFFF"/>
+						</s:fill>
+					</s:Rect>
+					
+					<!-- layer 2: control bar fill -->
+					<s:Rect left="1" right="1" top="2" bottom="1">
+						<s:fill>
+							<s:SolidColor  color="#FFFFFF"/>
+						</s:fill>
+					</s:Rect>
+				</s:Group>
+				<!-- layer 3: control bar -->
+				<!--- @copy spark.components.Panel#controlBarGroup -->
+				<s:Group id="controlBarGroup" left="0" right="0" top="1" bottom="1" minWidth="0" minHeight="0">
+					<s:layout>
+						<s:HorizontalLayout paddingLeft="10" paddingRight="10" paddingTop="7" paddingBottom="7" gap="10" />
+					</s:layout>
+				</s:Group>
+			</s:Group>
+		</s:Group>
+	</s:Group>
+</s:SparkSkin>
\ No newline at end of file
diff --git a/frameworks/projects/flatspark/src/flatspark/skins/ButtonIconSkin.mxml b/frameworks/projects/flatspark/src/flatspark/skins/ButtonIconSkin.mxml
new file mode 100644
index 0000000..cb8ab83
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/skins/ButtonIconSkin.mxml
@@ -0,0 +1,191 @@
+<?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.
+
+-->
+
+
+<!--- The default skin class for the Spark Button component.  
+
+@see spark.components.Button
+
+@langversion 3.0
+@playerversion Flash 10
+@playerversion AIR 1.5
+@productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009"
+			 xmlns:s="library://ns.adobe.com/flex/spark" 
+			 xmlns:fb="http://ns.adobe.com/flashbuilder/2009"
+			 minWidth="21" minHeight="21" height="{ButtonSizeEnum.Normal}"
+			 alpha.disabled="0.5">
+	<fx:Metadata>[HostComponent("flatspark.components.ButtonIcon")]</fx:Metadata>
+	
+	<fx:Script fb:purpose="styling">
+		<![CDATA[         
+			import flatspark.enums.ButtonColorEnum;
+			import flatspark.enums.ButtonSizeEnum;
+			import flatspark.enums.TextInputSizeEnum;
+			import flatspark.utils.ColorUtils;
+
+			/* Define the skin elements that should not be colorized. 
+			For button, the graphics are colorized but the label is not. */
+			static private const exclusions:Array = ["iconDisplay", "labelDisplay"];
+			
+			/** 
+			 * @private
+			 */     
+			override public function get colorizeExclusions():Array {return exclusions;}
+			
+			/**
+			 * @private
+			 */
+			override protected function initializationComplete():void
+			{
+				useChromeColor = true;
+				hostComponent.useHandCursor=true;
+				hostComponent.buttonMode=true;
+				super.initializationComplete();
+			}  
+			
+			/**
+			 *  @private
+			 */
+			override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number) : void
+			{
+				var cr:Number = getStyle("cornerRadius");
+				
+				if (cornerRadius != cr)
+				{
+					cornerRadius = cr;
+					fill_up.radiusX = cornerRadius;
+					fill_over.radiusX = cornerRadius;
+					fill_down.radiusX = cornerRadius;
+					fill_disabled.radiusX = cornerRadius;
+				}
+				
+				/*var larguraIcone:int = 0;
+				if (iconFont.text != null && iconFont.text != "")
+				{
+					larguraIcone = 60;
+				}*/
+				super.updateDisplayList(unscaledWidth, unscaledHeight);
+			}
+			
+			private var cornerRadius:Number = 2;
+			
+			private static function getFontSize(height:int):int
+			{
+				var altura:int = 15;
+				
+				switch (height)
+				{
+					case ButtonSizeEnum.Large:
+						altura = 17;
+						break;
+					case ButtonSizeEnum.Normal:
+						altura = 14;
+						break;
+					case ButtonSizeEnum.Small:
+						altura = 13;
+						break;
+					case ButtonSizeEnum.ExtraSmall:
+						altura = 12;
+						break;
+				}
+				
+				return altura;
+			}
+			
+			private static function getIconSize(height:int):int
+			{
+				var altura:int = 17;
+				
+				switch (height)
+				{
+					case ButtonSizeEnum.Large:
+						altura = 19;
+						break;
+					case ButtonSizeEnum.Normal:
+						altura = 17;
+						break;
+					case ButtonSizeEnum.Small:
+						altura = 15;
+						break;
+					case ButtonSizeEnum.ExtraSmall:
+						altura = 12;
+						break;
+				}
+				
+				return altura;
+			}
+			
+		]]>        
+	</fx:Script>
+	
+	<!-- states -->
+	<s:states>
+		<s:State name="up" id="stateUp"/>
+		<s:State name="over" id="stateOver"/>
+		<s:State name="down" id="stateDown"/>
+		<s:State name="disabled" id="stateDisabled"/>
+	</s:states>
+	
+	
+	<!-- layer 2: fill -->
+	<!--- @private -->
+	<s:Rect id="fill_up" left="1" right="1" top="1" bottom="1" radiusX="6" includeIn="up">
+		<s:fill>
+			<s:SolidColor color="{ColorUtils.ButtonColor(hostComponent.brand,stateUp)}"/>
+		</s:fill>
+	</s:Rect>
+	
+	<s:Rect id="fill_over" left="1" right="1" top="1" bottom="1" radiusX="6" includeIn="over">
+		<s:fill>
+			<s:SolidColor color="{ColorUtils.ButtonColor(hostComponent.brand,stateOver)}"/>
+		</s:fill>
+	</s:Rect>
+	
+	<s:Rect id="fill_down" left="1" right="1" top="1" bottom="1" radiusX="6" includeIn="down">
+		<s:fill>
+			<s:SolidColor color="{ColorUtils.ButtonColor(hostComponent.brand,stateDown)}"/>
+		</s:fill>
+	</s:Rect>
+	
+	<s:Rect id="fill_disabled" left="1" right="1" top="1" bottom="1" radiusX="6" includeIn="disabled">
+		<s:fill>
+			<s:SolidColor color="{ColorUtils.ButtonColor(hostComponent.brand,stateDisabled)}"/>
+		</s:fill>
+	</s:Rect>
+	
+	
+	<!-- layer 8: text -->
+	<!--- @copy spark.components.supportClasses.ButtonBase#labelDisplay  -->
+	<s:HGroup verticalAlign="middle" verticalCenter="0" horizontalAlign="center" horizontalCenter="0" left="10" right="10" top="2" bottom="2">
+		<s:Label id="iconFont" color="0xFFFFFF" color.disabled="0xE3E3E3" text="{hostComponent.iconFont}"
+				 textAlign="left" fontSize="{getIconSize(hostComponent.height)}" fontFamily="FontAwesome"
+				 maxDisplayedLines="1" includeInLayout="{hostComponent.iconFont != null}"
+				 horizontalCenter="0" verticalCenter="0" verticalAlign="middle">
+		</s:Label>
+		
+		<s:Label id="labelDisplay" color="0xFFFFFF" color.disabled="0xE3E3E3"
+				 textAlign="center" fontSize="{getFontSize(hostComponent.height)}" fontFamily="Lato"
+				 maxDisplayedLines="1"
+				 horizontalCenter="0" verticalCenter="1" verticalAlign="middle">
+		</s:Label>
+	</s:HGroup>
+</s:SparkSkin>
diff --git a/frameworks/projects/flatspark/src/flatspark/skins/ButtonSkin.mxml b/frameworks/projects/flatspark/src/flatspark/skins/ButtonSkin.mxml
new file mode 100644
index 0000000..ce56543
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/skins/ButtonSkin.mxml
@@ -0,0 +1,184 @@
+<?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.
+
+-->
+
+
+<!--- The default skin class for the Spark Button component.  
+
+@see spark.components.Button
+
+@langversion 3.0
+@playerversion Flash 10
+@playerversion AIR 1.5
+@productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009"
+			 xmlns:s="library://ns.adobe.com/flex/spark" 
+			 xmlns:fb="http://ns.adobe.com/flashbuilder/2009"
+			 minWidth="21" minHeight="21" height="{ButtonSizeEnum.Normal}"
+			 alpha.disabled="0.5">
+	<fx:Metadata>[HostComponent("spark.components.Button")]</fx:Metadata>
+	
+	<fx:Script fb:purpose="styling">
+		<![CDATA[         
+			import flatspark.enums.BrandColorEnum;
+			import flatspark.enums.ButtonColorEnum;
+			import flatspark.enums.ButtonSizeEnum;
+			import flatspark.enums.TextInputSizeEnum;
+			import flatspark.utils.ColorUtils;
+
+			/* Define the skin elements that should not be colorized. 
+			For button, the graphics are colorized but the label is not. */
+			static private const exclusions:Array = ["iconDisplay", "labelDisplay"];
+			
+			/** 
+			 * @private
+			 */     
+			override public function get colorizeExclusions():Array {return exclusions;}
+			
+			/**
+			 * @private
+			 */
+			override protected function initializationComplete():void
+			{
+				useChromeColor = true;
+				hostComponent.useHandCursor=true;
+				hostComponent.buttonMode=true;
+				super.initializationComplete();
+			}  
+			
+			/**
+			 *  @private
+			 */
+			override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number) : void
+			{
+				var cr:Number = getStyle("cornerRadius");
+				
+				if (cornerRadius != cr)
+				{
+					cornerRadius = cr;
+					fill_up.radiusX = cornerRadius;
+					fill_over.radiusX = cornerRadius;
+					fill_down.radiusX = cornerRadius;
+					fill_disabled.radiusX = cornerRadius;
+				}
+				
+				/*var larguraIcone:int = 0;
+				if (iconFont.text != null && iconFont.text != "")
+				{
+					larguraIcone = 60;
+				}*/
+				super.updateDisplayList(unscaledWidth, unscaledHeight);
+			}
+			
+			private var cornerRadius:Number = 2;
+			
+			private static function getFontSize(height:int):int
+			{
+				var altura:int = 15;
+				
+				switch (height)
+				{
+					case ButtonSizeEnum.Large:
+						altura = 17;
+						break;
+					case ButtonSizeEnum.Normal:
+						altura = 14;
+						break;
+					case ButtonSizeEnum.Small:
+						altura = 13;
+						break;
+					case ButtonSizeEnum.ExtraSmall:
+						altura = 12;
+						break;
+				}
+				
+				return altura;
+			}
+			
+			private static function getIconSize(height:int):int
+			{
+				var altura:int = 17;
+				
+				switch (height)
+				{
+					case ButtonSizeEnum.Large:
+						altura = 19;
+						break;
+					case ButtonSizeEnum.Normal:
+						altura = 17;
+						break;
+					case ButtonSizeEnum.Small:
+						altura = 15;
+						break;
+					case ButtonSizeEnum.ExtraSmall:
+						altura = 12;
+						break;
+				}
+				
+				return altura;
+			}
+			
+		]]>        
+	</fx:Script>
+	
+	<!-- states -->
+	<s:states>
+		<s:State name="up" id="stateUp"/>
+		<s:State name="over" id="stateOver"/>
+		<s:State name="down" id="stateDown"/>
+		<s:State name="disabled" id="stateDisabled"/>
+	</s:states>
+	
+	
+	<!-- layer 2: fill -->
+	<!--- @private -->
+	<s:Rect id="fill_up" left="1" right="1" top="1" bottom="1" radiusX="6" includeIn="up">
+		<s:fill>
+			<s:SolidColor color="{ColorUtils.ButtonColor(BrandColorEnum.Default,stateUp)}"/>
+		</s:fill>
+	</s:Rect>
+	
+	<s:Rect id="fill_over" left="1" right="1" top="1" bottom="1" radiusX="6" includeIn="over">
+		<s:fill>
+			<s:SolidColor color="{ColorUtils.ButtonColor(BrandColorEnum.Default,stateOver)}"/>
+		</s:fill>
+	</s:Rect>
+	
+	<s:Rect id="fill_down" left="1" right="1" top="1" bottom="1" radiusX="6" includeIn="down">
+		<s:fill>
+			<s:SolidColor color="{ColorUtils.ButtonColor(BrandColorEnum.Default,stateDown)}"/>
+		</s:fill>
+	</s:Rect>
+	
+	<s:Rect id="fill_disabled" left="1" right="1" top="1" bottom="1" radiusX="6" includeIn="disabled">
+		<s:fill>
+			<s:SolidColor color="{ColorUtils.ButtonColor(BrandColorEnum.Default,stateDisabled)}"/>
+		</s:fill>
+	</s:Rect>
+	
+	
+	<!-- layer 8: text -->
+	<!--- @copy spark.components.supportClasses.ButtonBase#labelDisplay  -->
+	<s:Label id="labelDisplay" color="0xFFFFFF" color.disabled="0xE3E3E3" right="10" left="10"
+			 textAlign="center" fontSize="{getFontSize(hostComponent.height)}" fontFamily="Lato"
+			 maxDisplayedLines="1"
+			 horizontalCenter="0" verticalCenter="1" verticalAlign="middle">
+	</s:Label>
+</s:SparkSkin>
diff --git a/frameworks/projects/flatspark/src/flatspark/skins/CheckBoxSkin.mxml b/frameworks/projects/flatspark/src/flatspark/skins/CheckBoxSkin.mxml
new file mode 100644
index 0000000..504bf2d
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/skins/CheckBoxSkin.mxml
@@ -0,0 +1,136 @@
+<?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.
+
+-->
+
+<!--- The default skin class for the Spark CheckBox component.  
+
+      @see spark.components.CheckBox
+        
+      @langversion 3.0
+      @playerversion Flash 10
+      @playerversion AIR 1.5
+      @productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
+             xmlns:fb="http://ns.adobe.com/flashbuilder/2009" alpha.disabledStates="0.5" useHandCursor="true">
+
+    <fx:Metadata>
+    <![CDATA[ 
+        /** 
+         * @copy spark.skins.spark.ApplicationSkin#hostComponent
+         */
+        [HostComponent("spark.components.CheckBox")]
+    ]]>
+    </fx:Metadata> 
+    
+    <fx:Script fb:purpose="styling">
+        /* Define the skin elements that should not be colorized. 
+           For button, the graphics are colorized but the label is not. */
+        static private const exclusions:Array = ["labelDisplay", "check"];
+
+       /** 
+        * @private 
+        */     
+        override public function get colorizeExclusions():Array {return exclusions;}
+        
+        /* Define the symbol fill items that should be colored by the "symbolColor" style. */
+        static private const symbols:Array = [];
+
+       /**
+        * @private 
+        */
+        override public function get symbolItems():Array {return symbols};
+        
+        /**
+         * @private
+         */
+        override protected function initializationComplete():void
+        {
+            useChromeColor = true;
+            super.initializationComplete();
+        }
+    </fx:Script>
+    
+    <fx:Script>
+        <![CDATA[
+			import flatspark.utils.AwesomeUtils;
+			import flatspark.utils.ColorUtils;
+			
+            /** 
+             * @private 
+             */     
+            private static const focusExclusions:Array = ["labelDisplay"];
+
+            /**
+             * @private
+             */
+            override public function get focusSkinExclusions():Array { return focusExclusions;};
+        ]]>
+    </fx:Script>
+    
+    <s:states>
+        <s:State name="up" />
+        <s:State name="over" stateGroups="overStates" />
+        <s:State name="down" stateGroups="downStates" />
+        <s:State name="disabled" stateGroups="disabledStates" />
+        <s:State name="upAndSelected" stateGroups="selectedStates" />
+        <s:State name="overAndSelected" stateGroups="overStates, selectedStates" />
+        <s:State name="downAndSelected" stateGroups="downStates, selectedStates" />
+        <s:State name="disabledAndSelected" stateGroups="disabledStates, selectedStates" />
+    </s:states>
+    
+    <s:Group verticalCenter="0" width="22" height="22" layoutDirection="ltr">
+        <!-- fill -->
+        <s:Rect left="1" top="1" right="1" bottom="1" radiusX="6">
+            <s:fill>
+                <s:SolidColor color="{ColorUtils.Silver}"/>
+            </s:fill>
+        </s:Rect>
+		
+		<s:Rect left="1" top="1" right="1" bottom="1" radiusX="6" includeIn="overStates">
+			<s:fill>
+				<s:SolidColor color="{ColorUtils.Asbestos}"/>
+			</s:fill>
+		</s:Rect>
+		
+		<s:Rect left="1" top="1" right="1" bottom="1" radiusX="6" includeIn="selectedStates">
+			<s:fill>
+				<s:SolidColor color="{ColorUtils.Turquoise}"/>
+			</s:fill>
+		</s:Rect>
+        
+		<!--<s:Label fontFamily="FontAwesome" fontSize="12" color="#FFFFFF" text="{AwesomeUtils.fa_check}" includeIn="overStates"
+				 itemCreationPolicy="immediate" verticalAlign="middle" horizontalCenter="0" verticalCenter="0" alpha="0.75"
+				 />-->
+		
+		<s:Label fontFamily="FontAwesome" fontSize="12" color="#FFFFFF" text="{AwesomeUtils.fa_check}" includeIn="selectedStates"
+				 itemCreationPolicy="immediate" verticalAlign="middle" horizontalCenter="0" verticalCenter="0"
+				 />
+    </s:Group>
+
+    <!-- Label -->
+    <!--- @copy spark.components.supportClasses.ButtonBase#labelDisplay -->
+    <s:Label id="labelDisplay"
+             textAlign="start" color="{ColorUtils.WetAsphalt}"
+             verticalAlign="middle" fontSize="14"
+             maxDisplayedLines="1" fontFamily="Lato" paddingLeft="30"
+             left="0" right="0" top="3" bottom="3" verticalCenter="2" />
+
+</s:SparkSkin>
diff --git a/frameworks/projects/flatspark/src/flatspark/skins/ComboBoxButtonSkin.mxml b/frameworks/projects/flatspark/src/flatspark/skins/ComboBoxButtonSkin.mxml
new file mode 100644
index 0000000..5ca63a7
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/skins/ComboBoxButtonSkin.mxml
@@ -0,0 +1,108 @@
+<?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.
+
+-->
+
+
+<!--- The default skin class for the anchor button on a Spark ComboBox component.  
+
+@see spark.components.ComboBox        
+@see spark.skins.spark.ComboBoxSkin
+
+@langversion 3.0
+@playerversion Flash 10
+@playerversion AIR 1.5
+@productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" 
+			 xmlns:fb="http://ns.adobe.com/flashbuilder/2009" minWidth="19" minHeight="23">
+	
+	<fx:Metadata>
+		<![CDATA[ 
+		/** 
+		* @copy spark.skins.spark.ApplicationSkin#hostComponent
+		*/
+		[HostComponent("spark.components.Button")]
+		]]>
+	</fx:Metadata> 
+	
+	<fx:Script fb:purpose="styling">
+		<![CDATA[
+			import flatspark.utils.AwesomeUtils;
+			import flatspark.utils.ColorUtils;
+			
+			/* Define the skin elements that should not be colorized. 
+			For dropDownList buttons, the graphics are colorized but the arrow is not. */
+			static private const exclusions:Array = [];
+			
+			private var cornerRadius:Number = 4;
+			
+			/** 
+			 * @private
+			 */     
+			override public function get colorizeExclusions():Array {return exclusions;}
+			
+			/* Define the symbol fill items that should be colored by the "symbolColor" style. */
+			static private const symbols:Array = [];
+			
+			/**
+			 * @private 
+			 */
+			override public function get symbolItems():Array {return symbols};
+			
+			/**
+			 * @private
+			 */
+			override protected function initializationComplete():void
+			{
+				useChromeColor = true;
+				super.initializationComplete();
+			}
+			
+			/**
+			 *  @private
+			 */
+			override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number) : void
+			{				
+				fill.bottomRightRadiusX = fill.topRightRadiusX = cornerRadius;
+				
+				super.updateDisplayList(unscaledWidth, unscaledHeight);
+			}
+		]]>
+	</fx:Script>
+	
+	<!-- states -->
+	<s:states>
+		<s:State name="up" />
+		<s:State name="over" />
+		<s:State name="down" />
+		<s:State name="disabled" />
+	</s:states>
+	
+	<!-- layer 1: fill -->
+	<!--- @private -->
+	<s:Rect id="fill" left="0" right="0" top="0" bottom="0">
+		<s:fill>
+			<s:SolidColor color="{ColorUtils.Turquoise}" />
+		</s:fill>
+	</s:Rect>
+	
+	<!--- The arrow graphic displayed in the anchor button. -->
+	<s:Label right="17" top="6" fontFamily="FontAwesome" fontSize="19" color="#FFFFFF" text="{AwesomeUtils.fa_caret_down}" includeIn="up, down, over, disabled"
+			 itemCreationPolicy="immediate" verticalAlign="middle" verticalCenter="0" />
+</s:SparkSkin>
\ No newline at end of file
diff --git a/frameworks/projects/flatspark/src/flatspark/skins/ComboBoxSkin.mxml b/frameworks/projects/flatspark/src/flatspark/skins/ComboBoxSkin.mxml
new file mode 100644
index 0000000..c412365
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/skins/ComboBoxSkin.mxml
@@ -0,0 +1,127 @@
+<?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.
+
+-->
+<!--- The default skin class for the Spark ComboBox component. 
+The skin for the anchor button for a ComboBox component 
+is defined by the ComboBoxButtonSkin class.  The skin for the text input
+is defined by the ComboBoxTextInputSkin class.
+
+@see spark.components.ComboBox        
+@see spark.skins.spark.ComboBoxButtonSkin
+
+@langversion 3.0
+@playerversion Flash 10
+@playerversion AIR 1.5
+@productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"  height="41"
+			 xmlns:fb="http://ns.adobe.com/flashbuilder/2009" alpha.disabled=".5" initialize="initializeHandler(event)"> 
+	
+	<!-- host component -->
+	<fx:Metadata>
+		<![CDATA[ 
+		/** 
+		* @copy spark.skins.spark.ApplicationSkin#hostComponent
+		*/
+		[HostComponent("spark.components.ComboBox")]
+		]]>
+	</fx:Metadata> 
+	
+	<fx:Script fb:purpose="styling">
+		<![CDATA[       
+			import mx.events.FlexEvent;
+			
+			import flatspark.utils.ColorUtils;
+			private var paddingChanged:Boolean;
+			private var cornerRadiusChanged:Boolean;
+			private var cornerRadius:Number = 4;            
+			
+			/* Define the content fill items that should be colored by the "contentBackgroundColor" style. */
+			static private const contentFill:Array = [];
+			
+			override public function get contentItems():Array {return contentFill; }
+			
+			protected function initializeHandler(event:FlexEvent):void
+			{
+				// TODO Auto-generated method stub
+				hostComponent.useHandCursor=true;
+				hostComponent.buttonMode=true;
+			}
+			
+		]]>
+	</fx:Script>
+	
+	<s:states>
+		<s:State name="normal" />
+		<s:State name="open" />
+		<s:State name="disabled" />
+	</s:states>
+	
+	<!--- 
+	The PopUpAnchor control that opens the drop-down list. 
+	
+	<p>In a custom skin class that uses transitions, set the 
+	<code>itemDestructionPolicy</code> property to <code>never</code>.</p>
+	-->
+	<s:PopUpAnchor id="popUp"  displayPopUp.normal="false" displayPopUp.open="true" includeIn="open"
+				   left="0" right="0" top="{hostComponent.height+4}" bottom="0" itemDestructionPolicy="auto"
+				   popUpPosition="below" popUpWidthMatchesAnchorWidth="true">
+		
+		<!--- 
+		This includes borders, background colors, scrollers, and filters. 
+		@copy spark.components.supportClasses.DropDownListBase#dropDown
+		-->
+		<s:Group id="dropDown">
+			
+			<s:Path top="2" right="20" data="M 0 10 L 10 0 L 20 10 Z">
+				<s:fill>
+					<s:SolidColor color="{ColorUtils.WetAsphalt}" alpha="1"/>
+				</s:fill>
+			</s:Path>
+			
+			<!-- fill -->
+			<!--- Defines the appearance of drop-down list's background fill. -->
+			<s:Rect id="background" left="0" right="0" top="10" bottom="0" radiusX="4" >
+				<s:fill>
+					<s:SolidColor id="bgFill" color="{ColorUtils.WetAsphalt}" />
+				</s:fill>
+			</s:Rect>
+			<!--- @private -->
+			<s:Scroller id="scroller" left="4" top="14" right="4" bottom="4" hasFocusableChildren="false" minViewportInset="1" skinClass="flatspark.skins.ScrollerSkin">
+				<!--- @copy spark.components.SkinnableDataContainer#dataGroup-->
+				<s:DataGroup id="dataGroup" itemRenderer="flatspark.itemRenderers.DefaultItemRenderer">
+					<s:layout>
+						<s:VerticalLayout gap="0" horizontalAlign="contentJustify" requestedMinRowCount="1" requestedMaxRowCount="6"/>
+					</s:layout>
+				</s:DataGroup> 
+			</s:Scroller>
+		</s:Group>
+	</s:PopUpAnchor>
+	
+	<!---  The default skin is ComboBoxButtonSkin. 
+	@copy spark.components.supportClasses.DropDownListBase#openButton
+	@see spark.skins.spark.ComboBoxButtonSkin -->
+	<s:Button id="openButton" width="29" right="0" top="0" bottom="0" focusEnabled="false"
+			  skinClass="flatspark.skins.ComboBoxButtonSkin" tabEnabled="false" />  
+	<!--- @copy spark.components.ComboBox#textInput -->
+	<s:TextInput id="textInput" enabled.disabled="false"
+				 left="0" right="29" top="0" bottom="0" 
+				 skinClass="flatspark.skins.ComboBoxTextInputSkin"/> 
+	
+</s:SparkSkin>
\ No newline at end of file
diff --git a/frameworks/projects/flatspark/src/flatspark/skins/ComboBoxTextInputSkin.mxml b/frameworks/projects/flatspark/src/flatspark/skins/ComboBoxTextInputSkin.mxml
new file mode 100644
index 0000000..92acf4f
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/skins/ComboBoxTextInputSkin.mxml
@@ -0,0 +1,218 @@
+<?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.
+
+-->
+<!--- The default skin class for the textInput of a Spark ComboBox component.  
+
+@see spark.components.ComboBox
+
+@langversion 3.0
+@playerversion Flash 10
+@playerversion AIR 1.5
+@productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
+			 xmlns:fb="http://ns.adobe.com/flashbuilder/2009" 
+			 blendMode="normal">
+	
+	<fx:Metadata>
+		<![CDATA[ 
+		/** 
+		* @copy spark.skins.spark.ApplicationSkin#hostComponent
+		*/
+		[HostComponent("spark.components.TextInput")]
+		]]>
+	</fx:Metadata> 
+	
+	<fx:Script fb:purpose="styling">
+		<![CDATA[
+			import flatspark.utils.ColorUtils;
+			
+			private var paddingChanged:Boolean;
+			private var cornerRadius:Number = 4;
+			
+			/* Define the skin elements that should not be colorized. */
+			static private const exclusions:Array = ["background", "textDisplay", "promptDisplay"];
+			
+			/**
+			 * @private
+			 */   
+			override public function get colorizeExclusions():Array {return exclusions;}
+			
+			/* Define the content fill items that should be colored by the "contentBackgroundColor" style. */
+			static private const contentFill:Array = [];
+			
+			/**
+			 *  @private
+			 */
+			override public function get contentItems():Array {return contentFill; }
+			
+			/**
+			 *  @private
+			 */
+			override protected function commitProperties():void
+			{
+				super.commitProperties();
+				
+				if (paddingChanged)
+				{
+					updatePadding();
+					paddingChanged = false;
+				}
+			}
+			
+			/**
+			 * @private
+			 */
+			override protected function initializationComplete():void
+			{
+				useChromeColor = true;
+				super.initializationComplete();
+			}
+			
+			/**
+			 *  @private
+			 */
+			override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number) : void
+			{				
+				if (promptDisplay)
+				{
+					promptDisplay.setLayoutBoundsSize(unscaledWidth, unscaledHeight);
+					promptDisplay.setLayoutBoundsPosition(8, 0);
+				}
+				
+				background.bottomLeftRadiusX = background.topLeftRadiusX = cornerRadius;
+				
+				super.updateDisplayList(unscaledWidth, unscaledHeight);
+			}
+			
+			/**
+			 *  @private
+			 */
+			private function updatePadding():void
+			{
+				if (!textDisplay)
+					return;
+				
+				// Push padding styles into the textDisplay
+				var padding:Number;
+				
+				padding = getStyle("paddingLeft");
+				if (textDisplay.getStyle("paddingLeft") != padding)
+					textDisplay.setStyle("paddingLeft", padding);
+				
+				padding = getStyle("paddingTop");
+				if (textDisplay.getStyle("paddingTop") != padding)
+					textDisplay.setStyle("paddingTop", padding);
+				
+				padding = getStyle("paddingRight");
+				if (textDisplay.getStyle("paddingRight") != padding)
+					textDisplay.setStyle("paddingRight", padding);
+				
+				padding = getStyle("paddingBottom");
+				if (textDisplay.getStyle("paddingBottom") != padding)
+					textDisplay.setStyle("paddingBottom", padding);
+				
+				if (!promptDisplay)
+					return;
+				
+				padding = getStyle("paddingLeft");
+				if (promptDisplay.getStyle("paddingLeft") != padding)
+					promptDisplay.setStyle("paddingLeft", padding);
+				
+				padding = getStyle("paddingTop");
+				if (promptDisplay.getStyle("paddingTop") != padding)
+					promptDisplay.setStyle("paddingTop", padding);
+				
+				padding = getStyle("paddingRight");
+				if (promptDisplay.getStyle("paddingRight") != padding)
+					promptDisplay.setStyle("paddingRight", padding);
+				
+				padding = getStyle("paddingBottom");
+				if (promptDisplay.getStyle("paddingBottom") != padding)
+					promptDisplay.setStyle("paddingBottom", padding);
+			}
+			
+			/**
+			 *  @private
+			 */
+			override public function styleChanged(styleProp:String):void
+			{
+				var allStyles:Boolean = !styleProp || styleProp == "styleName";
+				
+				super.styleChanged(styleProp);
+				
+				if (allStyles || styleProp.indexOf("padding") == 0)
+				{
+					paddingChanged = true;
+					invalidateProperties();
+				}
+			}
+		]]>
+	</fx:Script>
+	
+	<fx:Script>
+		<![CDATA[
+			/** 
+			 * @private 
+			 */     
+			private static const focusExclusions:Array = ["textDisplay"];
+			
+			/**
+			 *  @private
+			 */
+			override public function get focusSkinExclusions():Array { return focusExclusions;};
+		]]>
+	</fx:Script>
+	
+	<s:states>
+		<s:State name="normal"/>
+		<s:State name="disabled" stateGroups="disabledStates"/>
+		<s:State name="normalWithPrompt"/>
+		<s:State name="disabledWithPrompt" stateGroups="disabledStates"/>
+	</s:states>
+	
+	<!-- fill -->
+	<!--- Defines the appearance of the TextInput component's background. -->
+	<s:Rect id="background" left="0" right="0" top="0" bottom="0">
+		<s:fill>
+			<s:SolidColor id="bgFill" color="{ColorUtils.Turquoise}" />
+		</s:fill>
+	</s:Rect>
+	
+	<!-- text -->
+	<!--- @copy spark.components.supportClasses.SkinnableTextBase#textDisplay -->
+	<!--	<s:RichEditableText id="textDisplay"
+	lineBreak="explicit"
+	widthInChars="10" verticalCenter="0"/>-->
+	<s:RichEditableText id="textDisplay" verticalAlign="middle" lineBreak="explicit" backgroundColor="{ColorUtils.Turquoise}"
+						widthInChars="10" fontFamily="Lato" fontWeight="normal" color="0xFFFFFF"
+						left="8" right="8" top="8" bottom="8" fontSize="15" verticalCenter="0"/>
+	<!--- Defines the Label that is used for prompt text. The includeInLayout property is false so the prompt text does not affect measurement. -->
+	<!--	<s:Label id="promptDisplay" maxDisplayedLines="1"
+	verticalAlign="middle"
+	mouseEnabled="false" mouseChildren="false"
+	includeIn="normalWithPrompt,disabledWithPrompt" 
+	includeInLayout="false"/>-->
+	<s:Label id="promptDisplay" maxDisplayedLines="1"
+			 verticalAlign="middle" fontFamily="Lato" fontSize="15" fontWeight="normal" fontStyle="italic" color="{ColorUtils.Clouds}"
+			 mouseEnabled="false" mouseChildren="false" left="8" right="8" top="8" bottom="8" verticalCenter="0"
+			 includeIn="normalWithPrompt,disabledWithPrompt" 
+			 includeInLayout="false"/>
+	
+</s:SparkSkin>
diff --git a/frameworks/projects/flatspark/src/flatspark/skins/DropDownListButtonSkin.mxml b/frameworks/projects/flatspark/src/flatspark/skins/DropDownListButtonSkin.mxml
new file mode 100644
index 0000000..2d284a4
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/skins/DropDownListButtonSkin.mxml
@@ -0,0 +1,109 @@
+<?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.
+
+-->
+
+
+<!--- The default skin class for the anchor button on a Spark DropDownList component.  
+
+@see spark.components.DropDownList        
+@see spark.skins.spark.DropDownListSkin
+
+@langversion 3.0
+@playerversion Flash 10
+@playerversion AIR 1.5
+@productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" 
+			 xmlns:fb="http://ns.adobe.com/flashbuilder/2009" minWidth="19" minHeight="23">
+	
+	<fx:Metadata>
+		<![CDATA[ 
+		/** 
+		* @copy spark.skins.spark.ApplicationSkin#hostComponent
+		*/
+		[HostComponent("spark.components.Button")]
+		]]>
+	</fx:Metadata> 
+	
+	<fx:Script fb:purpose="styling">
+		<![CDATA[
+			import flatspark.utils.AwesomeUtils;
+			import flatspark.utils.ColorUtils;
+			
+			/* Define the skin elements that should not be colorized. 
+			For dropDownList buttons, the graphics are colorized but the arrow is not. */
+			static private const exclusions:Array = [];
+			
+			/**
+			 * @private
+			 */  
+			override public function get colorizeExclusions():Array {return exclusions;}
+			
+			/* Define the symbol fill items that should be colored by the "symbolColor" style. */
+			static private const symbols:Array = [];
+			
+			/**
+			 * @private
+			 */
+			override public function get symbolItems():Array {return symbols};
+			
+			/**
+			 * @private
+			 */
+			override protected function initializationComplete():void
+			{
+				useChromeColor = true;
+				super.initializationComplete();
+			}
+			
+			/**
+			 *  @private
+			 */
+			override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number) : void
+			{				
+				fill.radiusX = cornerRadius;
+				
+				super.updateDisplayList(unscaledWidth, unscaledHeight);
+			}
+			
+			private var cornerRadius:Number = 4;
+			
+		]]>
+	</fx:Script>
+	
+	<!-- states -->
+	<s:states>
+		<s:State name="up" />
+		<s:State name="over" />
+		<s:State name="down" />
+		<s:State name="disabled" />
+	</s:states>
+	
+	<!-- layer 1: fill -->
+	<!--- @private -->
+	<s:Rect id="fill" left="0" right="0" top="0" bottom="0">
+		<s:fill>
+			<s:SolidColor color="{ColorUtils.Turquoise}" />
+		</s:fill>
+	</s:Rect>
+	
+	<!--- The arrow graphic displayed in the anchor button. -->
+	<s:Label right="17" top="6" fontFamily="FontAwesome" fontSize="19" color="#FFFFFF" text="{AwesomeUtils.fa_caret_down}" includeIn="up, down, over, disabled"
+			 itemCreationPolicy="immediate" verticalAlign="middle" verticalCenter="0" />
+</s:SparkSkin>
diff --git a/frameworks/projects/flatspark/src/flatspark/skins/DropDownListSkin.mxml b/frameworks/projects/flatspark/src/flatspark/skins/DropDownListSkin.mxml
new file mode 100644
index 0000000..d0a0a5f
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/skins/DropDownListSkin.mxml
@@ -0,0 +1,143 @@
+<?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.
+
+-->
+<!--- The default skin class for the Spark DropDownList component. 
+The skin for the anchor button for a DropDownList component 
+is defined by the DropDownListButtonSkin class.  
+
+<p>In a custom skin class that uses transitions, set the 
+<code>itemDestructionPolicy</code> property to <code>never</code>
+for the PopUpAnchor defined by the popUp property.</p>      
+
+@see spark.components.DropDownList        
+@see spark.skins.spark.DropDownListButtonSkin
+
+@langversion 3.0
+@playerversion Flash 10
+@playerversion AIR 1.5
+@productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"  height="41"
+			 xmlns:fb="http://ns.adobe.com/flashbuilder/2009" alpha.disabled=".5" initialize="initializeHandler(event)"> 
+	
+	<!-- host component -->
+	<fx:Metadata>
+		<![CDATA[ 
+		/** 
+		* @copy spark.skins.spark.ApplicationSkin#hostComponent
+		*/
+		[HostComponent("spark.components.DropDownList")]
+		]]>
+	</fx:Metadata> 
+	
+	<fx:Script fb:purpose="styling">
+		<![CDATA[            
+			import mx.events.FlexEvent;
+			
+			import flatspark.itemRenderers.DefaultItemRenderer;
+			import flatspark.utils.ColorUtils;
+			
+			/* Define the content fill items that should be colored by the "contentBackgroundColor" style. */
+			static private const contentFill:Array = [];
+			
+			/**
+			 * @private
+			 */
+			override public function get contentItems():Array { return contentFill; }
+			
+			override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number) : void
+			{		
+				//background.bottomRightRadiusX = background.topRightRadiusX = cornerRadius;
+
+				
+				super.updateDisplayList(unscaledWidth, unscaledHeight);
+			}
+			
+			private var cornerRadius:Number = 4;
+			
+			protected function initializeHandler(event:FlexEvent):void
+			{
+				// TODO Auto-generated method stub
+				hostComponent.useHandCursor=true;
+				hostComponent.buttonMode=true;
+			}
+			
+		]]>
+	</fx:Script>
+	
+	<s:states>
+		<s:State name="normal" />
+		<s:State name="open" />
+		<s:State name="disabled" />
+	</s:states>
+	
+	<!--- 
+	The PopUpAnchor control that opens the drop-down list. 
+	
+	<p>In a custom skin class that uses transitions, set the 
+	<code>itemDestructionPolicy</code> property to <code>never</code>.</p>
+	-->
+	<s:PopUpAnchor id="popUp"  displayPopUp.normal="false" displayPopUp.open="true" includeIn="open"
+				   left="0" right="0" top="{hostComponent.height+4}" bottom="0" itemDestructionPolicy="auto"
+				   popUpPosition="below" popUpWidthMatchesAnchorWidth="true">
+		
+		<!--- 
+		This includes borders, background colors, scrollers, and filters.
+		@copy spark.components.supportClasses.DropDownListBase#dropDown
+		-->
+		<s:Group id="dropDown">
+			
+			<s:Path top="2" right="20" data="M 0 10 L 10 0 L 20 10 Z">
+				<s:fill>
+					<s:SolidColor color="{ColorUtils.WetAsphalt}" alpha="1"/>
+				</s:fill>
+			</s:Path>
+			
+			<!-- fill -->
+			<!--- Defines the appearance of drop-down list's background fill. -->
+			<s:Rect id="background" left="0" right="0" top="10" bottom="0" radiusX="4" >
+				<s:fill>
+					<s:SolidColor id="bgFill" color="{ColorUtils.WetAsphalt}" />
+				</s:fill>
+			</s:Rect>
+			
+			<!--- @private -->
+			<s:Scroller id="scroller" left="4" top="14" right="4" bottom="4" hasFocusableChildren="false" minViewportInset="1" skinClass="flatspark.skins.ScrollerSkin">
+				<!--- @copy spark.components.SkinnableDataContainer#dataGroup-->
+				<s:DataGroup id="dataGroup" itemRenderer="flatspark.itemRenderers.DefaultItemRenderer">
+					<s:layout>
+						<s:VerticalLayout gap="0" horizontalAlign="contentJustify" requestedMinRowCount="1" requestedMaxRowCount="6"/>
+					</s:layout>
+				</s:DataGroup> 
+			</s:Scroller>
+		</s:Group>
+	</s:PopUpAnchor>
+	
+	<!---  The default skin is DropDownListButtonSkin. 
+	@copy spark.components.supportClasses.DropDownListBase#openButton
+	@see spark.skins.spark.DropDownListButtonSkin -->
+	<s:Button id="openButton" width="29" left="0" right="0" top="0" bottom="0" focusEnabled="false" tabEnabled="false"
+			  skinClass="flatspark.skins.DropDownListButtonSkin" />  
+	
+	<!--- @copy spark.components.DropDownList#labelDisplay -->
+
+	<s:Label id="labelDisplay" verticalAlign="middle" maxDisplayedLines="1"  backgroundColor="{ColorUtils.Turquoise}"
+			 mouseEnabled="false" mouseChildren="false" fontFamily="Lato" fontWeight="normal" color="0xFFFFFF" 
+			 left="10" right="37" top="8" bottom="8" fontSize="15" verticalCenter="0"></s:Label> 
+</s:SparkSkin>
diff --git a/frameworks/projects/flatspark/src/flatspark/skins/HScrollBarSkin.mxml b/frameworks/projects/flatspark/src/flatspark/skins/HScrollBarSkin.mxml
new file mode 100644
index 0000000..9280a7d
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/skins/HScrollBarSkin.mxml
@@ -0,0 +1,87 @@
+<?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.
+
+-->
+
+
+<!--- The default skin class for the Spark HScrollBar component. The thumb and track skins are defined by the
+HScrollBarThumbSkin and HScrollBarTrackSkin classes, respectively.  
+
+       @see spark.components.HScrollBar
+       @see spark.skins.spark.HScrollBarThumbSkin
+       @see spark.skins.spark.HScrollBarTrackSkin
+        
+      @langversion 3.0
+      @playerversion Flash 10
+      @playerversion AIR 1.5
+      @productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
+    xmlns:fb="http://ns.adobe.com/flashbuilder/2009" minWidth="35" minHeight="15" 
+    alpha.disabled="0.5" alpha.inactive="0.5">
+
+    <fx:Metadata>
+    <![CDATA[ 
+        /** 
+         * @copy spark.skins.spark.ApplicationSkin#hostComponent
+         */
+        [HostComponent("spark.components.HScrollBar")]
+    ]]>
+    </fx:Metadata> 
+    
+    <fx:Script fb:purpose="styling">
+        /* Define the skin elements that should not be colorized. 
+           For scroll bar, the skin itself is colorized but the individual parts are not. */
+        static private const exclusions:Array = ["track", "thumb"];
+
+        /**
+         * @private
+         */
+        override public function get colorizeExclusions():Array {return exclusions;}
+        
+        /**
+         * @private
+         */
+        override protected function initializationComplete():void
+        {
+            useChromeColor = true;
+            super.initializationComplete();
+        }
+    </fx:Script>
+    
+    <s:states>
+        <s:State name="normal" />
+        <s:State name="disabled" />
+        <s:State name="inactive" />
+    </s:states>
+    
+    <!---  The default skin class is HScrollBarTrackSkin.    
+            @copy spark.components.supportClasses.TrackBase#track
+            @see spark.skins.spark.HScrollBarTrackSkin -->
+    <s:Button id="track" left="0" right="0" width="54" 
+              focusEnabled="false" tabEnabled="false"
+              skinClass="flatspark.skins.HScrollBarTrackSkin" />
+
+    <!---  The default skin class is HScrollBarThumbSkin. 
+            @copy spark.components.supportClasses.TrackBase#thumb
+            @see spark.skins.spark.HScrollBarThumbSkin -->
+    <s:Button id="thumb" 
+              focusEnabled="false" visible.inactive="false" tabEnabled="false"
+              skinClass="flatspark.skins.HScrollBarThumbSkin" />
+
+</s:SparkSkin>
diff --git a/frameworks/projects/flatspark/src/flatspark/skins/HScrollBarThumbSkin.mxml b/frameworks/projects/flatspark/src/flatspark/skins/HScrollBarThumbSkin.mxml
new file mode 100644
index 0000000..6c510d7
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/skins/HScrollBarThumbSkin.mxml
@@ -0,0 +1,74 @@
+<?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.
+
+-->
+
+
+<!--- The default skin class for the thumb of a Spark HScrollBar component.  
+
+@see spark.components.HScrollBar
+
+@langversion 3.0
+@playerversion Flash 10
+@playerversion AIR 1.5
+@productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
+			 xmlns:fb="http://ns.adobe.com/flashbuilder/2009">
+	
+	<fx:Metadata>
+		<![CDATA[ 
+		/** 
+		* @copy spark.skins.spark.ApplicationSkin#hostComponent
+		*/
+		[HostComponent("spark.components.Button")]
+		]]>
+	</fx:Metadata> 
+	
+	<fx:Script fb:purpose="styling">
+		<![CDATA[
+			import flatspark.utils.ColorUtils;
+			
+			/**
+			 * @private
+			 */
+			override protected function initializationComplete():void
+			{
+				useChromeColor = true;
+				super.initializationComplete();
+			}
+		]]>
+	</fx:Script>
+	
+	<s:states>
+		<s:State name="up" />
+		<s:State name="over" />
+		<s:State name="down" />
+		<s:State name="disabled" />
+	</s:states>
+	
+	<!-- background -->
+	<s:Rect left="0" top="0" right="0" bottom="0" minWidth="8" minHeight="8" radiusX="2" alpha="0.5">
+		<s:stroke>
+			<s:SolidColorStroke color="{ColorUtils.MidnightBlue}" weight="1"/>
+		</s:stroke>
+		<s:fill>
+			<s:SolidColor color="{ColorUtils.Silver}" />
+		</s:fill>
+	</s:Rect>
+</s:SparkSkin>
diff --git a/frameworks/projects/flatspark/src/flatspark/skins/HScrollBarTrackSkin.mxml b/frameworks/projects/flatspark/src/flatspark/skins/HScrollBarTrackSkin.mxml
new file mode 100644
index 0000000..ef2c551
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/skins/HScrollBarTrackSkin.mxml
@@ -0,0 +1,71 @@
+<?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.
+
+-->
+
+
+<!--- The default skin class for the track on a Spark HScrollBar component.  
+
+@see spark.components.HScrollBar
+
+@langversion 3.0
+@playerversion Flash 10
+@playerversion AIR 1.5
+@productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
+			 xmlns:fb="http://ns.adobe.com/flashbuilder/2009">
+	
+	<fx:Metadata>
+		<![CDATA[ 
+		/** 
+		* @copy spark.skins.spark.ApplicationSkin#hostComponent
+		*/
+		[HostComponent("spark.components.Button")]
+		]]>
+	</fx:Metadata> 
+	
+	<fx:Script fb:purpose="styling">
+		<![CDATA[
+			import flatspark.utils.ColorUtils;
+			
+			/**
+			 * @private
+			 */
+			override protected function initializationComplete():void
+			{
+				useChromeColor = true;
+				super.initializationComplete();
+			}
+		]]>
+	</fx:Script>
+	
+	<s:states>
+		<s:State name="up" />
+		<s:State name="down" />
+		<s:State name="over" />
+		<s:State name="disabled" />
+	</s:states>
+	
+	<!-- border/fill -->
+	<s:Rect top="0" bottom="0" left="0" right="0" minWidth="8" minHeight="8" radiusX="2">
+		<s:fill>
+			<s:SolidColor color="{ColorUtils.MidnightBlue}" />
+		</s:fill>
+	</s:Rect>
+</s:SparkSkin>
diff --git a/frameworks/projects/flatspark/src/flatspark/skins/PanelSkin.mxml b/frameworks/projects/flatspark/src/flatspark/skins/PanelSkin.mxml
new file mode 100644
index 0000000..9df0ea7
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/skins/PanelSkin.mxml
@@ -0,0 +1,253 @@
+<?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.
+
+-->
+
+
+<!--- The default skin class for a Spark Panel container.  
+
+    @see spark.components.Panel
+
+    @langversion 3.0
+    @playerversion Flash 10
+    @playerversion AIR 1.5
+    @productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" 
+    xmlns:fb="http://ns.adobe.com/flashbuilder/2009" blendMode="normal" mouseEnabled="false" 
+    minWidth="131" minHeight="127" alpha.disabled="0.5" alpha.disabledWithControlBar="0.5">
+    
+    <fx:Metadata>
+        <![CDATA[ 
+        /** 
+         * @copy spark.skins.spark.ApplicationSkin#hostComponent
+         */
+        [HostComponent("spark.components.Panel")]
+        ]]>
+    </fx:Metadata> 
+    
+    <fx:Script fb:purpose="styling">
+        <![CDATA[
+			import mx.core.FlexVersion;
+			
+			import flatspark.utils.ColorUtils;
+		
+		/* Define the skin elements that should not be colorized. 
+        For panel, border and title background are skinned, but the content area, background, border, and title text are not. */
+        static private const exclusions:Array = ["background", "titleDisplay", "contentGroup", "controlBarGroup", "border"];
+			
+		/* exclusions before Flex 4.5 for backwards-compatibility purposes */
+		static private const exclusions_4_0:Array = ["background", "titleDisplay", "contentGroup", "controlBarGroup"];
+		
+		/**
+		 * @private
+		 */
+		override public function get colorizeExclusions():Array 
+		{
+			// Since border is styleable via borderColor, no need to allow chromeColor to affect
+			// the border.  This is wrapped in a compatibility flag since this change was added  
+			// in Flex 4.5
+			if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_4_5)
+			{
+				return exclusions_4_0;
+			}
+			
+			return exclusions;
+		}
+        
+        /**
+         * @private
+         */
+        override protected function initializationComplete():void
+        {
+            useChromeColor = true;
+            super.initializationComplete();
+        }
+        
+        /**
+         * @private
+         */
+        override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
+        {            
+			dropShadow.tlRadius = cornerRadius;
+			dropShadow.trRadius = cornerRadius;
+			dropShadow.blRadius = cornerRadius;
+			dropShadow.brRadius = cornerRadius;
+			
+			setPartCornerRadii(topMaskRect);  
+			setPartCornerRadii(background);  
+            
+			if (bottomMaskRect != null)
+			{
+				setPartCornerRadii(bottomMaskRect);
+			}
+            
+            super.updateDisplayList(unscaledWidth, unscaledHeight);
+        }
+        
+        /**
+         * @private
+         */  
+        private function setPartCornerRadii(target:Rect):void
+        {            
+            target.topLeftRadiusX = cornerRadius;
+            target.topRightRadiusX = cornerRadius;
+            target.bottomLeftRadiusX = cornerRadius;
+            target.bottomRightRadiusX = cornerRadius;
+        }
+        
+		private var cornerRadius:Number=4;
+		]]>
+    </fx:Script>
+    
+    <s:states>
+        <s:State name="normal" />
+        <s:State name="disabled" />
+        <s:State name="normalWithControlBar" stateGroups="withControls" />
+        <s:State name="disabledWithControlBar" stateGroups="withControls" />
+    </s:states>
+    
+    <!-- drop shadow can't be hittable so it stays sibling of other graphics -->
+    <!--- @private -->
+    <s:RectangularDropShadow id="dropShadow" blurX="4" distance="0" angle="90" alpha="1"
+                          color="{ColorUtils.Silver}" left="0" top="0" right="0" bottom="0"/>
+    
+    <!-- drop shadow can't be hittable so all other graphics go in this group -->
+    <s:Group left="0" right="0" top="0" bottom="0">
+        
+        <!-- top group mask -->
+        <!--- @private -->
+        <s:Group left="0" top="0" right="0" bottom="0" id="topGroupMask" >
+            <!--- @private -->
+            <s:Rect id="topMaskRect" left="0" top="0" right="0" bottom="0">
+                <s:fill>
+                    <s:SolidColor alpha="0"/>
+                </s:fill>
+            </s:Rect>
+        </s:Group>
+        
+        <!-- bottom group mask -->
+        <!--- @private -->
+        <s:Group left="0" top="0" right="0" bottom="0" id="bottomGroupMask" 
+                 includeIn="normalWithControlBar, disabledWithControlBar">
+            <!--- @private -->
+            <s:Rect id="bottomMaskRect" left="0" top="0" right="0" bottom="0">
+                <s:fill>
+                    <s:SolidColor alpha="0"/>
+                </s:fill>
+            </s:Rect>
+        </s:Group>
+        
+        <!-- layer 2: background fill -->
+        <!--- Defines the appearance of the PanelSkin class's background. -->
+        <s:Rect id="background" left="0" top="0" right="0" bottom="0">
+            <s:fill>
+                <!--- @private
+                      Defines the  PanelSkin class's background fill. The default color is 0xFFFFFF. -->
+                <s:SolidColor id="backgroundFill" color="0xFFFFFF"/>
+            </s:fill>
+        </s:Rect>
+        
+        <!-- layer 3: contents -->
+        <!--- Contains the vertical stack of titlebar content and controlbar. -->
+        <s:Group left="0" top="0" right="0" bottom="0" id="contents">
+            <s:layout>
+                <s:VerticalLayout gap="0" horizontalAlign="justify" />
+            </s:layout>
+            
+            <!--- @private -->
+            <s:Group id="topGroup" mask="{topGroupMask}">
+                
+                <!-- layer 0: title bar fill -->
+                <!--- @private -->
+                <s:Rect id="tbFill" left="0" right="0" top="0" bottom="0">
+                    <s:fill>
+						<s:SolidColor color="{ColorUtils.PeterRiver}"/>
+                    </s:fill>
+                </s:Rect>
+                
+                <!-- layer 1: title bar highlight -->
+                <!--- @private -->
+                <s:Rect id="tbHilite" left="0" right="0" top="0" bottom="0">
+                    <s:fill>
+						<s:SolidColor color="{ColorUtils.PeterRiver}"/>
+                    </s:fill>
+                </s:Rect>
+                
+                <!-- layer 2: title bar divider -->
+                <!--- @private -->
+                <s:Rect id="tbDiv" left="0" right="0" height="1" bottom="0">
+                    <s:fill>
+						<s:SolidColor color="{ColorUtils.BelizeHole}"/>
+                    </s:fill>
+                </s:Rect>
+                
+                <!-- layer 3: text -->
+                <!--- @copy spark.components.Panel#titleDisplay -->
+				<s:Label id="titleDisplay" maxDisplayedLines="1"  fontFamily="Lato" fontSize="15" fontStyle="normal" color="#FFFFFF"
+						 left="15" right="5" top="2" bottom="0" minHeight="36" height="36"
+						 verticalAlign="middle" fontWeight="bold" />
+            </s:Group>
+            
+            <!--
+                Note: setting the minimum size to 0 here so that changes to the host component's
+                size will not be thwarted by this skin part's minimum size.   This is a compromise,
+                more about it here: http://bugs.adobe.com/jira/browse/SDK-21143
+            -->
+            <!--- @copy spark.components.SkinnableContainer#contentGroup -->
+            <s:Group id="contentGroup" width="100%" height="100%" minWidth="0" minHeight="0">
+            </s:Group>
+            
+            <!--- @private -->
+            <s:Group id="bottomGroup" minWidth="0" minHeight="0"
+                     includeIn="normalWithControlBar, disabledWithControlBar" >
+                
+                <s:Group left="0" right="0" top="0" bottom="0" mask="{bottomGroupMask}">
+
+                    <!-- layer 0: control bar divider line -->
+                    <s:Rect left="0" right="0" top="0" height="1" alpha="0.5">
+                        <s:fill>
+							<s:SolidColor color="{ColorUtils.Silver}" />
+                        </s:fill>
+                    </s:Rect>
+                    
+                    <!-- layer 1: control bar highlight -->
+                    <s:Rect left="0" right="0" top="1" bottom="0">
+						<s:fill>
+							<s:SolidColor color="{ColorUtils.Clouds}" />
+						</s:fill>
+                    </s:Rect>
+                    
+                    <!-- layer 2: control bar fill -->
+                    <s:Rect left="0" right="0" top="1" bottom="0">
+						<s:fill>
+							<s:SolidColor color="{ColorUtils.Clouds}" />
+						</s:fill>
+                    </s:Rect>
+                </s:Group>
+                <!-- layer 3: control bar -->
+                <!--- @copy spark.components.Panel#controlBarGroup -->
+                <s:Group id="controlBarGroup" left="0" right="0" top="0" bottom="0" minWidth="0" minHeight="0">
+                    <s:layout>
+                        <s:HorizontalLayout paddingLeft="10" paddingRight="10" paddingTop="7" paddingBottom="7" gap="10" />
+                    </s:layout>
+                </s:Group>
+            </s:Group>
+        </s:Group>
+    </s:Group>
+</s:SparkSkin>
diff --git a/frameworks/projects/flatspark/src/flatspark/skins/ProgressBarSkin.mxml b/frameworks/projects/flatspark/src/flatspark/skins/ProgressBarSkin.mxml
new file mode 100644
index 0000000..e9bcb45
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/skins/ProgressBarSkin.mxml
@@ -0,0 +1,54 @@
+<?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.
+
+-->
+<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009"
+		xmlns:s="library://ns.adobe.com/flex/spark">
+	<fx:Metadata>
+		[HostComponent("spark.components.ProgressBar")]
+	</fx:Metadata>
+	
+	<fx:Script>
+		<![CDATA[
+			import flatspark.utils.ColorUtils;
+		]]>
+	</fx:Script>
+	<s:Rect left="0" minHeight="14" top="0" bottom="0" right="0" radiusX="4">
+		<s:fill>
+			<s:SolidColor color="{ColorUtils.Clouds}" />
+		</s:fill>
+	</s:Rect>
+	<s:Group id="progressGroup" top="0" bottom="0"
+			 left="{hostComponent.direction=='left' ? 0 : NaN}"
+			 right="{hostComponent.direction=='right' ? 0 : NaN}">
+		<s:Rect left="0" top="0" bottom="0" right="0" radiusX="4">
+			<s:fill>
+				<s:SolidColor color="{ColorUtils.Turquoise}" />
+			</s:fill>
+		</s:Rect>
+		<!--
+		Variant #2 (looks nicer) - uncomment this and remove last Label declaration
+		<s:Label id="percentDisplay"
+		right="2" verticalCenter="0" verticalAlign="middle"
+		visible="{progressBox.width > percentDisplay.width + 4}"
+		includeInLayout="{progressBox.width > percentDisplay.width + 4}"/>
+		-->
+	</s:Group>
+	<s:Label id="percentDisplay" left="2" right="2" verticalCenter="0" verticalAlign="middle" color="{ColorUtils.WetAsphalt}" fontFamily="Lato" fontWeight="bold" fontSize="13" textAlign="center" />
+
+</s:Skin>
\ No newline at end of file
diff --git a/frameworks/projects/flatspark/src/flatspark/skins/RadioButtonSkin.mxml b/frameworks/projects/flatspark/src/flatspark/skins/RadioButtonSkin.mxml
new file mode 100644
index 0000000..97e2bb1
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/skins/RadioButtonSkin.mxml
@@ -0,0 +1,129 @@
+<?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.
+
+-->
+
+<!--- The default skin class for a Spark RadioButton component.  
+
+       @see spark.components.RadioButton
+       @see spark.components.RadioButtonGroup
+        
+      @langversion 3.0
+      @playerversion Flash 10
+      @playerversion AIR 1.5
+      @productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
+    xmlns:fb="http://ns.adobe.com/flashbuilder/2009" alpha.disabledStates="0.5">
+	<fx:Metadata>[HostComponent("spark.components.RadioButton")]</fx:Metadata>
+
+    <fx:Script fb:purpose="styling">
+        /* Define the skin elements that should not be colorized. 
+           For button, the graphics are colorized but the label is not. */
+        static private const exclusions:Array = ["labelDisplay", "dot"];
+
+        /**
+         * @private
+         */
+        override public function get colorizeExclusions():Array {return exclusions;}
+        
+        /* Define the symbol fill items that should be colored by the "symbolColor" style. */
+        static private const symbols:Array = [];
+        
+        /**
+         * @private
+         */
+        override public function get symbolItems():Array {return symbols};
+        
+        /**
+         * @private
+         */
+        override protected function initializationComplete():void
+        {
+            useChromeColor = true;
+            super.initializationComplete();
+        }
+    </fx:Script>
+    
+    <fx:Script>
+        <![CDATA[
+			import flatspark.utils.ColorUtils;
+        /** 
+         * @private 
+         */     
+        private static const focusExclusions:Array = ["labelDisplay"];
+
+        /**
+         *  @private
+         */
+        override public function get focusSkinExclusions():Array { return focusExclusions;};
+        ]]>
+    </fx:Script>
+    
+    <s:states>
+        <s:State name="up" />
+        <s:State name="over" stateGroups="overStates" />
+        <s:State name="down" stateGroups="downStates" />
+        <s:State name="disabled" stateGroups="disabledStates" />
+        <s:State name="upAndSelected" stateGroups="selectedStates" />
+        <s:State name="overAndSelected" stateGroups="overStates, selectedStates" />
+        <s:State name="downAndSelected" stateGroups="downStates, selectedStates" />
+        <s:State name="disabledAndSelected" stateGroups="disabledStates, selectedStates" />
+    </s:states>
+    
+	<s:Group verticalCenter="0" width="22" height="22">
+		<!-- fill -->
+		<s:Ellipse left="1" top="1" right="1" bottom="1">
+			<s:fill>
+				<s:SolidColor color="#FFFFFF" />
+			</s:fill>
+			<s:stroke>
+				<s:SolidColorStroke color="{ColorUtils.Silver}" weight="4"/>
+			</s:stroke>
+		</s:Ellipse>
+		
+		<s:Ellipse left="1" top="1" right="1" bottom="1" includeIn="overStates">
+			<s:stroke>
+				<s:SolidColorStroke color="{ColorUtils.Asbestos}" weight="4"/>
+			</s:stroke>
+		</s:Ellipse>
+		
+		<s:Ellipse left="1" top="1" right="1" bottom="1" includeIn="selectedStates">
+			<s:stroke>
+				<s:SolidColorStroke color="{ColorUtils.Turquoise}" weight="4"/>
+			</s:stroke>
+		</s:Ellipse>
+		
+		<s:Ellipse left="8" top="8" right="8" bottom="8" includeIn="selectedStates">
+			<s:fill>
+				<s:SolidColor color="{ColorUtils.Turquoise}" />
+			</s:fill>			
+		</s:Ellipse>
+		
+		
+	</s:Group>
+	
+	<!-- Label -->
+	<!---  @copy spark.components.supportClasses.ButtonBase#labelDisplay -->
+	<s:Label id="labelDisplay"
+			 textAlign="start" color="{ColorUtils.WetAsphalt}"
+			 verticalAlign="middle" fontSize="14"
+			 maxDisplayedLines="1" fontFamily="Lato" paddingLeft="30"
+			 left="0" right="0" top="3" bottom="3"/>
+</s:SparkSkin>
diff --git a/frameworks/projects/flatspark/src/flatspark/skins/ScrollerSkin.mxml b/frameworks/projects/flatspark/src/flatspark/skins/ScrollerSkin.mxml
new file mode 100644
index 0000000..8852778
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/skins/ScrollerSkin.mxml
@@ -0,0 +1,106 @@
+<?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.
+
+-->
+
+
+<!--
+
+Scroller unconditionally sets its skin's layout to private layout
+implementation that handles the scroll policies.  Scroller skins can
+only provide replacement scrollbars.  The skin's layout and
+constraints or dimensions set on skin parts will not be honored.  To
+gain more control over the layout of a viewport and its scrollbars,
+instead of using Scroller, add them to a Group and use the ScrollBar component's
+viewport property to link them together.
+ 
+-->
+
+<!--- The default skin class for the Spark Scroller component. 
+
+     @see spark.components.Scroller
+    
+      @langversion 3.0
+      @playerversion Flash 10
+      @playerversion AIR 1.5
+      @productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark">
+
+    <fx:Metadata>
+    <![CDATA[ 
+        /** 
+         * @copy spark.skins.spark.ApplicationSkin#hostComponent
+         */
+        [HostComponent("spark.components.Scroller")]
+    ]]>
+    </fx:Metadata> 
+
+    <fx:Script>
+    <![CDATA[    
+        /**
+         *  @private
+         */
+        override public function beginHighlightBitmapCapture() : Boolean
+        {
+            var needUpdate:Boolean = super.beginHighlightBitmapCapture();
+            
+            // Draw an opaque rect that fill our entire skin. Our background
+            // is transparent, but we don't want focus/error skins to
+            // poke through.  This is safe to do since we don't have any 
+            // graphic elements as direct children.
+            graphics.beginFill(0);
+            graphics.drawRect(0, 0, width, height);
+            graphics.endFill();
+
+            return needUpdate;
+        }
+        
+        /**
+         *  @private
+         */
+        override public function endHighlightBitmapCapture() : Boolean
+        {
+            var needUpdate:Boolean = super.endHighlightBitmapCapture();
+            
+            // Clear the rect we drew in beginBitmapCapture();
+            graphics.clear();
+
+            return needUpdate;
+        }
+    ]]>
+    </fx:Script>
+    
+    <fx:Declarations>
+        <!---  A vertical scrollbar that lets you control the portion of data that is displayed 
+        when there is too much data to fit vertically in a display area.
+        The Scroller determines whether the vertical ScrollBar is visible. -->
+        <fx:Component id="verticalScrollBarFactory">
+            <s:VScrollBar visible="false" skinClass="flatspark.skins.VScrollBarSkin" />
+        </fx:Component>
+        
+        <!---  A horizontal scrollbar that lets you control the portion of data that is displayed 
+        when there is too much data to fit horizontally in a display area.
+        The Scroller determines whether the horizontal ScrollBar is visible. -->
+        <fx:Component  id="horizontalScrollBarFactory">
+            <s:HScrollBar visible="false" skinClass="flatspark.skins.HScrollBarSkin" />
+        </fx:Component> 
+
+    </fx:Declarations>
+
+</s:SparkSkin>
diff --git a/frameworks/projects/flatspark/src/flatspark/skins/TextInputIconSkin.mxml b/frameworks/projects/flatspark/src/flatspark/skins/TextInputIconSkin.mxml
new file mode 100644
index 0000000..a4b167a
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/skins/TextInputIconSkin.mxml
@@ -0,0 +1,338 @@
+<?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.
+
+-->
+<!--- The default skin class for Spark TextInput component.  
+
+     @see spark.components.TextInput
+        
+      @langversion 3.0
+      @playerversion Flash 10
+      @playerversion AIR 1.5
+      @productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
+    xmlns:fb="http://ns.adobe.com/flashbuilder/2009" height="{TextInputSizeEnum.Normal}"
+    alpha.disabledStates="0.5" blendMode="normal">
+
+    <fx:Metadata>
+    <![CDATA[ 
+        /** 
+         * @copy spark.skins.spark.ApplicationSkin#hostComponent
+         */
+        [HostComponent("flatspark.components.TextInputIcon")]
+    ]]>
+    </fx:Metadata> 
+	
+	<fx:Style>
+		@namespace s "library://ns.adobe.com/flex/spark";
+		@namespace fb "http://ns.adobe.com/flashbuilder/2009";
+		@namespace spark "spark.skins.spark.*";
+		
+		*
+		{
+			/*focusColor: #FFFFFF;
+			focusThickness: 1px;
+			focusAlpha: 1;*/
+			/*focusAlpha: 0;*/
+			errorColor: #E74C3C;
+		}
+	</fx:Style>
+    
+    <fx:Script fb:purpose="styling">
+        <![CDATA[
+			import mx.core.FlexVersion;
+			
+			import flatspark.enums.ButtonSizeEnum;
+			import flatspark.enums.TextInputSizeEnum;
+			import flatspark.utils.AwesomeUtils;
+			import flatspark.utils.ColorUtils;
+			
+        private var paddingChanged:Boolean;
+        
+        /* Define the skin elements that should not be colorized. */
+        static private const exclusions:Array = ["background", "background_disabled", "textDisplay", "promptDisplay", "border", "border_disabled"];
+        
+        /* exclusions before Flex 4.5 for backwards-compatibility purposes */
+        static private const exclusions_4_0:Array = ["background", "background_disabled", "textDisplay", "promptDisplay"];
+        
+        /**
+         * @private
+         */
+        override public function get colorizeExclusions():Array 
+        {
+            // Since border is styleable via borderColor, no need to allow chromeColor to affect
+            // the border.  This is wrapped in a compatibility flag since this change was added  
+            // in Flex 4.5
+            if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_4_5)
+            {
+                return exclusions_4_0;
+            }
+            
+            return exclusions;
+        }
+        
+        /* Define the content fill items that should be colored by the "contentBackgroundColor" style. */
+        static private const contentFill:Array = ["bgFill"];
+
+        /**
+         *  @private
+         */
+        override public function get contentItems():Array {return contentFill};
+        
+        /**
+         *  @private
+         */
+        override protected function commitProperties():void
+        {
+            super.commitProperties();
+            
+            if (paddingChanged)
+            {
+                updatePadding();
+                paddingChanged = false;
+            }
+        }
+        
+        /**
+         * @private
+         */
+        override protected function initializationComplete():void
+        {
+            useChromeColor = true;
+            super.initializationComplete();
+        }
+        
+        /**
+         *  @private
+         */
+        override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
+        {
+            if (getStyle("borderVisible") == true)
+            {
+                border.visible = true;
+                background.left = background.top = background.right = background.bottom = 2;
+                textDisplay.left = textDisplay.top = textDisplay.bottom = 8;
+				textDisplay.right = 30;
+                if (promptDisplay)
+                {
+                    promptDisplay.setLayoutBoundsSize(unscaledWidth - 8, unscaledHeight - 8);
+                    promptDisplay.setLayoutBoundsPosition(5, 5);
+                }
+            }
+            else
+            {
+                border.visible = false;
+                background.left = background.top = background.right = background.bottom = 0;
+                textDisplay.left = textDisplay.top = textDisplay.right = textDisplay.bottom = 0;
+                if (promptDisplay)
+                {
+                    promptDisplay.setLayoutBoundsSize(unscaledWidth, unscaledHeight);
+                    promptDisplay.setLayoutBoundsPosition(0, 0);
+                }
+            }
+            
+            /*borderStroke.color = getStyle("borderColor");
+            borderStroke.alpha = getStyle("borderAlpha");*/
+            
+            super.updateDisplayList(unscaledWidth, unscaledHeight);
+        }
+
+        /**
+         *  @private
+         */
+        private function updatePadding():void
+        {
+            if (!textDisplay)
+                return;
+            
+            // Push padding styles into the textDisplay
+            var padding:Number;
+            
+            padding = getStyle("paddingLeft");
+            if (textDisplay.getStyle("paddingLeft") != padding)
+                textDisplay.setStyle("paddingLeft", padding);
+            
+            padding = getStyle("paddingTop");
+            if (textDisplay.getStyle("paddingTop") != padding)
+                textDisplay.setStyle("paddingTop", padding);
+            
+            padding = getStyle("paddingRight");
+            if (textDisplay.getStyle("paddingRight") != padding)
+                textDisplay.setStyle("paddingRight", padding);
+            
+            padding = getStyle("paddingBottom");
+            if (textDisplay.getStyle("paddingBottom") != padding)
+                textDisplay.setStyle("paddingBottom", padding);
+            
+            if (!promptDisplay)
+                return;
+            
+            padding = getStyle("paddingLeft");
+            if (promptDisplay.getStyle("paddingLeft") != padding)
+                promptDisplay.setStyle("paddingLeft", padding);
+            
+            padding = getStyle("paddingTop");
+            if (promptDisplay.getStyle("paddingTop") != padding)
+                promptDisplay.setStyle("paddingTop", padding);
+            
+            padding = getStyle("paddingRight");
+            if (promptDisplay.getStyle("paddingRight") != padding)
+                promptDisplay.setStyle("paddingRight", padding);
+            
+            padding = getStyle("paddingBottom");
+            if (promptDisplay.getStyle("paddingBottom") != padding)
+                promptDisplay.setStyle("paddingBottom", padding);
+        }
+        
+        /**
+         *  @private
+         */
+        override public function styleChanged(styleProp:String):void
+        {
+            var allStyles:Boolean = !styleProp || styleProp == "styleName";
+
+            super.styleChanged(styleProp);
+            
+            if (allStyles || styleProp.indexOf("padding") == 0)
+            {
+                paddingChanged = true;
+                invalidateProperties();
+            }
+        }
+			
+			protected function textDisplay_focusInHandler(event:FocusEvent):void
+			{
+				borderStroke.color = ColorUtils.Asbestos;
+				iconFont.setStyle("color", ColorUtils.Asbestos);
+			}
+			
+			protected function textDisplay_focusOutHandler(event:FocusEvent):void
+			{
+				borderStroke.color = ColorUtils.Silver;
+				iconFont.setStyle("color", ColorUtils.Silver);
+			}
+			
+			private static function getFontSize(height:int):int
+			{
+				var altura:int = 15;
+				
+				switch (height)
+				{
+					case TextInputSizeEnum.Large:
+						altura = 17;
+						break;
+					case TextInputSizeEnum.Normal:
+						altura = 15;
+						break;
+					case TextInputSizeEnum.Small:
+						altura = 13;
+						break;
+				}
+				
+				return altura;
+			}
+			
+			private static function getIconSize(height:int):int
+			{
+				var altura:int = 17;
+				
+				switch (height)
+				{
+					case TextInputSizeEnum.Large:
+						altura = 19;
+						break;
+					case TextInputSizeEnum.Normal:
+						altura = 17;
+						break;
+					case TextInputSizeEnum.Small:
+						altura = 15;
+						break;
+				}
+				
+				return altura;
+			}
+			
+		]]>
+    </fx:Script>
+    
+    <fx:Script>
+        <![CDATA[
+        /** 
+         * @private 
+         */     
+        private static const focusExclusions:Array = ["textDisplay"];
+
+        /**
+         *  @private
+         */
+        override public function get focusSkinExclusions():Array { return focusExclusions;};
+        ]]>
+    </fx:Script>
+    
+    <s:states>
+        <s:State name="normal"/>
+        <s:State name="disabled" stateGroups="disabledStates"/>
+        <s:State name="normalWithPrompt"/>
+        <s:State name="disabledWithPrompt" stateGroups="disabledStates"/>
+    </s:states>
+    
+    <!-- border --> 
+    <!--- @private -->
+    <s:Rect left="0" right="0" top="0" bottom="0" id="border" radiusX="6">
+        <s:stroke>     
+            <!--- @private -->
+            <s:SolidColorStroke id="borderStroke" weight="2" color="{ColorUtils.Silver}"/>
+        </s:stroke>
+    </s:Rect>
+
+    <!-- fill -->
+    <!--- Defines the appearance of the TextInput component's background. -->
+    <s:Rect id="background" left="2" right="2" top="2" bottom="2" radiusX="6">
+        <s:fill>
+            <!--- @private Defines the background fill color. -->
+            <s:SolidColor id="bgFill" color="0xFFFFFF" />
+        </s:fill>
+    </s:Rect>
+	
+	<s:Rect id="background_disabled" left="2" right="2" top="2" bottom="2" radiusX="6" includeIn="disabledStates">
+		<s:fill>
+			<s:SolidColor color="0xf4f6f6"/>
+		</s:fill>
+	</s:Rect>
+    
+    <!-- text -->
+	<!--- @copy spark.components.supportClasses.SkinnableTextBase#textDisplay -->
+    <s:RichEditableText id="textDisplay"
+              verticalAlign="middle" focusIn="textDisplay_focusInHandler(event)" focusOut="textDisplay_focusOutHandler(event)"
+              widthInChars="10" fontFamily="Lato" fontWeight="normal" color="{ColorUtils.WetAsphalt}"
+              left="8" right="30" top="8" bottom="8" fontSize="{getFontSize(hostComponent.height)}"/>
+    <!--- Defines the Label that is used for prompt text. The includeInLayout property is false so the prompt text does not affect measurement. -->
+    <s:Label id="promptDisplay" maxDisplayedLines="1" fontSize="{getFontSize(hostComponent.height)}"
+                verticalAlign="middle" fontFamily="Lato" fontWeight="normal" fontStyle="normal" color="{ColorUtils.Silver}"
+                mouseEnabled="false" mouseChildren="false"
+                includeIn="normalWithPrompt,disabledWithPrompt" 
+                includeInLayout="false"
+                />
+	<s:Label id="iconFont" color="{ColorUtils.Silver}" color.disabledStates="{ColorUtils.Silver}" text="{hostComponent.iconFont}"
+			 textAlign="right" fontSize="{getIconSize(hostComponent.height)}" fontFamily="FontAwesome" fontStyle="normal"
+			 maxDisplayedLines="1" mouseChildren="false" mouseEnabled="false"
+			 horizontalCenter="0" verticalCenter="0" verticalAlign="middle"
+			 left="8" right="8" top="2" bottom="2" includeInLayout="{iconFont != null}">
+	</s:Label>
+</s:SparkSkin>
diff --git a/frameworks/projects/flatspark/src/flatspark/skins/TextInputSkin.mxml b/frameworks/projects/flatspark/src/flatspark/skins/TextInputSkin.mxml
new file mode 100644
index 0000000..54f71f0
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/skins/TextInputSkin.mxml
@@ -0,0 +1,330 @@
+<?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.
+
+-->
+<!--- The default skin class for Spark TextInput component.  
+
+     @see spark.components.TextInput
+        
+      @langversion 3.0
+      @playerversion Flash 10
+      @playerversion AIR 1.5
+      @productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
+    xmlns:fb="http://ns.adobe.com/flashbuilder/2009" height="{TextInputSizeEnum.Normal}"
+    alpha.disabledStates="0.5" blendMode="normal">
+
+    <fx:Metadata>
+    <![CDATA[ 
+        /** 
+         * @copy spark.skins.spark.ApplicationSkin#hostComponent
+         */
+        [HostComponent("spark.components.TextInput")]
+    ]]>
+    </fx:Metadata> 
+	
+	<fx:Style>
+		@namespace s "library://ns.adobe.com/flex/spark";
+		@namespace fb "http://ns.adobe.com/flashbuilder/2009";
+		@namespace spark "spark.skins.spark.*";
+		
+		*
+		{
+			/*focusColor: #FFFFFF;
+			focusThickness: 1px;
+			focusAlpha: 1;*/
+			/*focusAlpha: 0;*/
+			errorColor: #E74C3C;
+		}
+	</fx:Style>
+    
+    <fx:Script fb:purpose="styling">
+        <![CDATA[
+			import mx.core.FlexVersion;
+			
+			import flatspark.enums.ButtonSizeEnum;
+			import flatspark.enums.TextInputSizeEnum;
+			import flatspark.utils.AwesomeUtils;
+			import flatspark.utils.ColorUtils;
+			
+        private var paddingChanged:Boolean;
+        
+        /* Define the skin elements that should not be colorized. */
+        static private const exclusions:Array = ["background", "background_disabled", "textDisplay", "promptDisplay", "border", "border_disabled"];
+        
+        /* exclusions before Flex 4.5 for backwards-compatibility purposes */
+        static private const exclusions_4_0:Array = ["background", "background_disabled", "textDisplay", "promptDisplay"];
+        
+        /**
+         * @private
+         */
+        override public function get colorizeExclusions():Array 
+        {
+            // Since border is styleable via borderColor, no need to allow chromeColor to affect
+            // the border.  This is wrapped in a compatibility flag since this change was added  
+            // in Flex 4.5
+            if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_4_5)
+            {
+                return exclusions_4_0;
+            }
+            
+            return exclusions;
+        }
+        
+        /* Define the content fill items that should be colored by the "contentBackgroundColor" style. */
+        static private const contentFill:Array = ["bgFill"];
+
+        /**
+         *  @private
+         */
+        override public function get contentItems():Array {return contentFill};
+        
+        /**
+         *  @private
+         */
+        override protected function commitProperties():void
+        {
+            super.commitProperties();
+            
+            if (paddingChanged)
+            {
+                updatePadding();
+                paddingChanged = false;
+            }
+        }
+        
+        /**
+         * @private
+         */
+        override protected function initializationComplete():void
+        {
+            useChromeColor = true;
+            super.initializationComplete();
+        }
+        
+        /**
+         *  @private
+         */
+        override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
+        {
+            if (getStyle("borderVisible") == true)
+            {
+                border.visible = true;
+                background.left = background.top = background.right = background.bottom = 2;
+                textDisplay.left = textDisplay.top = textDisplay.bottom = 8;
+				textDisplay.right = 30;
+                if (promptDisplay)
+                {
+                    promptDisplay.setLayoutBoundsSize(unscaledWidth - 8, unscaledHeight - 8);
+                    promptDisplay.setLayoutBoundsPosition(5, 5);
+                }
+            }
+            else
+            {
+                border.visible = false;
+                background.left = background.top = background.right = background.bottom = 0;
+                textDisplay.left = textDisplay.top = textDisplay.right = textDisplay.bottom = 0;
+                if (promptDisplay)
+                {
+                    promptDisplay.setLayoutBoundsSize(unscaledWidth, unscaledHeight);
+                    promptDisplay.setLayoutBoundsPosition(0, 0);
+                }
+            }
+            
+            /*borderStroke.color = getStyle("borderColor");
+            borderStroke.alpha = getStyle("borderAlpha");*/
+            
+            super.updateDisplayList(unscaledWidth, unscaledHeight);
+        }
+
+        /**
+         *  @private
+         */
+        private function updatePadding():void
+        {
+            if (!textDisplay)
+                return;
+            
+            // Push padding styles into the textDisplay
+            var padding:Number;
+            
+            padding = getStyle("paddingLeft");
+            if (textDisplay.getStyle("paddingLeft") != padding)
+                textDisplay.setStyle("paddingLeft", padding);
+            
+            padding = getStyle("paddingTop");
+            if (textDisplay.getStyle("paddingTop") != padding)
+                textDisplay.setStyle("paddingTop", padding);
+            
+            padding = getStyle("paddingRight");
+            if (textDisplay.getStyle("paddingRight") != padding)
+                textDisplay.setStyle("paddingRight", padding);
+            
+            padding = getStyle("paddingBottom");
+            if (textDisplay.getStyle("paddingBottom") != padding)
+                textDisplay.setStyle("paddingBottom", padding);
+            
+            if (!promptDisplay)
+                return;
+            
+            padding = getStyle("paddingLeft");
+            if (promptDisplay.getStyle("paddingLeft") != padding)
+                promptDisplay.setStyle("paddingLeft", padding);
+            
+            padding = getStyle("paddingTop");
+            if (promptDisplay.getStyle("paddingTop") != padding)
+                promptDisplay.setStyle("paddingTop", padding);
+            
+            padding = getStyle("paddingRight");
+            if (promptDisplay.getStyle("paddingRight") != padding)
+                promptDisplay.setStyle("paddingRight", padding);
+            
+            padding = getStyle("paddingBottom");
+            if (promptDisplay.getStyle("paddingBottom") != padding)
+                promptDisplay.setStyle("paddingBottom", padding);
+        }
+        
+        /**
+         *  @private
+         */
+        override public function styleChanged(styleProp:String):void
+        {
+            var allStyles:Boolean = !styleProp || styleProp == "styleName";
+
+            super.styleChanged(styleProp);
+            
+            if (allStyles || styleProp.indexOf("padding") == 0)
+            {
+                paddingChanged = true;
+                invalidateProperties();
+            }
+        }
+			
+			protected function textDisplay_focusInHandler(event:FocusEvent):void
+			{
+				borderStroke.color = ColorUtils.Asbestos;
+			}
+			
+			protected function textDisplay_focusOutHandler(event:FocusEvent):void
+			{
+				borderStroke.color = ColorUtils.Silver;
+			}
+			
+			private static function getFontSize(height:int):int
+			{
+				var altura:int = 15;
+				
+				switch (height)
+				{
+					case TextInputSizeEnum.Large:
+						altura = 17;
+						break;
+					case TextInputSizeEnum.Normal:
+						altura = 15;
+						break;
+					case TextInputSizeEnum.Small:
+						altura = 13;
+						break;
+				}
+				
+				return altura;
+			}
+			
+			private static function getIconSize(height:int):int
+			{
+				var altura:int = 17;
+				
+				switch (height)
+				{
+					case TextInputSizeEnum.Large:
+						altura = 19;
+						break;
+					case TextInputSizeEnum.Normal:
+						altura = 17;
+						break;
+					case TextInputSizeEnum.Small:
+						altura = 15;
+						break;
+				}
+				
+				return altura;
+			}
+			
+		]]>
+    </fx:Script>
+    
+    <fx:Script>
+        <![CDATA[
+        /** 
+         * @private 
+         */     
+        private static const focusExclusions:Array = ["textDisplay"];
+
+        /**
+         *  @private
+         */
+        override public function get focusSkinExclusions():Array { return focusExclusions;};
+        ]]>
+    </fx:Script>
+    
+    <s:states>
+        <s:State name="normal"/>
+        <s:State name="disabled" stateGroups="disabledStates"/>
+        <s:State name="normalWithPrompt"/>
+        <s:State name="disabledWithPrompt" stateGroups="disabledStates"/>
+    </s:states>
+    
+    <!-- border --> 
+    <!--- @private -->
+    <s:Rect left="0" right="0" top="0" bottom="0" id="border" radiusX="6">
+        <s:stroke>     
+            <!--- @private -->
+            <s:SolidColorStroke id="borderStroke" weight="2" color="{ColorUtils.Silver}"/>
+        </s:stroke>
+    </s:Rect>
+
+    <!-- fill -->
+    <!--- Defines the appearance of the TextInput component's background. -->
+    <s:Rect id="background" left="2" right="2" top="2" bottom="2" radiusX="6">
+        <s:fill>
+            <!--- @private Defines the background fill color. -->
+            <s:SolidColor id="bgFill" color="0xFFFFFF" />
+        </s:fill>
+    </s:Rect>
+	
+	<s:Rect id="background_disabled" left="2" right="2" top="2" bottom="2" radiusX="6" includeIn="disabledStates">
+		<s:fill>
+			<s:SolidColor color="0xf4f6f6"/>
+		</s:fill>
+	</s:Rect>
+    
+    <!-- text -->
+	<!--- @copy spark.components.supportClasses.SkinnableTextBase#textDisplay -->
+    <s:RichEditableText id="textDisplay"
+              verticalAlign="middle" focusIn="textDisplay_focusInHandler(event)" focusOut="textDisplay_focusOutHandler(event)"
+              widthInChars="10" fontFamily="Lato" fontWeight="normal" color="{ColorUtils.WetAsphalt}"
+              left="8" right="30" top="8" bottom="8" fontSize="{getFontSize(hostComponent.height)}"/>
+    <!--- Defines the Label that is used for prompt text. The includeInLayout property is false so the prompt text does not affect measurement. -->
+    <s:Label id="promptDisplay" maxDisplayedLines="1" fontSize="{getFontSize(hostComponent.height)}"
+                verticalAlign="middle" fontFamily="Lato" fontWeight="normal" fontStyle="normal" color="{ColorUtils.Silver}"
+                mouseEnabled="false" mouseChildren="false"
+                includeIn="normalWithPrompt,disabledWithPrompt" 
+                includeInLayout="false"
+                />
+</s:SparkSkin>
diff --git a/frameworks/projects/flatspark/src/flatspark/skins/TitleWindowCloseButtonSkin.mxml b/frameworks/projects/flatspark/src/flatspark/skins/TitleWindowCloseButtonSkin.mxml
new file mode 100644
index 0000000..cfbfa7c
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/skins/TitleWindowCloseButtonSkin.mxml
@@ -0,0 +1,118 @@
+<?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.
+
+-->
+
+
+<!--- The default skin class for the close button of the Spark TitleWindow component.  
+
+@see spark.skins.spark.TitleWindowSkin     
+@see spark.components.TitleWindow
+
+@langversion 3.0
+@playerversion Flash 10
+@playerversion AIR 1.5
+@productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
+			 xmlns:fb="http://ns.adobe.com/flashbuilder/2009" alpha.disabled="0.5" initialize="initializeHandler(event)">
+	
+	<!-- host component -->
+	<fx:Metadata>
+		<![CDATA[ 
+		/** 
+		* @copy spark.skins.spark.ApplicationSkin#hostComponent
+		*/
+		[HostComponent("spark.components.Button")]
+		]]>
+	</fx:Metadata> 
+	<fx:Script>
+		<![CDATA[
+			import mx.events.FlexEvent;
+			
+			import flatspark.utils.AwesomeUtils;
+			import flatspark.utils.ColorUtils;
+			
+			protected function initializeHandler(event:FlexEvent):void
+			{
+				// TODO Auto-generated method stub
+				hostComponent.useHandCursor=true;
+				hostComponent.buttonMode=true;
+			}
+			
+		]]>
+	</fx:Script>
+	
+	<!--		<fx:Script fb:purpose="styling">
+	<![CDATA[
+	import flatspark.utils.AwesomeUtils;
+	]]>
+	/* Define the skin elements that should not be colorized. 
+	For closeButton, the graphics are colorized but the x is not. */
+	static private const exclusions:Array = ["xSymbol"];
+	
+	/** 
+	* @private
+	*/     
+	override public function get colorizeExclusions():Array {return exclusions;}
+	
+	/* Define the symbol fill items that should be colored by the "symbolColor" style. */
+	static private const symbols:Array = ["xFill1", "xFill2"];
+	
+	/**
+	* @private
+	*/
+	override public function get symbolItems():Array {return symbols};
+	</fx:Script>-->
+	
+	<s:states>
+		<s:State name="up" />
+		<s:State name="over"/>
+		<s:State name="down" />
+		<s:State name="disabled" />
+	</s:states>
+	
+	<s:Rect left="0" top="0" right="0" bottom="0" radiusX="6" width="26" height="26" includeIn="up">
+		<s:fill>
+			<s:SolidColor alpha="0" />
+		</s:fill>
+	</s:Rect>
+	
+	<s:Rect left="0" top="0" right="0" bottom="0" radiusX="6" width="26" height="26" includeIn="over">
+		<s:fill>
+			<s:SolidColor alpha="1" color="{ColorUtils.BelizeHole}" />
+		</s:fill>
+	</s:Rect>
+	
+	<s:Rect left="0" top="0" right="0" bottom="0" radiusX="6" width="26" height="26" includeIn="down">
+		<s:fill>
+			<s:SolidColor alpha="1" color="{ColorUtils.BelizeHole}" />
+		</s:fill>
+	</s:Rect>
+	
+	<s:Rect left="0" top="0" right="0" bottom="0" radiusX="6" width="26" height="26" includeIn="disabled">
+		<s:fill>
+			<s:SolidColor alpha="1" color="{ColorUtils.Clouds}" />
+		</s:fill>
+	</s:Rect>
+	
+	<s:Label fontFamily="FontAwesome" fontSize="18" color="#FFFFFF" text="{AwesomeUtils.fa_times}" includeIn="up, down, over, disabled"
+			 itemCreationPolicy="immediate" verticalAlign="middle" horizontalCenter="0" verticalCenter="0" />
+	
+
+</s:SparkSkin>
\ No newline at end of file
diff --git a/frameworks/projects/flatspark/src/flatspark/skins/TitleWindowSkin.mxml b/frameworks/projects/flatspark/src/flatspark/skins/TitleWindowSkin.mxml
new file mode 100644
index 0000000..c4e4a94
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/skins/TitleWindowSkin.mxml
@@ -0,0 +1,256 @@
+<?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.
+
+-->
+
+
+<!--- The default skin class for a Spark TitleWindow container.  
+
+     @see spark.skins.spark.TitleWindowCloseButtonSkin
+     @see spark.components.TitleWindow
+
+     @langversion 3.0
+     @playerversion Flash 10
+     @playerversion AIR 1.5
+     @productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" 
+    xmlns:fb="http://ns.adobe.com/flashbuilder/2009" blendMode="normal" mouseEnabled="false"
+    minWidth="76" minHeight="76" alpha.disabled="0.5" alpha.disabledWithControlBar="0.5">
+    
+    <fx:Metadata>
+        <![CDATA[ 
+        /** 
+         * @copy spark.skins.spark.ApplicationSkin#hostComponent
+         */
+        [HostComponent("spark.components.TitleWindow")]
+        ]]>
+    </fx:Metadata> 
+    
+    <fx:Script fb:purpose="styling">
+        <![CDATA[
+			import mx.core.FlexVersion;
+			
+			import flatspark.utils.ColorUtils;
+		
+		/* Define the skin elements that should not be colorized. 
+        For panel, border and title background are skinned, but the content area, background, border, and title text are not. */
+        static private const exclusions:Array = ["background", "titleDisplay", "contentGroup", "border"];
+		
+		/* exclusions before Flex 4.5 for backwards-compatibility purposes */
+		static private const exclusions_4_0:Array = ["background", "titleDisplay", "contentGroup"];
+		
+		/**
+		 * @private
+		 */
+		override public function get colorizeExclusions():Array 
+		{
+			// Since border is styleable via borderColor, no need to allow chromeColor to affect
+			// the border.  This is wrapped in a compatibility flag since this change was added  
+			// in Flex 4.5
+			if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_4_5)
+			{
+				return exclusions_4_0;
+			}
+			
+			return exclusions;
+		}
+        
+        /**
+         * @private
+         */
+        override protected function initializationComplete():void
+        {
+            useChromeColor = true;
+            super.initializationComplete();
+        }
+        
+        /**
+         * @private
+         */
+        override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
+        {
+			var withControls:Boolean = 
+				(currentState == "disabledWithControlBar" || 
+					currentState == "normalWithControlBar" ||
+					currentState == "inactiveWithControlBar");
+			
+			setPartCornerRadii(topMaskRect, withControls);  
+			setPartCornerRadii(background, withControls);
+			if (bottomMaskRect != null)
+			{
+				setPartCornerRadii(bottomMaskRect, withControls);
+			}
+			
+            super.updateDisplayList(unscaledWidth, unscaledHeight);
+        }
+        
+        /**
+         * @private
+         */  
+        private function setPartCornerRadii(target:Rect, includeBottom:Boolean):void
+        {            
+            target.topLeftRadiusX = cornerRadius;
+            target.topRightRadiusX = cornerRadius;
+            target.bottomLeftRadiusX = includeBottom ? cornerRadius : 0;
+            target.bottomRightRadiusX = includeBottom ? cornerRadius : 0;
+        }
+        
+        private var cornerRadius:Number=4;
+		]]>
+    </fx:Script>
+    
+    <s:states>
+        <s:State name="normal" />
+        <s:State name="inactive" stateGroups="inactiveGroup" />
+        <s:State name="disabled" />
+        <s:State name="normalWithControlBar" stateGroups="withControls" />
+        <s:State name="inactiveWithControlBar" stateGroups="withControls, inactiveGroup" />
+        <s:State name="disabledWithControlBar" stateGroups="withControls" />
+    </s:states>
+    
+    <!--- drop shadow can't be hittable so all other graphics go in this group -->
+    <s:Group left="0" right="0" top="0" bottom="0">
+        
+        <!--- top group mask @private-->
+        <s:Group left="1" top="1" right="1" bottom="1" id="topGroupMask">
+            <!--- @private-->
+            <s:Rect id="topMaskRect" left="0" top="0" right="0" bottom="0">
+                <s:fill>
+                    <s:SolidColor alpha="0"/>
+                </s:fill>
+            </s:Rect>
+        </s:Group>
+        
+        <!--- bottom group mask @private-->
+        <s:Group left="1" top="1" right="1" bottom="1" id="bottomGroupMask" 
+                 includeIn="withControls">
+            <!--- @private-->
+            <s:Rect id="bottomMaskRect" left="0" top="0" right="0" bottom="0">
+                <s:fill>
+                    <s:SolidColor alpha="0"/>
+                </s:fill>
+            </s:Rect>
+        </s:Group>
+        
+        
+        <!-- layer 2: background fill -->
+        <!--- Defines the appearance of the TitleWindowSkin class's background. -->
+        <s:Rect id="background" left="1" top="1" right="1" bottom="1">
+            <s:fill>
+                <!--- Defines the TitleWindowSkin class's background fill. The default color is 0xFFFFFF. -->
+                <s:SolidColor id="backgroundFill" color="{ColorUtils.Clouds}"/>
+            </s:fill>
+        </s:Rect>
+        
+        <!-- layer 3: contents -->
+        <!--- Contains the vertical stack of title bar content and control bar. -->
+        <s:Group left="1" right="1" top="1" bottom="1" id="contents">
+            <s:layout>
+                <s:VerticalLayout gap="0" horizontalAlign="justify" />
+            </s:layout>
+            <!--- @private -->
+            <s:Group id="topGroup" mask="{topGroupMask}" height="56">
+                
+                <!--- layer 0: title bar fill @private -->
+                <s:Rect id="tbFill" left="0" right="0" top="0" bottom="1">
+					<s:fill>
+						<s:SolidColor color="{ColorUtils.PeterRiver}"/>
+					</s:fill>
+                </s:Rect>
+                
+                <!--- layer 1: title bar highlight @private -->
+                <s:Rect id="tbHilite" left="0" right="0" top="0" bottom="0">
+					<s:fill>
+						<s:SolidColor color="{ColorUtils.PeterRiver}"/>
+					</s:fill>
+                </s:Rect>
+                
+                <!--- layer 2: title bar divider @private -->
+                <s:Rect id="tbDiv" left="0" right="0" height="1" bottom="0">
+					<s:fill>
+						<s:SolidColor color="{ColorUtils.BelizeHole}"/>
+					</s:fill>
+					
+					<s:filters>
+						<s:DropShadowFilter distance="1" angle="90" color="{ColorUtils.Silver}"/>
+					</s:filters>
+                </s:Rect>
+                
+                <!-- layer 3: text -->
+                <!--- @copy spark.components.Panel#titleDisplay -->
+                <s:Label id="titleDisplay" maxDisplayedLines="1"  fontFamily="Lato" fontSize="21" fontStyle="normal" color="#FFFFFF"
+                         left="15" right="36" top="1" bottom="0" minHeight="56" height="56"
+                         verticalAlign="middle" fontWeight="bold" />
+                
+                <!-- layer 4: moveArea -->
+                <!--- @copy spark.components.TitleWindow#moveArea -->
+                <s:Group id="moveArea" left="0" right="0" top="0" bottom="0" />
+                
+                <!--- @copy spark.components.TitleWindow#closeButton -->
+                <s:Button id="closeButton" skinClass="flatspark.skins.TitleWindowCloseButtonSkin" 
+                         right="15" top="15" />
+            </s:Group>
+            
+            <!--
+                Note: setting the minimum size to 0 here so that changes to the host component's
+                size will not be thwarted by this skin part's minimum size.   This is a compromise,
+                more about it here: http://bugs.adobe.com/jira/browse/SDK-21143
+            -->
+            <!--- @copy spark.components.SkinnableContainer#contentGroup -->
+            <s:Group id="contentGroup" width="100%" height="100%" minWidth="0" minHeight="0">
+            </s:Group>
+            
+            <!--- @private -->
+            <s:Group id="bottomGroup" minWidth="0" minHeight="0" 
+                     includeIn="withControls">  
+                
+                <s:Group left="0" right="0" top="0" bottom="0" mask="{bottomGroupMask}" height="65">
+
+                    <!-- layer 0: control bar divider line -->
+                    <s:Rect left="0" right="0" top="0" height="1">
+                        <s:fill>
+                            <s:SolidColor color="{ColorUtils.Silver}" />
+                        </s:fill>
+                    </s:Rect>
+                    
+                    <!-- layer 1: control bar highlight -->
+                    <s:Rect left="0" right="0" top="1" bottom="0">
+						<s:fill>
+							<s:SolidColor color="0xFFFFFF" />
+						</s:fill>
+                    </s:Rect>
+                    
+                    <!-- layer 2: control bar fill -->
+                    <s:Rect left="1" right="1" top="2" bottom="1">
+						<s:fill>
+							<s:SolidColor color="0xFFFFFF" />
+						</s:fill>
+                    </s:Rect>
+                </s:Group>
+                
+                <!--- @copy spark.components.Panel#controlBarGroup -->
+                <s:Group id="controlBarGroup" left="0" right="0" top="1" bottom="1" minWidth="0" minHeight="0">
+                    <s:layout>
+                        <s:HorizontalLayout paddingLeft="10" paddingRight="10" paddingTop="7" paddingBottom="7" gap="10" />
+                    </s:layout>
+                </s:Group>
+            </s:Group>
+        </s:Group>
+    </s:Group>
+</s:SparkSkin>
diff --git a/frameworks/projects/flatspark/src/flatspark/skins/VScrollBarSkin.mxml b/frameworks/projects/flatspark/src/flatspark/skins/VScrollBarSkin.mxml
new file mode 100644
index 0000000..ef9f400
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/skins/VScrollBarSkin.mxml
@@ -0,0 +1,87 @@
+<?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.
+
+-->
+
+
+<!--- The default skin class for the Spark VScrollBar component. The thumb and track skins are defined by the
+VScrollBarThumbSkin and VScrollBarTrackSkin classes, respectively.  
+
+       @see spark.components.VScrollBar
+       @see spark.skins.spark.VScrollBarThumbSkin
+       @see spark.skins.spark.VScrollBarTrackSkin
+        
+      @langversion 3.0
+      @playerversion Flash 10
+      @playerversion AIR 1.5
+      @productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
+    xmlns:fb="http://ns.adobe.com/flashbuilder/2009" minWidth="8" minHeight="35" 
+    alpha.disabled="0.5" alpha.inactive="0.5" >
+
+    <fx:Metadata>
+    <![CDATA[ 
+        /** 
+         * @copy spark.skins.spark.ApplicationSkin#hostComponent
+         */
+        [HostComponent("spark.components.VScrollBar")]
+    ]]>
+    </fx:Metadata> 
+    
+    <fx:Script fb:purpose="styling">
+        /* Define the skin elements that should not be colorized. 
+           For scroll bar, the skin itself is colorized but the individual parts are not. */
+        static private const exclusions:Array = ["track", "thumb"];
+
+        /**
+         * @private
+         */
+        override public function get colorizeExclusions():Array {return exclusions;}
+        
+        /**
+         * @private
+         */
+        override protected function initializationComplete():void
+        {
+            useChromeColor = true;
+            super.initializationComplete();
+        }
+    </fx:Script>
+     
+    <s:states>
+        <s:State name="normal" />
+        <s:State name="disabled" />
+        <s:State name="inactive" />
+    </s:states>
+   
+    <!---  The default skin class is VScrollBarTrackSkin.  
+            @copy spark.components.supportClasses.TrackBase#track 
+            @see spark.skins.spark.VScrollBarTrackSkin -->
+    <s:Button id="track" top="0" bottom="0" height="54"
+              focusEnabled="false" tabEnabled="false"
+              skinClass="flatspark.skins.VScrollBarTrackSkin" />
+    
+    <!--- The default skin class is VScrollBarThumbSkin.
+            @copy spark.components.supportClasses.TrackBase#thumb 
+            @see spark.skins.spark.VScrollBarThumbSkin -->
+    <s:Button id="thumb" 
+              focusEnabled="false" visible.inactive="false" tabEnabled="false"
+              skinClass="flatspark.skins.VScrollBarThumbSkin" />
+
+</s:SparkSkin>
diff --git a/frameworks/projects/flatspark/src/flatspark/skins/VScrollBarThumbSkin.mxml b/frameworks/projects/flatspark/src/flatspark/skins/VScrollBarThumbSkin.mxml
new file mode 100644
index 0000000..b732343
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/skins/VScrollBarThumbSkin.mxml
@@ -0,0 +1,74 @@
+<?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.
+
+-->
+
+
+<!--- The default skin class for the thumb of a Spark VScrollBar component.  
+
+@see spark.components.VScrollBar
+
+@langversion 3.0
+@playerversion Flash 10
+@playerversion AIR 1.5
+@productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
+			 xmlns:fb="http://ns.adobe.com/flashbuilder/2009">
+	
+	<fx:Metadata>
+		<![CDATA[ 
+		/** 
+		* @copy spark.skins.spark.ApplicationSkin#hostComponent
+		*/
+		[HostComponent("spark.components.Button")]
+		]]>
+	</fx:Metadata> 
+	
+	<fx:Script fb:purpose="styling">
+		<![CDATA[
+			import flatspark.utils.ColorUtils;
+			
+			/**
+			 * @private
+			 */
+			override protected function initializationComplete():void
+			{
+				useChromeColor = true;
+				super.initializationComplete();
+			}
+		]]>
+	</fx:Script>
+	
+	<s:states>
+		<s:State name="up" />
+		<s:State name="over" />
+		<s:State name="down" />
+		<s:State name="disabled" />
+	</s:states>
+	
+	<!-- background -->
+	<s:Rect left="0" top="0" right="0" bottom="0" minWidth="8" minHeight="8" radiusX="2" alpha="0.5">
+		<s:stroke>
+			<s:SolidColorStroke color="{ColorUtils.MidnightBlue}" weight="1"/>
+		</s:stroke>
+		<s:fill>
+			<s:SolidColor color="{ColorUtils.Silver}" />
+		</s:fill>
+	</s:Rect>
+</s:SparkSkin>
diff --git a/frameworks/projects/flatspark/src/flatspark/skins/VScrollBarTrackSkin.mxml b/frameworks/projects/flatspark/src/flatspark/skins/VScrollBarTrackSkin.mxml
new file mode 100644
index 0000000..b7d504d
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/skins/VScrollBarTrackSkin.mxml
@@ -0,0 +1,71 @@
+<?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.
+
+-->
+
+
+<!--- The default skin class for the track of a Spark VScrollBar component.  
+
+@see spark.components.VScrollBar
+
+@langversion 3.0
+@playerversion Flash 10
+@playerversion AIR 1.5
+@productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
+			 xmlns:fb="http://ns.adobe.com/flashbuilder/2009">
+	
+	<fx:Metadata>
+		<![CDATA[ 
+		/** 
+		* @copy spark.skins.spark.ApplicationSkin#hostComponent
+		*/
+		[HostComponent("spark.components.Button")]
+		]]>
+	</fx:Metadata> 
+	
+	<fx:Script fb:purpose="styling">
+		<![CDATA[
+			import flatspark.utils.ColorUtils;
+			
+			/**
+			 * @private
+			 */
+			override protected function initializationComplete():void
+			{
+				useChromeColor = true;
+				super.initializationComplete();
+			}
+		]]>
+	</fx:Script>
+	
+	<s:states>
+		<s:State name="up" />
+		<s:State name="down" />
+		<s:State name="over" />
+		<s:State name="disabled" />
+	</s:states>
+	
+	<!-- border/fill -->
+	<s:Rect top="0" bottom="0" left="0" right="0" minWidth="8" minHeight="8" radiusX="2">
+		<s:fill>
+			<s:SolidColor color="{ColorUtils.MidnightBlue}" />
+		</s:fill>
+	</s:Rect>
+</s:SparkSkin>
diff --git a/frameworks/projects/flatspark/src/flatspark/utils/AwesomeUtils.as b/frameworks/projects/flatspark/src/flatspark/utils/AwesomeUtils.as
new file mode 100644
index 0000000..99571b6
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/utils/AwesomeUtils.as
@@ -0,0 +1,399 @@
+/**	
+ 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 flatspark.utils
+{
+	public class AwesomeUtils
+	{
+		
+		public function AwesomeUtils() 
+		{
+			
+		}
+		
+		public static const fa_glass:String = "\uf000";
+		public static const fa_music:String = "\uf001";
+		public static const fa_search:String = "\uf002";
+		public static const fa_envelope_o:String = "\uf003";
+		public static const fa_heart:String = "\uf004";
+		public static const fa_star:String = "\uf005";
+		public static const fa_star_o:String = "\uf006";
+		public static const fa_user:String = "\uf007";
+		public static const fa_film:String = "\uf008";
+		public static const fa_th_large:String = "\uf009";
+		public static const fa_th:String = "\uf00a";
+		public static const fa_th_list:String = "\uf00b";
+		public static const fa_check:String = "\uf00c";
+		public static const fa_times:String = "\uf00d";
+		public static const fa_search_plus:String = "\uf00e";
+		public static const fa_search_minus:String = "\uf010";
+		public static const fa_power_off:String = "\uf011";
+		public static const fa_signal:String = "\uf012";
+		public static const fa_cog:String = "\uf013";
+		public static const fa_trash_o:String = "\uf014";
+		public static const fa_home:String = "\uf015";
+		public static const fa_file_o:String = "\uf016";
+		public static const fa_clock_o:String = "\uf017";
+		public static const fa_road:String = "\uf018";
+		public static const fa_download:String = "\uf019";
+		public static const fa_arrow_circle_o_down:String = "\uf01a";
+		public static const fa_arrow_circle_o_up:String = "\uf01b";
+		public static const fa_inbox:String = "\uf01c";
+		public static const fa_play_circle_o:String = "\uf01d";
+		public static const fa_repeat:String = "\uf01e";
+		public static const fa_refresh:String = "\uf021";
+		public static const fa_list_alt:String = "\uf022";
+		public static const fa_lock:String = "\uf023";
+		public static const fa_flag:String = "\uf024";
+		public static const fa_headphones:String = "\uf025";
+		public static const fa_volume_off:String = "\uf026";
+		public static const fa_volume_down:String = "\uf027";
+		public static const fa_volume_up:String = "\uf028";
+		public static const fa_qrcode:String = "\uf029";
+		public static const fa_barcode:String = "\uf02a";
+		public static const fa_tag:String = "\uf02b";
+		public static const fa_tags:String = "\uf02c";
+		public static const fa_book:String = "\uf02d";
+		public static const fa_bookmark:String = "\uf02e";
+		public static const fa_print:String = "\uf02f";
+		public static const fa_camera:String = "\uf030";
+		public static const fa_font:String = "\uf031";
+		public static const fa_bold:String = "\uf032";
+		public static const fa_italic:String = "\uf033";
+		public static const fa_text_height:String = "\uf034";
+		public static const fa_text_width:String = "\uf035";
+		public static const fa_align_left:String = "\uf036";
+		public static const fa_align_center:String = "\uf037";
+		public static const fa_align_right:String = "\uf038";
+		public static const fa_align_justify:String = "\uf039";
+		public static const fa_list:String = "\uf03a";
+		public static const fa_outdent:String = "\uf03b";
+		public static const fa_indent:String = "\uf03c";
+		public static const fa_video_camera:String = "\uf03d";
+		public static const fa_picture_o:String = "\uf03e";
+		public static const fa_pencil:String = "\uf040";
+		public static const fa_map_marker:String = "\uf041";
+		public static const fa_adjust:String = "\uf042";
+		public static const fa_tint:String = "\uf043";
+		public static const fa_pencil_square_o:String = "\uf044";
+		public static const fa_share_square_o:String = "\uf045";
+		public static const fa_check_square_o:String = "\uf046";
+		public static const fa_arrows:String = "\uf047";
+		public static const fa_step_backward:String = "\uf048";
+		public static const fa_fast_backward:String = "\uf049";
+		public static const fa_backward:String = "\uf04a";
+		public static const fa_play:String = "\uf04b";
+		public static const fa_pause:String = "\uf04c";
+		public static const fa_stop:String = "\uf04d";
+		public static const fa_forward:String = "\uf04e";
+		public static const fa_fast_forward:String = "\uf050";
+		public static const fa_step_forward:String = "\uf051";
+		public static const fa_eject:String = "\uf052";
+		public static const fa_chevron_left:String = "\uf053";
+		public static const fa_chevron_right:String = "\uf054";
+		public static const fa_plus_circle:String = "\uf055";
+		public static const fa_minus_circle:String = "\uf056";
+		public static const fa_times_circle:String = "\uf057";
+		public static const fa_check_circle:String = "\uf058";
+		public static const fa_question_circle:String = "\uf059";
+		public static const fa_info_circle:String = "\uf05a";
+		public static const fa_crosshairs:String = "\uf05b";
+		public static const fa_times_circle_o:String = "\uf05c";
+		public static const fa_check_circle_o:String = "\uf05d";
+		public static const fa_ban:String = "\uf05e";
+		public static const fa_arrow_left:String = "\uf060";
+		public static const fa_arrow_right:String = "\uf061";
+		public static const fa_arrow_up:String = "\uf062";
+		public static const fa_arrow_down:String = "\uf063";
+		public static const fa_share:String = "\uf064";
+		public static const fa_expand:String = "\uf065";
+		public static const fa_compress:String = "\uf066";
+		public static const fa_plus:String = "\uf067";
+		public static const fa_minus:String = "\uf068";
+		public static const fa_asterisk:String = "\uf069";
+		public static const fa_exclamation_circle:String = "\uf06a";
+		public static const fa_gift:String = "\uf06b";
+		public static const fa_leaf:String = "\uf06c";
+		public static const fa_fire:String = "\uf06d";
+		public static const fa_eye:String = "\uf06e";
+		public static const fa_eye_slash:String = "\uf070";
+		public static const fa_exclamation_triangle:String = "\uf071";
+		public static const fa_plane:String = "\uf072";
+		public static const fa_calendar:String = "\uf073";
+		public static const fa_random:String = "\uf074";
+		public static const fa_comment:String = "\uf075";
+		public static const fa_magnet:String = "\uf076";
+		public static const fa_chevron_up:String = "\uf077";
+		public static const fa_chevron_down:String = "\uf078";
+		public static const fa_retweet:String = "\uf079";
+		public static const fa_shopping_cart:String = "\uf07a";
+		public static const fa_folder:String = "\uf07b";
+		public static const fa_folder_open:String = "\uf07c";
+		public static const fa_arrows_v:String = "\uf07d";
+		public static const fa_arrows_h:String = "\uf07e";
+		public static const fa_bar_chart_o:String = "\uf080";
+		public static const fa_twitter_square:String = "\uf081";
+		public static const fa_facebook_square:String = "\uf082";
+		public static const fa_camera_retro:String = "\uf083";
+		public static const fa_key:String = "\uf084";
+		public static const fa_cogs:String = "\uf085";
+		public static const fa_comments:String = "\uf086";
+		public static const fa_thumbs_o_up:String = "\uf087";
+		public static const fa_thumbs_o_down:String = "\uf088";
+		public static const fa_star_half:String = "\uf089";
+		public static const fa_heart_o:String = "\uf08a";
+		public static const fa_sign_out:String = "\uf08b";
+		public static const fa_linkedin_square:String = "\uf08c";
+		public static const fa_thumb_tack:String = "\uf08d";
+		public static const fa_external_link:String = "\uf08e";
+		public static const fa_sign_in:String = "\uf090";
+		public static const fa_trophy:String = "\uf091";
+		public static const fa_github_square:String = "\uf092";
+		public static const fa_upload:String = "\uf093";
+		public static const fa_lemon_o:String = "\uf094";
+		public static const fa_phone:String = "\uf095";
+		public static const fa_square_o:String = "\uf096";
+		public static const fa_bookmark_o:String = "\uf097";
+		public static const fa_phone_square:String = "\uf098";
+		public static const fa_twitter:String = "\uf099";
+		public static const fa_facebook:String = "\uf09a";
+		public static const fa_github:String = "\uf09b";
+		public static const fa_unlock:String = "\uf09c";
+		public static const fa_credit_card:String = "\uf09d";
+		public static const fa_rss:String = "\uf09e";
+		public static const fa_hdd_o:String = "\uf0a0";
+		public static const fa_bullhorn:String = "\uf0a1";
+		public static const fa_bell:String = "\uf0f3";
+		public static const fa_certificate:String = "\uf0a3";
+		public static const fa_hand_o_right:String = "\uf0a4";
+		public static const fa_hand_o_left:String = "\uf0a5";
+		public static const fa_hand_o_up:String = "\uf0a6";
+		public static const fa_hand_o_down:String = "\uf0a7";
+		public static const fa_arrow_circle_left:String = "\uf0a8";
+		public static const fa_arrow_circle_right:String = "\uf0a9";
+		public static const fa_arrow_circle_up:String = "\uf0aa";
+		public static const fa_arrow_circle_down:String = "\uf0ab";
+		public static const fa_globe:String = "\uf0ac";
+		public static const fa_wrench:String = "\uf0ad";
+		public static const fa_tasks:String = "\uf0ae";
+		public static const fa_filter:String = "\uf0b0";
+		public static const fa_briefcase:String = "\uf0b1";
+		public static const fa_arrows_alt:String = "\uf0b2";
+		public static const fa_users:String = "\uf0c0";
+		public static const fa_link:String = "\uf0c1";
+		public static const fa_cloud:String = "\uf0c2";
+		public static const fa_flask:String = "\uf0c3";
+		public static const fa_scissors:String = "\uf0c4";
+		public static const fa_files_o:String = "\uf0c5";
+		public static const fa_paperclip:String = "\uf0c6";
+		public static const fa_floppy_o:String = "\uf0c7";
+		public static const fa_square:String = "\uf0c8";
+		public static const fa_bars:String = "\uf0c9";
+		public static const fa_list_ul:String = "\uf0ca";
+		public static const fa_list_ol:String = "\uf0cb";
+		public static const fa_strikethrough:String = "\uf0cc";
+		public static const fa_underline:String = "\uf0cd";
+		public static const fa_table:String = "\uf0ce";
+		public static const fa_magic:String = "\uf0d0";
+		public static const fa_truck:String = "\uf0d1";
+		public static const fa_pinterest:String = "\uf0d2";
+		public static const fa_pinterest_square:String = "\uf0d3";
+		public static const fa_google_plus_square:String = "\uf0d4";
+		public static const fa_google_plus:String = "\uf0d5";
+		public static const fa_money:String = "\uf0d6";
+		public static const fa_caret_down:String = "\uf0d7";
+		public static const fa_caret_up:String = "\uf0d8";
+		public static const fa_caret_left:String = "\uf0d9";
+		public static const fa_caret_right:String = "\uf0da";
+		public static const fa_columns:String = "\uf0db";
+		public static const fa_sort:String = "\uf0dc";
+		public static const fa_sort_asc:String = "\uf0dd";
+		public static const fa_sort_desc:String = "\uf0de";
+		public static const fa_envelope:String = "\uf0e0";
+		public static const fa_linkedin:String = "\uf0e1";
+		public static const fa_undo:String = "\uf0e2";
+		public static const fa_gavel:String = "\uf0e3";
+		public static const fa_tachometer:String = "\uf0e4";
+		public static const fa_comment_o:String = "\uf0e5";
+		public static const fa_comments_o:String = "\uf0e6";
+		public static const fa_bolt:String = "\uf0e7";
+		public static const fa_sitemap:String = "\uf0e8";
+		public static const fa_umbrella:String = "\uf0e9";
+		public static const fa_clipboard:String = "\uf0ea";
+		public static const fa_lightbulb_o:String = "\uf0eb";
+		public static const fa_exchange:String = "\uf0ec";
+		public static const fa_cloud_download:String = "\uf0ed";
+		public static const fa_cloud_upload:String = "\uf0ee";
+		public static const fa_user_md:String = "\uf0f0";
+		public static const fa_stethoscope:String = "\uf0f1";
+		public static const fa_suitcase:String = "\uf0f2";
+		public static const fa_bell_o:String = "\uf0a2";
+		public static const fa_coffee:String = "\uf0f4";
+		public static const fa_cutlery:String = "\uf0f5";
+		public static const fa_file_text_o:String = "\uf0f6";
+		public static const fa_building_o:String = "\uf0f7";
+		public static const fa_hospital_o:String = "\uf0f8";
+		public static const fa_ambulance:String = "\uf0f9";
+		public static const fa_medkit:String = "\uf0fa";
+		public static const fa_fighter_jet:String = "\uf0fb";
+		public static const fa_beer:String = "\uf0fc";
+		public static const fa_h_square:String = "\uf0fd";
+		public static const fa_plus_square:String = "\uf0fe";
+		public static const fa_angle_double_left:String = "\uf100";
+		public static const fa_angle_double_right:String = "\uf101";
+		public static const fa_angle_double_up:String = "\uf102";
+		public static const fa_angle_double_down:String = "\uf103";
+		public static const fa_angle_left:String = "\uf104";
+		public static const fa_angle_right:String = "\uf105";
+		public static const fa_angle_up:String = "\uf106";
+		public static const fa_angle_down:String = "\uf107";
+		public static const fa_desktop:String = "\uf108";
+		public static const fa_laptop:String = "\uf109";
+		public static const fa_tablet:String = "\uf10a";
+		public static const fa_mobile:String = "\uf10b";
+		public static const fa_circle_o:String = "\uf10c";
+		public static const fa_quote_left:String = "\uf10d";
+		public static const fa_quote_right:String = "\uf10e";
+		public static const fa_spinner:String = "\uf110";
+		public static const fa_circle:String = "\uf111";
+		public static const fa_reply:String = "\uf112";
+		public static const fa_github_alt:String = "\uf113";
+		public static const fa_folder_o:String = "\uf114";
+		public static const fa_folder_open_o:String = "\uf115";
+		public static const fa_smile_o:String = "\uf118";
+		public static const fa_frown_o:String = "\uf119";
+		public static const fa_meh_o:String = "\uf11a";
+		public static const fa_gamepad:String = "\uf11b";
+		public static const fa_keyboard_o:String = "\uf11c";
+		public static const fa_flag_o:String = "\uf11d";
+		public static const fa_flag_checkered:String = "\uf11e";
+		public static const fa_terminal:String = "\uf120";
+		public static const fa_code:String = "\uf121";
+		public static const fa_reply_all:String = "\uf122";
+		public static const fa_mail_reply_all:String = "\uf122";
+		public static const fa_star_half_o:String = "\uf123";
+		public static const fa_location_arrow:String = "\uf124";
+		public static const fa_crop:String = "\uf125";
+		public static const fa_code_fork:String = "\uf126";
+		public static const fa_chain_broken:String = "\uf127";
+		public static const fa_question:String = "\uf128";
+		public static const fa_info:String = "\uf129";
+		public static const fa_exclamation:String = "\uf12a";
+		public static const fa_superscript:String = "\uf12b";
+		public static const fa_subscript:String = "\uf12c";
+		public static const fa_eraser:String = "\uf12d";
+		public static const fa_puzzle_piece:String = "\uf12e";
+		public static const fa_microphone:String = "\uf130";
+		public static const fa_microphone_slash:String = "\uf131";
+		public static const fa_shield:String = "\uf132";
+		public static const fa_calendar_o:String = "\uf133";
+		public static const fa_fire_extinguisher:String = "\uf134";
+		public static const fa_rocket:String = "\uf135";
+		public static const fa_maxcdn:String = "\uf136";
+		public static const fa_chevron_circle_left:String = "\uf137";
+		public static const fa_chevron_circle_right:String = "\uf138";
+		public static const fa_chevron_circle_up:String = "\uf139";
+		public static const fa_chevron_circle_down:String = "\uf13a";
+		public static const fa_html5:String = "\uf13b";
+		public static const fa_css3:String = "\uf13c";
+		public static const fa_anchor:String = "\uf13d";
+		public static const fa_unlock_alt:String = "\uf13e";
+		public static const fa_bullseye:String = "\uf140";
+		public static const fa_ellipsis_h:String = "\uf141";
+		public static const fa_ellipsis_v:String = "\uf142";
+		public static const fa_rss_square:String = "\uf143";
+		public static const fa_play_circle:String = "\uf144";
+		public static const fa_ticket:String = "\uf145";
+		public static const fa_minus_square:String = "\uf146";
+		public static const fa_minus_square_o:String = "\uf147";
+		public static const fa_level_up:String = "\uf148";
+		public static const fa_level_down:String = "\uf149";
+		public static const fa_check_square:String = "\uf14a";
+		public static const fa_pencil_square:String = "\uf14b";
+		public static const fa_external_link_square:String = "\uf14c";
+		public static const fa_share_square:String = "\uf14d";
+		public static const fa_compass:String = "\uf14e";
+		public static const fa_caret_square_o_down:String = "\uf150";
+		public static const fa_caret_square_o_up:String = "\uf151";
+		public static const fa_caret_square_o_right:String = "\uf152";
+		public static const fa_eur:String = "\uf153";
+		public static const fa_gbp:String = "\uf154";
+		public static const fa_usd:String = "\uf155";
+		public static const fa_inr:String = "\uf156";
+		public static const fa_jpy:String = "\uf157";
+		public static const fa_rub:String = "\uf158";
+		public static const fa_krw:String = "\uf159";
+		public static const fa_btc:String = "\uf15a";
+		public static const fa_file:String = "\uf15b";
+		public static const fa_file_text:String = "\uf15c";
+		public static const fa_sort_alpha_asc:String = "\uf15d";
+		public static const fa_sort_alpha_desc:String = "\uf15e";
+		public static const fa_sort_amount_asc:String = "\uf160";
+		public static const fa_sort_amount_desc:String = "\uf161";
+		public static const fa_sort_numeric_asc:String = "\uf162";
+		public static const fa_sort_numeric_desc:String = "\uf163";
+		public static const fa_thumbs_up:String = "\uf164";
+		public static const fa_thumbs_down:String = "\uf165";
+		public static const fa_youtube_square:String = "\uf166";
+		public static const fa_youtube:String = "\uf167";
+		public static const fa_xing:String = "\uf168";
+		public static const fa_xing_square:String = "\uf169";
+		public static const fa_youtube_play:String = "\uf16a";
+		public static const fa_dropbox:String = "\uf16b";
+		public static const fa_stack_overflow:String = "\uf16c";
+		public static const fa_instagram:String = "\uf16d";
+		public static const fa_flickr:String = "\uf16e";
+		public static const fa_adn:String = "\uf170";
+		public static const fa_bitbucket:String = "\uf171";
+		public static const fa_bitbucket_square:String = "\uf172";
+		public static const fa_tumblr:String = "\uf173";
+		public static const fa_tumblr_square:String = "\uf174";
+		public static const fa_long_arrow_down:String = "\uf175";
+		public static const fa_long_arrow_up:String = "\uf176";
+		public static const fa_long_arrow_left:String = "\uf177";
+		public static const fa_long_arrow_right:String = "\uf178";
+		public static const fa_apple:String = "\uf179";
+		public static const fa_windows:String = "\uf17a";
+		public static const fa_android:String = "\uf17b";
+		public static const fa_linux:String = "\uf17c";
+		public static const fa_dribbble:String = "\uf17d";
+		public static const fa_skype:String = "\uf17e";
+		public static const fa_foursquare:String = "\uf180";
+		public static const fa_trello:String = "\uf181";
+		public static const fa_female:String = "\uf182";
+		public static const fa_male:String = "\uf183";
+		public static const fa_gittip:String = "\uf184";
+		public static const fa_sun_o:String = "\uf185";
+		public static const fa_moon_o:String = "\uf186";
+		public static const fa_archive:String = "\uf187";
+		public static const fa_bug:String = "\uf188";
+		public static const fa_vk:String = "\uf189";
+		public static const fa_weibo:String = "\uf18a";
+		public static const fa_renren:String = "\uf18b";
+		public static const fa_pagelines:String = "\uf18c";
+		public static const fa_stack_exchange:String = "\uf18d";
+		public static const fa_arrow_circle_o_right:String = "\uf18e";
+		public static const fa_arrow_circle_o_left:String = "\uf190";
+		public static const fa_caret_square_o_left:String = "\uf191";
+		public static const fa_dot_circle_o:String = "\uf192";
+		public static const fa_wheelchair:String = "\uf193";
+		public static const fa_vimeo_square:String = "\uf194";
+		public static const fa_try:String = "\uf195";
+		public static const fa_plus_square_o:String = "\uf196";
+
+	}
+}
\ No newline at end of file
diff --git a/frameworks/projects/flatspark/src/flatspark/utils/ColorUtils.as b/frameworks/projects/flatspark/src/flatspark/utils/ColorUtils.as
new file mode 100644
index 0000000..09f9cb2
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/utils/ColorUtils.as
@@ -0,0 +1,90 @@
+/**	
+ 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 flatspark.utils
+{
+	import mx.states.State;
+	
+	import flatspark.enums.BrandColorEnum;
+	import flatspark.enums.ButtonColorEnum;
+
+	public class ColorUtils
+	{	
+		public static const Turquoise:uint = 0x1ABC9C;
+		public static const GreenSea:uint = 0x16A085;
+		public static const Emerald:uint = 0x2ECC71;
+		public static const Nephritis:uint = 0x27AE60;
+		public static const PeterRiver:uint = 0x3498DB;
+		public static const BelizeHole:uint = 0x2980B9;
+		public static const Amethyst:uint = 0x9B59B6;
+		public static const Wisteria:uint = 0x8E44AD;
+		public static const WetAsphalt:uint = 0x34495E;
+		public static const MidnightBlue:uint = 0x2C3E50;
+		public static const SunFlower:uint = 0xF1C40F;
+		public static const Orange:uint = 0xF39C12;
+		public static const Carrot:uint = 0xE67E22;
+		public static const Pumpkin:uint = 0xD35400;
+		public static const Alizarin:uint = 0xE74C3C;
+		public static const Pomegranate:uint = 0xC0392B;
+		public static const Clouds:uint = 0xECF0F1;
+		public static const Silver:uint = 0xBDC3C7;
+		public static const Concrete:uint = 0x95A5A6;
+		public static const Asbestos:uint = 0x7F8C8D;
+		
+		public function ColorUtils()
+		{
+			
+		}		
+		
+		public static function ButtonColor(brand:int, estado:State):uint
+		{
+			// All the possible colors
+			var cores:Array = new Array(
+				ButtonColorEnum.PrimaryUp, ButtonColorEnum.PrimaryHover, ButtonColorEnum.PrimaryDown, ButtonColorEnum.PrimaryDisabled,
+				ButtonColorEnum.SuccessUp, ButtonColorEnum.SuccessHover, ButtonColorEnum.SuccessDown, ButtonColorEnum.SuccessDisabled,
+				ButtonColorEnum.WarningUp, ButtonColorEnum.WarningHover, ButtonColorEnum.WarningDown, ButtonColorEnum.WarningDisabled,
+				ButtonColorEnum.InverseUp, ButtonColorEnum.InverseHover, ButtonColorEnum.InverseDown, ButtonColorEnum.InverseDisabled,
+				ButtonColorEnum.DefaultUp, ButtonColorEnum.DefaultHover, ButtonColorEnum.DefaultDown, ButtonColorEnum.DefaultDisabled,
+				ButtonColorEnum.InfoUp, ButtonColorEnum.InfoHover, ButtonColorEnum.InfoDown, ButtonColorEnum.InfoDisabled,
+				ButtonColorEnum.DangerUp, ButtonColorEnum.DangerHover, ButtonColorEnum.DangerDown, ButtonColorEnum.DangerDisabled
+				);
+			
+			// Map all the allowed states
+			var numeroEstado:int = 1;
+			switch (estado.name)
+			{
+				case "up":
+					numeroEstado = 1;
+					break;
+				case "over":
+					numeroEstado = 2;
+					break;
+				case "down":
+					numeroEstado = 3;
+					break;
+				case "disabled":
+					numeroEstado = 3;
+					break;
+			}
+			
+			var posicao:int = 1;
+			posicao = 4 * (brand - 1) + (numeroEstado - 1); 
+			
+			return cores[posicao];
+		}
+	}
+}
\ No newline at end of file
diff --git a/frameworks/projects/flatspark/src/flatspark/utils/ConfigSkin.as b/frameworks/projects/flatspark/src/flatspark/utils/ConfigSkin.as
new file mode 100644
index 0000000..5889da1
--- /dev/null
+++ b/frameworks/projects/flatspark/src/flatspark/utils/ConfigSkin.as
@@ -0,0 +1,44 @@
+/**	
+ 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 flatspark.utils
+{
+
+	import flatspark.enums.ColorSwatchEnum;
+	import flatspark.enums.SizeEnum;
+
+	public final class ConfigSkin
+	{
+
+		/*
+		*  Default size
+		*/
+		public static var sizeEnum:SizeEnum=new SizeEnum();
+
+		/*
+		*  Default color
+		*/
+		public static var colorSwatch:ColorSwatchEnum=new ColorSwatchEnum();
+
+
+		public function ConfigSkin()
+		{
+
+		}
+
+	}
+}
diff --git a/frameworks/projects/framework/src/mx/binding/Binding.as b/frameworks/projects/framework/src/mx/binding/Binding.as
index b2e0598..6122921 100644
--- a/frameworks/projects/framework/src/mx/binding/Binding.as
+++ b/frameworks/projects/framework/src/mx/binding/Binding.as
@@ -423,46 +423,44 @@
             wrappedFunctionSuccessful = true;
             return result;
         }
-        catch(itemPendingError:ItemPendingError)
-        {
-            itemPendingError.addResponder(new EvalBindingResponder(this, object));
-            if (BindingManager.debugDestinationStrings[destString])
-            {
-                trace("Binding: destString = " + destString + ", error = " + itemPendingError);
-            }
-        }
-        catch(rangeError:RangeError)
-        {
-            if (BindingManager.debugDestinationStrings[destString])
-            {
-                trace("Binding: destString = " + destString + ", error = " + rangeError);
-            }
-        }
         catch(error:Error)
         {
-            // Certain errors are normal when executing a srcFunc or destFunc,
-            // so we swallow them:
-            //   Error #1006: Call attempted on an object that is not a function.
-            //   Error #1009: null has no properties.
-            //   Error #1010: undefined has no properties.
-            //   Error #1055: - has no properties.
-            //   Error #1069: Property - not found on - and there is no default value
-            // We allow any other errors to be thrown.
-            if ((error.errorID != 1006) &&
-                (error.errorID != 1009) &&
-                (error.errorID != 1010) &&
-                (error.errorID != 1055) &&
-                (error.errorID != 1069))
-            {
-                throw error;
-            }
-            else
-            {
-                if (BindingManager.debugDestinationStrings[destString])
-                {
-                    trace("Binding: destString = " + destString + ", error = " + error);
-                }
-            }
+			if (error is ItemPendingError) {
+	            error.addResponder(new EvalBindingResponder(this, object));
+	            if (BindingManager.debugDestinationStrings[destString])
+	            {
+	                trace("Binding: destString = " + destString + ", error = " + error);
+	            }
+			} else if (error is RangeError) {
+	            if (BindingManager.debugDestinationStrings[destString])
+	            {
+	                trace("Binding: destString = " + destString + ", error = " + error);
+	            }
+			} else {
+	            // Certain errors are normal when executing a srcFunc or destFunc,
+	            // so we swallow them:
+	            //   Error #1006: Call attempted on an object that is not a function.
+	            //   Error #1009: null has no properties.
+	            //   Error #1010: undefined has no properties.
+	            //   Error #1055: - has no properties.
+	            //   Error #1069: Property - not found on - and there is no default value
+	            // We allow any other errors to be thrown.
+	            if ((error.errorID != 1006) &&
+	                (error.errorID != 1009) &&
+	                (error.errorID != 1010) &&
+	                (error.errorID != 1055) &&
+	                (error.errorID != 1069))
+	            {
+	                throw error;
+	            }
+	            else
+	            {
+	                if (BindingManager.debugDestinationStrings[destString])
+	                {
+	                    trace("Binding: destString = " + destString + ", error = " + error);
+	                }
+	            }
+			}
         }
 
         return null;
diff --git a/frameworks/projects/framework/src/mx/binding/Watcher.as b/frameworks/projects/framework/src/mx/binding/Watcher.as
index ac35300..fef6ee3 100644
--- a/frameworks/projects/framework/src/mx/binding/Watcher.as
+++ b/frameworks/projects/framework/src/mx/binding/Watcher.as
@@ -199,37 +199,35 @@
         {
             wrappedFunction.apply(this);
         }
-        catch(itemPendingError:ItemPendingError)
-        {
-            // The parent's value is not yet available.  This is being ignored for now -
-            // updateParent() will be called when the parent has a value.
-            value = null;
-        }
-        catch(rangeError:RangeError)
-        {
-            // The parent's value is not yet available.  This is being ignored for now -
-            // updateParent() will be called when the parent has a value.
-            value = null;
-        }
         catch(error:Error)
         {
-            // Certain errors are normal when executing an update, so we swallow them:
-            //   Error #1006: Call attempted on an object that is not a function.
-            //   Error #1009: null has no properties.
-            //   Error #1010: undefined has no properties.
-            //   Error #1055: - has no properties.
-            //   Error #1069: Property - not found on - and there is no default value
-            //   Error #1507: - invalid null argument.
-            // We allow any other errors to be thrown.
-            if ((error.errorID != 1006) &&
-                (error.errorID != 1009) &&
-                (error.errorID != 1010) &&
-                (error.errorID != 1055) &&
-                (error.errorID != 1069) &&
-                (error.errorID != 1507))
-            {
-                throw error;
-            }
+			if (error is ItemPendingError) {
+	            // The parent's value is not yet available.  This is being ignored for now -
+	            // updateParent() will be called when the parent has a value.
+	            value = null;
+			} else if (error is RangeError) {
+	            // The parent's value is not yet available.  This is being ignored for now -
+	            // updateParent() will be called when the parent has a value.
+	            value = null;
+			} else {
+	            // Certain errors are normal when executing an update, so we swallow them:
+	            //   Error #1006: Call attempted on an object that is not a function.
+	            //   Error #1009: null has no properties.
+	            //   Error #1010: undefined has no properties.
+	            //   Error #1055: - has no properties.
+	            //   Error #1069: Property - not found on - and there is no default value
+	            //   Error #1507: - invalid null argument.
+	            // We allow any other errors to be thrown.
+	            if ((error.errorID != 1006) &&
+	                (error.errorID != 1009) &&
+	                (error.errorID != 1010) &&
+	                (error.errorID != 1055) &&
+	                (error.errorID != 1069) &&
+	                (error.errorID != 1507))
+	            {
+	                throw error;
+	            }
+			}
         }
     }
 
diff --git a/frameworks/projects/framework/src/mx/core/RuntimeDPIProvider.as b/frameworks/projects/framework/src/mx/core/RuntimeDPIProvider.as
index 7ce8cc7..7d82fb8 100644
--- a/frameworks/projects/framework/src/mx/core/RuntimeDPIProvider.as
+++ b/frameworks/projects/framework/src/mx/core/RuntimeDPIProvider.as
@@ -118,31 +118,34 @@
      */
 
     public function get runtimeDPI():Number
-    {
-        var isIOS:Boolean = Platform.isIOS;
-        var screenDPI:Number = Capabilities.screenDPI;
-
-        if (isIOS) // as isIPad returns false in the simulator
+	{
+		if (Platform.isIOS) // as isIPad returns false in the simulator
 		{
-            var root:DisplayObject = SystemManager.getSWFRoot(this);
-            if (root != null )  {
-                var stage:Stage = root.stage;
-                if (stage != null){
-                    var scX:Number = stage.fullScreenWidth;
-                    var scY:Number = stage.fullScreenHeight;
-                    /*  as of Dec 2013,  iPad (resp. iPad retina) are the only iOS devices to have 1024 (resp. 2048) screen width or height
-                     cf http://en.wikipedia.org/wiki/List_of_displays_by_pixel_density#Apple
-                     * */
-                    if ((scX == IPAD_RETINA_MAX_EXTENT || scY == IPAD_RETINA_MAX_EXTENT))
-                        return DPIClassification.DPI_320;
-                    else if (scX == IPAD_MAX_EXTENT || scY == IPAD_MAX_EXTENT)
-                        return DPIClassification.DPI_160;
-                }
-            }
-        }
-		
-        return classifyDPI(screenDPI);
-    }
+			var scX:Number = Capabilities.screenResolutionX;
+			var scY:Number = Capabilities.screenResolutionY;
+					
+			// Use the stage width/height only when debugging, because Capabilities reports the computer resolution
+			if (Capabilities.isDebugger)
+			{
+				var root:DisplayObject = SystemManager.getSWFRoot(this);
+				if (root && root.stage)
+				{
+					scX = root.stage.fullScreenWidth;
+					scY = root.stage.fullScreenHeight;
+				}
+			}
+					
+			/*  as of Dec 2013,  iPad (resp. iPad retina) are the only iOS devices to have 1024 (resp. 2048) screen width or height
+			cf http://en.wikipedia.org/wiki/List_of_displays_by_pixel_density#Apple
+			* */
+			if (scX == IPAD_MAX_EXTENT || scY == IPAD_MAX_EXTENT)
+				return DPIClassification.DPI_160;
+			else if ((scX == IPAD_RETINA_MAX_EXTENT || scY == IPAD_RETINA_MAX_EXTENT))
+				return DPIClassification.DPI_320;
+		}
+				
+		return classifyDPI(Capabilities.screenDPI);
+	}
     
     /**
      *  @private
diff --git a/frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as b/frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as
index a6923a3..55a40d2 100644
--- a/frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as
+++ b/frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as
@@ -34,6 +34,7 @@
 import flash.geom.Point;
 import flash.geom.Rectangle;
 import flash.system.Capabilities;
+import flash.utils.Dictionary;
 
 import mx.automation.IAutomationObject;
 import mx.core.FlexGlobals;
@@ -176,6 +177,14 @@
      *  An array of information about currently active popups
      */
     mx_internal var popupInfo:Array = [];
+    
+    /**
+     *  @private
+     *  The first popup to use a blur per systemManager.
+     *  We need to track that in order to know when to remove the blur
+     *  if stacks of modal popups are created and then taken down. 
+     */
+    private var blurOwners:Dictionary = new Dictionary(true);
 
     //--------------------------------------------------------------------------
     //
@@ -956,6 +965,9 @@
             
             if (blurAmount)
             {
+                if (blurOwners[sm] == null)
+                    blurOwners[sm] = o.owner;
+                
                 // Ensure we blur the appropriate top level document.
                 if (DisplayObject(sm).parent is Stage)
                 {
@@ -1031,12 +1043,10 @@
             fade.play();
             
             var sm:ISystemManager = o.systemManager;
-            var awm:IActiveWindowManager = 
-                IActiveWindowManager(sm.getImplementation("mx.managers::IActiveWindowManager"));
-            // don't remove blur unless this is the last modal window
-            if (awm.numModalWindows == 1)
+            
+            // don't remove blur unless this is the first modal window to put up the blur
+            if (blurOwners[sm] != null && blurOwners[sm] == o.owner)
             {
-                
                 // Blur effect on the application
                 const blurAmount:Number = popUpStyleClient.getStyle("modalTransparencyBlur");
                 
@@ -1268,6 +1278,8 @@
     				awm.numModalWindows--;
                 }
 
+                if (blurOwners[sm] == o.owner)
+                    blurOwners[sm] = null;
                 popupInfo.splice(i, 1);
                 break;
             }
@@ -1326,7 +1338,6 @@
 			if (obj.parent)	// Mustella can already take you off stage
 				obj.parent.removeChild(obj);
 		}
-		
     }
     
     /**
diff --git a/frameworks/projects/framework/src/mx/managers/SystemManager.as b/frameworks/projects/framework/src/mx/managers/SystemManager.as
index 61d41ce..9eb9bea 100644
--- a/frameworks/projects/framework/src/mx/managers/SystemManager.as
+++ b/frameworks/projects/framework/src/mx/managers/SystemManager.as
@@ -1752,7 +1752,7 @@
     {
         // Adjust the partition indexes before the 
         // "added" event is dispatched.
-        noTopMostIndex++;
+        noTopMostIndex = noTopMostIndex + 1;
 
         var oldParent:DisplayObjectContainer = child.parent;
         if (oldParent)
@@ -1790,7 +1790,7 @@
     {
         // Adjust the partition indexes
         // before the "removed" event is dispatched.
-        noTopMostIndex--;
+        noTopMostIndex = noTopMostIndex - 1;
 
         return rawChildren_removeChild(child);
     }
@@ -1802,7 +1802,7 @@
     {
         // Adjust the partition indexes
         // before the "removed" event is dispatched.
-        noTopMostIndex--;
+        noTopMostIndex = noTopMostIndex - 1;
 
         return rawChildren_removeChildAt(applicationIndex + index);
     }
@@ -2658,7 +2658,7 @@
         mouseCatcher.name = "mouseCatcher";
         // Must use addChildAt because a creationComplete handler can create a
         // dialog and insert it at 0.
-        noTopMostIndex++;
+        noTopMostIndex = noTopMostIndex + 1;
         super.addChildAt(mouseCatcher, 0);  
         resizeMouseCatcher();
         if (!topLevel)
@@ -2668,7 +2668,7 @@
         }
 
         // Add the application as child 1.
-        noTopMostIndex++;
+        noTopMostIndex = noTopMostIndex + 1;
         super.addChildAt(DisplayObject(app), 1);
 
         CONFIG::performanceInstrumentation
diff --git a/frameworks/projects/framework/src/mx/utils/Platform.as b/frameworks/projects/framework/src/mx/utils/Platform.as
index 222425c..6a19b2e 100644
--- a/frameworks/projects/framework/src/mx/utils/Platform.as
+++ b/frameworks/projects/framework/src/mx/utils/Platform.as
@@ -282,7 +282,7 @@
 			_isDesktop = !_isMobile;
 			
 			_isAir = playerType == "Desktop";
-			_isBrowser = (playerType == "Plugin" || playerType == "ActiveX");
+			_isBrowser = (playerType == "PlugIn" || playerType == "ActiveX");
 			
 			_initialized = true;
 		}
diff --git a/frameworks/projects/mobiletheme/src/spark/skins/android4/supportClasses/CalloutArrow.as b/frameworks/projects/mobiletheme/src/spark/skins/android4/supportClasses/CalloutArrow.as
index c18d457..64f6e0c 100644
--- a/frameworks/projects/mobiletheme/src/spark/skins/android4/supportClasses/CalloutArrow.as
+++ b/frameworks/projects/mobiletheme/src/spark/skins/android4/supportClasses/CalloutArrow.as
@@ -57,7 +57,11 @@
         
         useBackgroundGradient = true;
         
-        var applicationDPI:Number = Application(FlexGlobals.topLevelApplication).applicationDPI;
+		var applicationDPI:Number = DPIClassification.DPI_160;
+		if (FlexGlobals.topLevelApplication is Application)
+		{
+			applicationDPI = Application(FlexGlobals.topLevelApplication).applicationDPI;
+		}
         
         // Copy DPI-specific values from CalloutSkin
         switch (applicationDPI)
diff --git a/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/CalloutArrow.as b/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/CalloutArrow.as
index 34f896b..605e01a 100644
--- a/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/CalloutArrow.as
+++ b/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/CalloutArrow.as
@@ -56,7 +56,11 @@
         
         useBackgroundGradient = true;
         
-        var applicationDPI:Number = Application(FlexGlobals.topLevelApplication).applicationDPI;
+		var applicationDPI:Number = DPIClassification.DPI_160;
+		if (FlexGlobals.topLevelApplication is Application)
+		{
+			applicationDPI = Application(FlexGlobals.topLevelApplication).applicationDPI;
+		}
         
         // Copy DPI-specific values from CalloutSkin
         switch (applicationDPI)
diff --git a/frameworks/projects/spark/src/spark/components/DataGroup.as b/frameworks/projects/spark/src/spark/components/DataGroup.as
index be4f51d..21040c8 100644
--- a/frameworks/projects/spark/src/spark/components/DataGroup.as
+++ b/frameworks/projects/spark/src/spark/components/DataGroup.as
@@ -1751,7 +1751,7 @@
                 virtualRendererIndices.splice(vrItemIndex, 1);
         }
         
-        // Remove the old renderer at index from indexToRenderer[], from the 
+        // Remove the old renderer at index (if any) from indexToRenderer[], from the
         // DataGroup, and clear its data property (if any).
         
         const oldRenderer:IVisualElement = indexToRenderer[index];
@@ -1759,15 +1759,18 @@
         if (indexToRenderer.length > index)
             indexToRenderer.splice(index, 1);
         
-        dispatchEvent(new RendererExistenceEvent(
-            RendererExistenceEvent.RENDERER_REMOVE, false, false, oldRenderer, index, item));
-        
-        if (oldRenderer is IDataRenderer && oldRenderer !== item)
-            IDataRenderer(oldRenderer).data = null;
-        
-        var child:DisplayObject = oldRenderer as DisplayObject;
-        if (child)
-            super.removeChild(child);
+        if (oldRenderer)
+        {
+            dispatchEvent(new RendererExistenceEvent(
+                RendererExistenceEvent.RENDERER_REMOVE, false, false, oldRenderer, index, item));
+            
+            if (oldRenderer is IDataRenderer && oldRenderer !== item)
+                IDataRenderer(oldRenderer).data = null;
+            
+            var child:DisplayObject = oldRenderer as DisplayObject;
+            if (child)
+                super.removeChild(child);
+        }
         
         invalidateSize();
         invalidateDisplayList();
diff --git a/frameworks/projects/spark/src/spark/components/Scroller.as b/frameworks/projects/spark/src/spark/components/Scroller.as
index fb18a56..3ca9155 100644
--- a/frameworks/projects/spark/src/spark/components/Scroller.as
+++ b/frameworks/projects/spark/src/spark/components/Scroller.as
@@ -519,13 +519,6 @@
     
     /**
      *  @private
-     *  Maximum number of times per second we will change the scroll position 
-     *  and update the display while dragging.
-     */
-    private static const MAX_DRAG_RATE:Number = 30;
-    
-    /**
-     *  @private
      *  The name of the viewport's horizontal scroll position property
      */
     private static const HORIZONTAL_SCROLL_POSITION:String = "horizontalScrollPosition";
@@ -1352,8 +1345,39 @@
         }
     }
     
-    
-    
+	//----------------------------------
+	//  maxDragRate
+	//----------------------------------
+	
+	private static var _maxDragRate:Number = 30;
+	
+	[Inspectable(category="General", defaultValue="30")]
+	
+	/**
+	 *
+	 *  Maximum number of times per second the scroll position
+	 *  and the display will be updated while dragging.
+	 *
+	 *  @default 30
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10
+	 *  @playerversion AIR 2.5
+	 *  @productversion Flex 4.5
+	 */
+	
+	public static function get maxDragRate():Number
+	{
+		return _maxDragRate;
+	}
+	
+	public static function set maxDragRate(value:Number):void
+	{
+		_maxDragRate = value;
+	}
+	
+	
+	
     //--------------------------------------------------------------------------
     // 
     // Methods
@@ -3328,7 +3352,7 @@
                         canScrollHorizontally,
                         canScrollVertically,
                         Math.round(minSlopInches * Capabilities.screenDPI), 
-                        dragEventThinning ? MAX_DRAG_RATE : NaN);
+                        dragEventThinning ? _maxDragRate : NaN);
                     event.stopImmediatePropagation();
                 }
                 else
@@ -3381,7 +3405,7 @@
             canScrollHorizontally,
             canScrollVertically,
             Math.round(minSlopInches * Capabilities.screenDPI), 
-            dragEventThinning ? MAX_DRAG_RATE : NaN);
+            dragEventThinning ? _maxDragRate : NaN);
     }
     	
     /**
diff --git a/frameworks/projects/spark/src/spark/components/gridClasses/DataGridEditor.as b/frameworks/projects/spark/src/spark/components/gridClasses/DataGridEditor.as
index ef8863b..234c67a 100644
--- a/frameworks/projects/spark/src/spark/components/gridClasses/DataGridEditor.as
+++ b/frameworks/projects/spark/src/spark/components/gridClasses/DataGridEditor.as
@@ -931,7 +931,7 @@
         
         dataGridEvent.columnIndex = editedItemPosition.columnIndex;
         dataGridEvent.column = itemEditorInstance.column;
-        dataGridEvent.rowIndex = editedItemPosition.rowIndex;
+        dataGridEvent.rowIndex = dataGrid.dataProvider ? dataGrid.dataProvider.getItemIndex(itemEditorInstance.data) : -1;
         dataGrid.dispatchEvent(dataGridEvent);
     }
     
@@ -960,6 +960,7 @@
         inEndEdit = true;
         
         var itemPosition:Object = editedItemPosition;
+        var editedItem:Object = itemEditorInstance.data;
         if (!saveItemEditorSession())
         {
             // The save was cancelled so check if the editor can be cancelled.
@@ -977,7 +978,7 @@
         // GRID_ITEM_EDITOR_SESSION_SAVE events are NOT cancelable
         dataGridEvent.columnIndex = itemPosition.columnIndex;
         dataGridEvent.column = dataGrid.columns.getItemAt(itemPosition.columnIndex) as GridColumn;
-        dataGridEvent.rowIndex = itemPosition.rowIndex;
+        dataGridEvent.rowIndex = dataGrid.dataProvider ? dataGrid.dataProvider.getItemIndex(editedItem) : -1;
         dataGrid.dispatchEvent(dataGridEvent);
 
         inEndEdit = false;
diff --git a/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as b/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as
index dfd88cc..f0f768c 100644
--- a/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as
+++ b/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as
@@ -2699,7 +2699,7 @@
         
         // We may have gone from empty to non-empty or vice-versa. This should
         // cause the prompt to show or hide.
-        if (prompt != null && prompt != "" && skin && 
+        if (prompt != null && prompt != "" && skin && skin.currentState &&
             (skin.currentState.indexOf("WithPrompt") != -1 && text.length != 0 ||
             skin.currentState.indexOf("WithPrompt") == -1 && text.length == 0))
             invalidateSkinState();
diff --git a/frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as b/frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as
index b526294..5b20ddc 100644
--- a/frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as
+++ b/frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as
@@ -960,8 +960,8 @@
         if (!g || (index < 0) || (index >= g.numElements) || !llv) 
             return null;
 
-		// We need a valid LLV for this function
-		updateLLV(g);
+        // We need a valid LLV for this function
+        updateLLV(g);
 		
         return llv.getBounds(index);
     }    
diff --git a/frameworks/projects/spark/src/spark/layouts/VerticalLayout.as b/frameworks/projects/spark/src/spark/layouts/VerticalLayout.as
index 5dd34e1..20f84ef 100644
--- a/frameworks/projects/spark/src/spark/layouts/VerticalLayout.as
+++ b/frameworks/projects/spark/src/spark/layouts/VerticalLayout.as
@@ -911,8 +911,8 @@
         if (!g || (index < 0) || (index >= g.numElements) || !llv) 
             return null;
 
-		// We need a valid LLV for this function
-		updateLLV(g);
+        // We need a valid LLV for this function
+        updateLLV(g);
 		
         return llv.getBounds(index);
     }
diff --git a/frameworks/projects/spark/src/spark/skins/spark/supportClasses/CalloutArrow.as b/frameworks/projects/spark/src/spark/skins/spark/supportClasses/CalloutArrow.as
index 9a22c67..a39ecad 100644
--- a/frameworks/projects/spark/src/spark/skins/spark/supportClasses/CalloutArrow.as
+++ b/frameworks/projects/spark/src/spark/skins/spark/supportClasses/CalloutArrow.as
@@ -58,7 +58,11 @@
 
         useBackgroundGradient = true;
 
-        var applicationDPI:Number = Application(FlexGlobals.topLevelApplication).applicationDPI;
+		var applicationDPI:Number = DPIClassification.DPI_160;
+		if (FlexGlobals.topLevelApplication is Application)
+		{
+			applicationDPI = Application(FlexGlobals.topLevelApplication).applicationDPI;
+		}
 
         // Copy DPI-specific values from CalloutSkin
         switch (applicationDPI)
diff --git a/frameworks/tests/unitTests/mx/collections/DataNode.as b/frameworks/tests/unitTests/mx/collections/DataNode.as
index db0d35f..aef1829 100644
--- a/frameworks/tests/unitTests/mx/collections/DataNode.as
+++ b/frameworks/tests/unitTests/mx/collections/DataNode.as
@@ -1,3 +1,22 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 mx.collections {
 import mx.collections.ArrayCollection;
 
diff --git a/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewCursor_Basics_Test.as b/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewCursor_Basics_Test.as
index 6e3e34a..065e20f 100644
--- a/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewCursor_Basics_Test.as
+++ b/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewCursor_Basics_Test.as
@@ -1,3 +1,22 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 mx.collections
 {
     import flash.events.UncaughtErrorEvent;
diff --git a/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewCursor_FLEX_34119_Test.as b/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewCursor_FLEX_34119_Test.as
index 8da8841..8666e99 100644
--- a/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewCursor_FLEX_34119_Test.as
+++ b/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewCursor_FLEX_34119_Test.as
@@ -1,3 +1,22 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 mx.collections
 {
 	import flash.events.UncaughtErrorEvent;
diff --git a/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewCursor_FLEX_34424_Test.as b/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewCursor_FLEX_34424_Test.as
index 8c2469c..914403c 100644
--- a/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewCursor_FLEX_34424_Test.as
+++ b/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewCursor_FLEX_34424_Test.as
@@ -1,3 +1,22 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 mx.collections
 {
 import flash.events.UncaughtErrorEvent;
diff --git a/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewCursor_FLEX_34440_Test.as b/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewCursor_FLEX_34440_Test.as
index 1b5e81d..174a186 100644
--- a/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewCursor_FLEX_34440_Test.as
+++ b/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewCursor_FLEX_34440_Test.as
@@ -1,3 +1,22 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 mx.collections
 {
 import flash.events.UncaughtErrorEvent;
diff --git a/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewCursor_FLEX_34456_Test.as b/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewCursor_FLEX_34456_Test.as
index 2127597..a866f47 100644
--- a/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewCursor_FLEX_34456_Test.as
+++ b/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewCursor_FLEX_34456_Test.as
@@ -1,3 +1,22 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 mx.collections
 {
 	import flash.events.UncaughtErrorEvent;
diff --git a/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewCursor_FLEX_34458_Test.as b/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewCursor_FLEX_34458_Test.as
index e875291..94befbb 100644
--- a/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewCursor_FLEX_34458_Test.as
+++ b/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewCursor_FLEX_34458_Test.as
@@ -1,3 +1,22 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 mx.collections
 {
 import flash.events.UncaughtErrorEvent;
diff --git a/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewTestUtils.as b/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewTestUtils.as
index 6eb443b..0e690eb 100644
--- a/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewTestUtils.as
+++ b/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewTestUtils.as
@@ -1,3 +1,22 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 mx.collections
 {
 	import com.adobe.utils.StringUtil;
diff --git a/frameworks/tests/unitTests/spark/components/gridClasses/DataGridEditor_FLEX_34543_Test.as b/frameworks/tests/unitTests/spark/components/gridClasses/DataGridEditor_FLEX_34543_Test.as
new file mode 100644
index 0000000..992473a
--- /dev/null
+++ b/frameworks/tests/unitTests/spark/components/gridClasses/DataGridEditor_FLEX_34543_Test.as
@@ -0,0 +1,104 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 spark.components.gridClasses {
+    import mx.collections.ArrayCollection;
+    import mx.collections.ArrayList;
+    import mx.core.ClassFactory;
+    import mx.core.mx_internal;
+    import mx.managers.FocusManager;
+
+    import org.flexunit.asserts.assertEquals;
+    import org.flexunit.asserts.assertNotNull;
+    import org.fluint.uiImpersonation.UIImpersonator;
+
+    import spark.components.DataGrid;
+    import spark.events.GridItemEditorEvent;
+
+    public class DataGridEditor_FLEX_34543_Test
+    {
+        private var _dp:ArrayCollection;
+        private var _dg:DataGrid;
+        private var _sut:DataGridEditor;
+        private var _saveEvent:GridItemEditorEvent;
+
+        [Before]
+        public function setUp():void
+        {
+            _dp = new ArrayCollection([new FLEX_34543_DataNode("First"), new FLEX_34543_DataNode("Second")]);
+
+            _dg = new DataGrid();
+            _dg.editable = true;
+            _dg.dataProvider = _dp;
+
+            var nameColumn:GridColumn = new GridColumn();
+            nameColumn.dataField = "name";
+            nameColumn.itemEditor = new ClassFactory(DefaultGridItemEditor);
+            nameColumn.editable = true;
+            _dg.columns = new ArrayList([nameColumn]);
+
+            UIImpersonator.addChild(_dg);
+            _dg.focusManager = new FocusManager(_dg, false);
+
+            _sut = _dg.mx_internal::editor;
+        }
+
+        [After]
+        public function tearDown():void
+        {
+            _dg.removeEventListener(GridItemEditorEvent.GRID_ITEM_EDITOR_SESSION_SAVE, onGridEditorSave);
+            UIImpersonator.removeAllChildren();
+            _dg = null;
+            _dp = null;
+            _saveEvent = null;
+            _sut = null;
+        }
+
+        [Test]
+        public function testEndItemEditorSessionEventContainsCorrectIndex():void
+        {
+            //given
+            _dg.addEventListener(GridItemEditorEvent.GRID_ITEM_EDITOR_SESSION_SAVE, onGridEditorSave);
+            _dg.startItemEditorSession(1,0);
+
+            //when
+            _dp.removeItemAt(0);
+            _dg.endItemEditorSession();
+
+            //then
+            assertNotNull(_saveEvent);
+            assertEquals(0, _saveEvent.rowIndex);
+        }
+
+        private function onGridEditorSave(event:GridItemEditorEvent):void
+        {
+            _saveEvent = event;
+        }
+    }
+}
+
+class FLEX_34543_DataNode
+{
+    public var name:String;
+
+    public function FLEX_34543_DataNode(name:String)
+    {
+        this.name = name;
+    }
+}
\ No newline at end of file
diff --git a/modules/antTasks/src/flex/ant/types/FlexSwcFileSet.java b/modules/antTasks/src/flex/ant/types/FlexSwcFileSet.java
index 208cec9..7dce29d 100644
--- a/modules/antTasks/src/flex/ant/types/FlexSwcFileSet.java
+++ b/modules/antTasks/src/flex/ant/types/FlexSwcFileSet.java
@@ -33,7 +33,7 @@
 		super(spec, dirs);
 	}
 
-	// Only accept directories, and *.swc files
+	// Only accept directories, *.swc and *.ane files
     protected void addFiles(File base, String[] files, Commandline cmdl)
     {
         FileUtils utils = FileUtils.getFileUtils();
@@ -43,7 +43,7 @@
             File f = utils.resolveFile(base, files[i]);
             String absolutePath = f.getAbsolutePath();
 
-            if( f.isFile() && !absolutePath.endsWith(".swc") )
+            if( f.isFile() && !absolutePath.endsWith(".swc") && !absolutePath.endsWith(".ane") )
             	continue;
 
             if (spec != null)
diff --git a/mustella/tests/components/Alert/Properties/Alert_Properties_Spark.mxml b/mustella/tests/components/Alert/Properties/Alert_Properties_Spark.mxml
index ba782b6..696f5c4 100644
--- a/mustella/tests/components/Alert/Properties/Alert_Properties_Spark.mxml
+++ b/mustella/tests/components/Alert/Properties/Alert_Properties_Spark.mxml
@@ -74,7 +74,7 @@
 			</setup>
 			<body>
                 <WaitForLayoutManager />
-				<CompareBitmap url="../Properties/baselines/$testID.png" target="curAlert"/>
+				<CompareBitmap url="../Properties/baselines/$testID.png" target="curAlert" numColorVariances="4" maxColorVariance="4" />
 				<DispatchKeyEvent key="SPACE" />
 			</body>
 		</TestCase>