   optional func hoveredOverDate(date:NSDate, index:Int, control:JCMTimeSliderControl)
 }
 
+/**
+*  We use this shell class to let UIKit Dynamics to do the heavy lifting of the animation
+*  for our selected tick
+*/
+class DynamicTick : NSObject, UIDynamicItem {
+  var tick: CAShapeLayer
+  var labels: [CATextLayer]
+  var center: CGPoint {
+    get {
+      return CGPoint(x: tick.frame.midX, y: tick.frame.midY)
+    }
+    set {
+      let w = tick.frame.width
+      let h = tick.frame.height
+      let xx = newValue.x - w/2.0
+      let yy = newValue.y - h/2.0
+      let newFrame = CGRect(x: xx, y: yy, width: w, height: h)
+      tick.frame = newFrame
+    }
+  }
+  var bounds: CGRect {
+    get {
+      return tick.bounds
+    }
+  }
+  var transform: CGAffineTransform
+  
+  init(tick: CAShapeLayer, labels: [CATextLayer]) {
+    self.tick = tick
+    self.labels = labels
+    self.transform = CGAffineTransformIdentity
+    super.init()
+  }
+}
+
 class JCMTimeSliderControl: UIControl, UIDynamicAnimatorDelegate, JCMTimeSliderControlDataSource {
 
   required init(coder aDecoder: NSCoder) {
     // Initialize our added elements
     expanded = false
+    expansionChangeNeeded = false
     super.init(coder: aDecoder)
     clipsToBounds = true
     snapAnimUIDynamicAnimator = UIDynamicAnimator(referenceView: self)

    labelsLayer!.masksToBounds = false
    labelsLayer!.position = CGPointZero
    
    let a : Int = BreakPoint.Earliest.toRaw()
    let b = BreakPoint.Latest.toRaw()
    let font = UIFont.systemFontOfSize(UIFont.smallSystemFontSize())
    let height = font.ascender - font.descender
    for var i:Int = a; i <= b; ++i {
      let aLabel = CATextLayer()
      aLabel.anchorPoint = CGPointZero
      labelsLayer!.addSublayer(aLabel)

  
  override func endTrackingWithTouch(touch: UITouch, withEvent event: UIEvent) {
    super.endTrackingWithTouch(touch, withEvent: event)
    
    if !datesToShow {
      return
    }

    // Prepare the snapping animation to the selected date
    let point = touch.locationInView(self)

