         twoLineHelper.layoutSubviews()
 
         imageView!.center = borderView.center
+
+        if let frame:CGRect = self.textLabel?.frame {
+            self.labelCellWidthDefault = frame.width
+        }
     }
 
     override func prepareForReuse() {
         super.prepareForReuse()
         separatorInset = UIEdgeInsetsMake(0, TwoLineCellUX.BorderFrameSize + 2 * TwoLineCellUX.BorderViewMargin, 0, 0)
+        if let frame:CGRect = self.textLabel?.frame {
+            labelCellWidthDefault = frame.width
+        }
+    }
+    
+    override func didTransitionToState(state: UITableViewCellStateMask) {
+        super.didTransitionToState(state)
+        if let frame:CGRect = self.textLabel?.frame {
+            if state.contains(.ShowingEditControlMask) && self.editing {
+                UIView.animateWithDuration(0.1) {
+                    self.textLabel?.frame = CGRect(x: frame.origin.x, y: frame.origin.y, width: self.labelCellWidthEditMode, height: frame.size.height)
+                }
+
+            }
+            else if state == .DefaultMask {
+                UIView.animateWithDuration(0.1) {
+                    self.textLabel?.frame = CGRect(x: frame.origin.x, y: frame.origin.y, width: self.labelCellWidthDefault, height: frame.size.height)
+                }
+                
+            }
+            else if state == .ShowingDeleteConfirmationMask {
+                
+            }
+        }
     }
 
     required init?(coder aDecoder: NSCoder) {


class HistoryTableViewCell: TwoLineTableViewCell {
    let borderView = UIView()

    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: UITableViewCellStyle.Subtitle, reuseIdentifier: reuseIdentifier)

        twoLineHelper.hasBorderView = true

        twoLineHelper.setUpViews(self, textLabel: textLabel!, detailTextLabel: detailTextLabel!, imageView: imageView!)
        self.labelCellWidthDefault = textLabel!.frame.width

    }

    override func layoutSubviews() {
