 
 
 public protocol BorderDrawable: class {
-	var borderWidth: CGFloat? { get set }
-	var borderColor: UIColor? { get set }
+	var borderWidth: CGFloat { get set }
+	var borderColor: UIColor { get set }
 }
 
-extension BorderDrawable {
+extension BorderDrawable where Self: UIView {
 	
-	fileprivate func updateBorder(of view: UIView) {
-		if let width = borderWidth, let color = borderColor ?? view.tintColor {
-			view.border(width: width, color: color)
+	public var borderWidth: CGFloat {
+		get {
+			return self.layer.borderWidth
 		}
+		set {
+			self.layer.borderWidth = newValue
+			self.setNeedsLayout()
+		}
+	}
+	
+	public var borderColor: UIColor {
+		get {
+			if let cgColor = self.layer.borderColor {
+				return UIColor(cgColor: cgColor)
+			}
+			else {
+				return self.tintColor
+			}
+		}
+		set {
+			self.layer.borderColor = newValue.cgColor
+			self.setNeedsLayout()
+		}
+	}
+	
+	fileprivate func updateBorder() {
+		self.border(width: borderWidth, color: borderColor)
 	}
 }
 

	return points * UIScreen.main.scale
}

public func points(pixels: CGFloat) -> CGFloat {
	return pixels / UIScreen.main.scale
}





public extension UIView {
	
	func add(view: UIView, instructions: (LAC)->()) {
		self.add(view: view)
		view.lac.make(instructions)
	}
}

public extension UIStackView {
	
	func add(arrangedView: UIView, instructions: (LAC)->()) {
		self.add(arrangedView: arrangedView)
		arrangedView.lac.make(instructions)
	}
}



		super.layoutSubviews()
		
		self.roundCorners()
		self.updateBorder()
	}
}

