diff --git a/textLayout/src/flashx/textLayout/edit/EditManager.as b/textLayout/src/flashx/textLayout/edit/EditManager.as
index 645e79e..2b46e72 100644
--- a/textLayout/src/flashx/textLayout/edit/EditManager.as
+++ b/textLayout/src/flashx/textLayout/edit/EditManager.as
@@ -138,6 +138,7 @@
 	 */			
 	public class EditManager extends SelectionManager implements IEditManager
 	{
+		static tlf_internal var handleShiftAsSoftReturn:Boolean = true;
 		 /**
 		 *  To minimize expensive recompositions during fast typing, inserts
 		 *  don't necessarily take place immediately. An insert operation that
@@ -306,8 +307,14 @@
 							/* pre-Argo and on the mac then ignoreNextTextEvent */ 
 							if (!Configuration.versionIsAtLeast(10,1) && (Capabilities.os.search("Mac OS") > -1)) 
 								ignoreNextTextEvent = true;
-							undo();
-							event.preventDefault();
+							if(event.shiftKey){
+								redo();
+								event.preventDefault();
+
+							} else {
+								undo();
+								event.preventDefault();
+							}
 							break;
 						case 121:	// small y
 							ignoreNextTextEvent = true;
@@ -383,7 +390,7 @@
 						if (listItem && firstLeaf.getParentByType(ListElement) != listItem.getParentByType(ListElement))
 							listItem = null;
 						
-						// inside a list shift-enter splits a paragraph and shift splits the listitem
+						// inside a list shift-enter splits a paragraph and enter splits the listitem
 						if (listItem && !event.shiftKey)
 						{
 							// if on last item of list and it's empty, remove it and put cursor on a new para immediatly following the list (new para should be wrapped in a new list item if parent of list is another list).
@@ -403,6 +410,13 @@
 								refreshSelection();
 							}
 						}
+						else if(event.shiftKey &&
+							((!listItem && textFlow.configuration.shiftEnterLevel > 0) ||
+							textFlow.configuration.shiftEnterLevel > 1)
+						)
+						{
+							overwriteMode ? overwriteText("\u2028") : insertText("\u2028");
+						}
 						else
 							splitParagraph();
 						event.preventDefault();
diff --git a/textLayout/src/flashx/textLayout/elements/Configuration.as b/textLayout/src/flashx/textLayout/elements/Configuration.as
index 64af033..c9c3cf4 100644
--- a/textLayout/src/flashx/textLayout/elements/Configuration.as
+++ b/textLayout/src/flashx/textLayout/elements/Configuration.as
@@ -71,10 +71,18 @@
 		static tlf_internal const playerEnablesSpicyFeatures:Boolean = versionIsAtLeast(10,2) && (new Sprite).hasOwnProperty("needsSoftKeyboard"); 
 		static tlf_internal const hasTouchScreen:Boolean = playerEnablesArgoFeatures && Capabilities["touchScreenType"] != "none";
 		
+		static public const SHIFT_RETURN_AS_HARD:int = 0;
+		static public const SHIFT_RETURN_AS_HARD_IN_LIST:int = 1;
+		static public const SHIFT_RETURN_AS_SOFT:int = 2;
+		
+		static tlf_internal var defaultShiftEnterLevel:int = SHIFT_RETURN_AS_SOFT;
+		
 		/** If manageTabKey and manageEnterKey are false, the client must handle those keys on their own. */
 		private var _manageTabKey:Boolean;
 		private var _manageEnterKey:Boolean;
 		
+		private var _shiftEnterLevel:int = defaultShiftEnterLevel;
+		
 		private var _overflowPolicy:String;
 		
 		private var _enableAccessibility:Boolean;
@@ -250,7 +258,18 @@
 		public function set manageEnterKey(value:Boolean):void
 		{ _manageEnterKey = value; _immutableClone = null; }
 		
-
+		/** 
+		 * @copy IConfiguration#shiftEnterLevel
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0
+		 */
+		
+		public function get shiftEnterLevel():int
+		{ return _shiftEnterLevel; }
+		public function set shiftEnterLevel(value:int):void
+		{ _shiftEnterLevel = value; }
 		
 		/** 
 		* @copy IConfiguration#overflowPolicy
diff --git a/textLayout/src/flashx/textLayout/elements/IConfiguration.as b/textLayout/src/flashx/textLayout/elements/IConfiguration.as
index 721e6ce..6a06016 100644
--- a/textLayout/src/flashx/textLayout/elements/IConfiguration.as
+++ b/textLayout/src/flashx/textLayout/elements/IConfiguration.as
@@ -66,6 +66,20 @@
 		function get manageEnterKey():Boolean
 		
 		/** 
+		 * Determines how shift-enter is treated. Shift-enter can be treated as a soft return or hard return.
+		 * There are three possible levels. Level 0 means all shift-returns will be hard returns.
+		 * Level 1 means shift-returns inside lists will be treated as hard returns. Otherwise they will be treated as hard returns.
+		 * Level 2 means all shift-returns will be treated as soft returns.
+		 *
+		 * <p>Default value is <code>2</code>.</p>
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0
+		 */
+		
+		function get shiftEnterLevel():int;
+		/** 
 		* Policy used for deciding whether the last line of a container fits in the container, or whether it overflows.
 		* Use the constants of the OverflowPolicy class to set this property.
 		*
diff --git a/textLayout/src/flashx/textLayout/elements/ParagraphElement.as b/textLayout/src/flashx/textLayout/elements/ParagraphElement.as
index 13590a5..f8fea72 100644
--- a/textLayout/src/flashx/textLayout/elements/ParagraphElement.as
+++ b/textLayout/src/flashx/textLayout/elements/ParagraphElement.as
@@ -482,7 +482,7 @@
 			{
 				var textBlock:TextBlock = getTextBlock();
 				var tl:TextLine = textBlock.getTextLineAtCharIndex(relativePosition);
-				var currentAtomIndex = tl.getAtomIndexAtCharIndex(relativePosition);
+				var currentAtomIndex:int = tl.getAtomIndexAtCharIndex(relativePosition);
 				if (currentAtomIndex == 0)
 				{
 					tl = tl.previousLine;
@@ -524,7 +524,7 @@
 			{
 				var textBlock:TextBlock = getTextBlock();
 				var tl:TextLine = textBlock.getTextLineAtCharIndex(relativePosition);
-				var currentAtomIndex = tl.getAtomIndexAtCharIndex(relativePosition);
+				var currentAtomIndex:int = tl.getAtomIndexAtCharIndex(relativePosition);
 				if (currentAtomIndex == tl.atomCount - 1)
 				{
 					tl = tl.nextLine;
