             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> {
+    
+    override init(coder aDecoder: NSCoder) {
+        fatalError("Initializer not supported")
+    }
+}
+
+class MultiplierView: MultiInputOutputConstraintView {
+    let multiplier: Multiplier
     init(multiplier: Multiplier) {
+        self.multiplier = multiplier
         super.init(constraint: multiplier)
     }
     

    }
}

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

    }
}

class AdderView: MultiInputOutputConstraintView {
    let adder: Adder
    init(adder: Adder) {
        self.adder = adder
        super.init(constraint: adder)
    }
    
