         }
     }
     
-    init(constraint: Constraint) {
-        self.constraint = constraint
-        super.init(frame: CGRectZero)
-        multiInputOutputConstraintViewInitialize()
-    }
-    
-    override init(coder aDecoder: NSCoder) {
-        self.constraint = Constraint()
-        super.init(coder: aDecoder)
-        multiInputOutputConstraintViewInitialize()
-    }
-    
     let redLayer: CALayer = CALayer()
     let blueLayer: CALayer = CALayer()
     let purpleLayer: CALayer = CALayer()
-    private func multiInputOutputConstraintViewInitialize() {
+    init(constraint: MultiInputOutputConstraint) {
+        self.constraint = constraint
+        super.init(frame: CGRectZero)
         self.layer.cornerRadius = 5
         addSentinelConnectorToPort(self.redInput)
         addSentinelConnectorToPort(self.blueInput)

            self.layer.addSublayer(layer)
        }
    }
}

// This is a hack because subclasses of MultiInputOutputConstraintView must also be generic, but can use a throwaway generic apparently
typealias MultiplierView = MultiplierViewGeneric<AnyObject>
class MultiplierViewGeneric<T>: MultiInputOutputConstraintView<Multiplier> {
    init(multiplier: Multiplier) {
        super.init(constraint: multiplier)
    }
    

    }
}

class MultiInputOutputConstraintView: ConstraintView {
    let constraint: MultiInputOutputConstraint
    
    let redInput = InternalConnectorPort(color: UIColor.redColor(), isOutput: false)
    let blueInput = InternalConnectorPort(color: UIColor.blueColor(), isOutput: false)
