             "borderColor": toString(self.borderColor.hashValue),
             "borderWidth": toString(self.borderWidth.hashValue),
             "borderAlignment": toString(self.borderAlignment.hashValue),
-            "cornerRadius": toString(self.cornerRadius.hashValue),
+            "cornerRadiusTopLeft": toString(self.cornerRadiusTopLeft.hashValue),
+            "cornerRadiusTopRight": toString(self.cornerRadiusTopRight.hashValue),
+            "cornerRadiusBottomLeft": toString(self.cornerRadiusBottomLeft.hashValue),
+            "cornerRadiusBottomRight": toString(self.cornerRadiusBottomRight.hashValue),
         ]
 
         switch self.size {

            self.borderAlignment = .Inside

            let imageSize: CGFloat
            let capSize: CGFloat

            if self.cornerRadius > 0 {
                imageSize = self.cornerRadius * 2
                capSize = self.cornerRadius
            } else {
                imageSize = self.borderWidth * 2 + 1
                capSize = self.borderWidth
            }

            let image = self.imageWithSize(CGSize(width: imageSize, height: imageSize))
            let capInsets = UIEdgeInsets(top: capSize, left: capSize, bottom: capSize, right: capSize)
            return image.resizableImageWithCapInsets(capInsets)
        }
    }

    }

    public func corner(#radius: CGFloat) -> Self {
        self.corner(topLeft: radius, topRight: radius, bottomLeft: radius, bottomRight: radius)
        return self
    }

    public func corner(#topLeft: CGFloat) -> Self {
        self.cornerRadiusTopLeft = topLeft
        return self
    }

    public func corner(#topRight: CGFloat) -> Self {
        self.cornerRadiusTopRight = topRight
        return self
    }

    public func corner(#bottomLeft: CGFloat) -> Self {
        self.cornerRadiusBottomLeft = bottomLeft
        return self
    }

    public func corner(#bottomRight: CGFloat) -> Self {
        self.cornerRadiusBottomRight = bottomRight
        return self
    }

    public func corner(#topLeft: CGFloat, topRight: CGFloat, bottomLeft: CGFloat, bottomRight: CGFloat) -> Self {
        self.corner(topLeft: topLeft)
        self.corner(topRight: topRight)
        self.corner(bottomLeft: bottomLeft)
        self.corner(bottomRight: bottomRight)
        return self
    }

