 
     override class func _swizzle_layoutSubviews() {
         let originalSelector = #selector(layoutSubviews)
-        let swizzledSelector = #selector(_swizzle_imp_for_layoutSubviews)
+        let swizzledSelector = #selector(_swizzled_layoutSubviews)
         let originalMethod = class_getInstanceMethod(self, originalSelector)
         let swizzledMethod = class_getInstanceMethod(self, swizzledSelector)
         method_exchangeImplementations(originalMethod, swizzledMethod)
     }
 
-    override func _swizzle_imp_for_layoutSubviews() {
-        _swizzle_imp_for_layoutSubviews()
+    override func _swizzled_layoutSubviews() {
+        _swizzled_layoutSubviews()
         ConstraintManager.layout(self)
     }
 }


extension UIButton {

    struct uibutton_once {
        static var token: dispatch_once_t = 0
    }

    override public class func initialize() {
        dispatch_once(&uibutton_once.token) {
            _swizzle_layoutSubviews()
        }
    }

    // Note the use of static var in a private nested struct—this pattern creates the static associated object key we need but doesn’t muck up the global namespace.
    // From http://nshipster.com/swift-objc-runtime/

    struct _fy_associatedKeys {
        static var ao: Any?
    }

    class AssociateObject {
