      *  @private
      */    
     private var addedToPopUpManager:Boolean = false;
+    
+    /**
+     *  @private
+     *  Soft keyboard effect.
+     */
+    private var effect:IEffect;
+    
+    /**
+     *  @private
+     *  Track keyboard height to avoid unnecessary transitions.
+     */
+    private var cachedKeyboardHeight:Number;
+    
+    /**
+     *  @private
+     *  Original pop-up y-position.
+     */
+    private var cachedYPosition:Number;
+    
+    /**
+     *  @private
+     *  Original pop-up height.
+     */
+    private var cachedHeight:Number;
 
     //--------------------------------------------------------------------------
     //
     //  Properties
     //
     //--------------------------------------------------------------------------
-    
-    /**
-     *  @private
-     */
-    private var _popUpTransition:SoftKeyboardPopUpTransition;
-    
-    /**
-     *  Read-only access to the SoftKeyboardPopUpTransition.
-     * 
-     *  @default A SoftKeyboardPopUpTransition instance when
-     *           Application.softKeyboardBehavior="none", otherwise null.
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 11
-     *  @playerversion AIR 3
-     *  @productversion Flex 4.5.2
-     */
-    protected function get popUpTransition():SoftKeyboardPopUpTransition
-    {
-        return _popUpTransition;
-    }
     
     //----------------------------------
     //  isOpen

    private var _moveForSoftKeyboard:Boolean = true;
    
    /**
     *  @copy spark.transitions.SoftKeyboardPopUpTransition#moveForSoftKeyboard
     */
    public function get moveForSoftKeyboard():Boolean
    {
        if (!popUpTransition)
            return false;
        
        return popUpTransition.moveForSoftKeyboard;
    }
    
    /**

    private var _resizeForSoftKeyboard:Boolean = true;
    
    /**
     *  Enables resizing the pop-up when the soft keyboard is active. 
     *  
     *  @default true
     *  
     *  @langversion 3.0
     *  @playerversion AIR 3
     *  @productversion Flex 4.5.2
     */
    public function get resizeForSoftKeyboard():Boolean
    {
        return _resizeForSoftKeyboard;
    }
    
    /**
