     // I don't know if this is the best solution, but it seems to work out well in this example
     dispatch_once(&checkHeightOnce) { () -> Void in
       self.minButtonWidth = self.frame.size.height
+      self.minButtonHeight = self.minButtonWidth
       print("minBtnWid: \(self.minButtonWidth)")
     }
   }

  
  // MARK: - Lazy Instances
  // ------------------------------------------------------------
  // Note: I like using UIControls over UIView's (or other subclasses, UIButton etc.) for custom behaviors because it gives a
  // little more flexibility for target/actions and doesn't come with any pre-defined action behaviour
  internal lazy var buttonView: UIControl = {
    let control: UIControl = UIControl()
    control.backgroundColor = UIColor.whiteColor()

  // ------------------------------------------------------------
  private var adjustedWidthConstraints: (left: Constraint?, right: Constraint?)
  private var minButtonWidth: CGFloat?
  private var minButtonHeight: CGFloat?
  private var checkHeightOnce: dispatch_once_t = 0
  
  private var currentButtonState: FollowButtonState = .NotFollowing {
