         views: ConstraintViews,
         value: CGFloat
     ) -> NSLayoutConstraint {
-        return ConstraintFactory.make(
+        return MarginConstraintFactory.make(
+            attributes: ConstraintAttributes(target: .leading, related: attribute),
             views: views,
-            attributes: ConstraintAttributes(target: .leading, related: attribute),
-            additionalInformation: ConstraintAdditionalInformations(
-                relation: .equal,
-                multiplier: 1.0,
-                constant: value
-            )
+            value: value
         )
     }
 
     static func trailing(views: ConstraintViews, value: CGFloat) -> NSLayoutConstraint {
-        return ConstraintFactory.make(
+        return MarginConstraintFactory.make(
+            attributes: ConstraintAttributes(target: .trailing, related: .trailing),
             views: views,
-            attributes: ConstraintAttributes(target: .trailing, related: .trailing),
-            additionalInformation: ConstraintAdditionalInformations(
-                relation: .equal,
-                multiplier: 1.0,
-                constant: value
-            )
+            value: value
         )
     }
 

        views: ConstraintViews,
        value: CGFloat
    ) -> NSLayoutConstraint {
        return ConstraintFactory.make(
            views: views,
            attributes: ConstraintAttributes(target: .trailing, related: attribute),
            additionalInformation: ConstraintAdditionalInformations(
                relation: .equal,
                multiplier: 1.0,
                constant: value
            )
        )
    }

    static func top(views: ConstraintViews, value: CGFloat) -> NSLayoutConstraint {
        return ConstraintFactory.make(
            views: views,
            attributes: ConstraintAttributes(target: .top, related: .top),
            additionalInformation: ConstraintAdditionalInformations(
                relation: .equal,
                multiplier: 1.0,
                constant: value
            )
        )
    }

    static func bottom(views: ConstraintViews, value: CGFloat) -> NSLayoutConstraint {
        return ConstraintFactory.make(
            views: views,
            attributes: ConstraintAttributes(target: .bottom, related: .bottom),
            additionalInformation: ConstraintAdditionalInformations(
                relation: .equal,
                multiplier: 1.0,


class MarginConstraintFactory {
    static func leading(views: ConstraintViews, value: CGFloat) -> NSLayoutConstraint {
        return MarginConstraintFactory.make(
            attributes: ConstraintAttributes(target: .leading, related: .leading),
            views: views,
            value: value
        )
    }

