         return shape
     }()
 
-    private lazy var innerDotShapeLayer: CAShapeLayer = {
+    private lazy var topInnerDotShapeLayer: CAShapeLayer = {
         let shape = CAShapeLayer()
         shape.fillColor = UIColor.wmf_blue.cgColor
         shape.strokeColor = UIColor.wmf_blue.cgColor

        return shape
    }()

    private lazy var outerDotShapeLayer: CAShapeLayer = {
        let shape = CAShapeLayer()
        shape.fillColor = UIColor.white.cgColor
        shape.strokeColor = UIColor.wmf_blue.cgColor

        updateTopDotsRadii(to: radiusNormal, at: CGPoint(x: frame.midX, y: topDotsY))
        
        // Progressively fade the inner dot when it gets tiny.
        topInnerDotShapeLayer.opacity = easeInOutQuart(number: Float(radiusNormal))
        
        lastDotRadiusNormal = radiusNormal
    }
    
    private func updateTopDotsRadii(to radiusNormal: CGFloat, at center: CGPoint){
        topOuterDotShapeLayer.updateDotRadius(dotRadius * max(radiusNormal, dotMinRadiusNormal), center: center)
        topInnerDotShapeLayer.updateDotRadius(dotRadius * max((radiusNormal - dotMinRadiusNormal), 0.0), center: center)
    }
    
    private func easeInOutQuart(number:Float) -> Float {
