 		
 		public function dispose():void
 		{
-			editMode.value = false; // cleans up event listeners and cursor
+			editMode = false; // public setter cleans up event listeners and cursor
 		}
 		
 		public const coords:LinkableString = newLinkableChild( this, LinkableString, handleCoordsChange ); //This is used for sessiong all of the coordinates.
 		public const lineWidth:LinkableNumber = newLinkableChild( this, LinkableNumber, invalidateDisplayList ); //Allows user to change the size of the line.
 		public const lineColor:LinkableNumber = newLinkableChild( this, LinkableNumber, invalidateDisplayList ); //Allows the user to change the color of the line.
-		public const editMode:LinkableBoolean = newLinkableChild( this, LinkableBoolean, handleEditModeChange ); // true when editing
-		
+		
+		private var _editMode:Boolean = false; // true when editing
 		private var _drawing:Boolean = false;
 		private var _coordsArrays:Array = []; // parsed from coords LinkableString
 		
-		public function handleEditModeChange():void
-		{
-			if (editMode.value)
+		public function get editMode():Boolean
+		{
+			return _editMode;
+		}
+		public function set editMode(value:Boolean):void
+		{
+			if (_editMode == value)
+				return;
+			_editMode = value;
+			if (value)
 			{
 				// enable pen
 				CustomCursorManager.showCursor(CustomCursorManager.PEN_CURSOR, CursorManagerPriority.HIGH, -3, -22);

			
			graphics.clear();
			
			if (editMode.value)
			{
				// draw invisible transparent rectangle to capture mouse events
				graphics.lineStyle(0, 0, 0);

			else
			{
				// disable pen
				penTool.editMode = false;
				
				_penToolMenuItem.caption = ENABLE_PEN;
			}
