     imageView.alpha = 0.0
     return imageView
   }()
+  
+  private lazy var notFollowingOptionsConfig: FollowButtonOptions = {
+    let options = FollowButtonOptions(labelText: "F O L L O W",
+      textColor: ConceptColors.DarkText,
+      backgroundColor: ConceptColors.OffWhite,
+      showSpinner: false, showLabel: true)
+    return options
+  }()
+  
+  private lazy var followingOptionsConfig: FollowButtonOptions = {
+    let options = FollowButtonOptions(labelText: "F O L L O W I N G",
+      textColor: ConceptColors.OffWhite,
+      backgroundColor: ConceptColors.MediumBlue,
+      showSpinner: false, showLabel: true)
+    return options
+  }()
+  
+  private lazy var loadingOptionsConfig: FollowButtonOptions = {
+    let options = FollowButtonOptions(labelText: "",
+      textColor: ConceptColors.DarkText,
+      backgroundColor: UIColor.whiteColor(),
+      showSpinner: true, showLabel: false)
+    return options
+  }()
 }

  }
  
  private func stopAnimatingSpinner() {
    self.spinnerImageView.layer.removeAllAnimations()
  }
  

import UIKit
import SnapKit

internal class FollowButton: UIView {
  
  internal struct FollowButtonOptions {
    internal let labelText: String
    internal let textColor: UIColor
    internal let backgroundColor: UIColor
    internal let showSpinner: Bool
    internal let showLabel: Bool
  }

  private enum FollowButtonState {
    case NotFollowing
