         self.buttonView.backgroundColor = ConceptColors.OffWhite
         self.buttonLabel.textColor = ConceptColors.DarkText
         self.currentButtonState = .NotFollowing
+        self.buttonLabel.alpha = 1.0
         self.spinnerImageView.alpha = 0.0
         
       case .Following:

        self.buttonView.backgroundColor = ConceptColors.MediumBlue
        self.buttonLabel.textColor = ConceptColors.OffWhite
        self.currentButtonState = .Following
        self.spinnerImageView.alpha = 0.0
        expandButton()
        
      case .Loading:
        // Why not set the text to an empty string? Its because our height
        // constraints are being held by the labels intrinsic content size
        // In fact, this (the entire animation) works because of the label's size
        // Without it, I would have to adjust way more constraints
        self.buttonView.backgroundColor = UIColor.whiteColor()
        self.currentButtonState = .Loading
        self.spinnerImageView.alpha = 1.0
        shrinkButton()
    }
  }
  
  
  // MARK: Other Helpers
  
  
  // MARK: - Animations
  // ------------------------------------------------------------
  internal func shrinkButton() {
    
    guard self.minButtonWidth != nil && self.minButtonWidth > 0.0 else { return }
    self.userInteractionEnabled = false

    self.setNeedsUpdateConstraints()
    
    UIView.animateWithDuration(0.45, animations: { () -> Void in
      self.layoutIfNeeded()
      }, completion: completetion)
  }
  
  internal func expandButton(completetion: ((complete: Bool)->Void)? = nil) {
    self.userInteractionEnabled = false
    
    self.adjustedWidthConstraints.left?.activate()
