   fieldTypes = for typeArgs in typeArgLists
     if typeArgs
       if isRecord typeArgs
-        for type in _snd unzip _labeled _terms typeArgs when type
-          type = typeCompile ctx, type
+        for typeExpression in _snd unzip _labeled _validTerms typeArgs when typeExpression
+          type = typeCompile ctx, typeExpression
           for name, kind of values findFree type
             if not inSet varNameSet, name
-              malformed ctx, type, "Type variable #{name} not declared"
-              throw new Error "Type variable #{name} not declared"
+              malformed ctx, typeExpression, "Type variable #{name} not declared"
             else
               if foundKind = lookupInMap kinds, name
                 if not kindsEq foundKind, kind
-                  malformed ctx, type, "Type variable #{name} must have the same kind"
+                  malformed ctx, typeExpression, "Type variable #{name} must have the same kind"
               else
                 addToMap kinds, name, kind
           type
       else
         malformed ctx, typeArgs, 'Required a record of types'
-        null
-    else
-      null
+        []
+    else
+      []
 
   for typeParam in typeParams
     if not lookupInMap kinds, (_symbol typeParam)
       malformed ctx, typeParam, 'Data type parameter not used'
-      throw new Error 'Data type parameter not used'
+      # throw new Error 'Data type parameter not used'
 
   freshingSub = mapMap ((kind) -> ctx.freshTypeVariable kind), kinds
 

  typeVars = map ((name) -> new TypeVariable name, (lookupInMap kinds, name)), varNames
  dataType: (substitute freshingSub,
    (applyKindFn (new TypeConstr dataName, dataKind), typeVars...))
  fieldTypes: (map ((types) -> if types then substituteList freshingSub, types), fieldTypes)

ms.record = ms_record = (ctx, call) ->
    args = _validArguments call

      return jsNoop()

    dataName = ctx.definitionName()
    paramLabelsIn = (params = []) ->
      map _labelName, (filter _is, (map _fst, _labeled _validTerms params))

    # Types, Arity
    {fieldTypes, dataType} = findDataType ctx, typeArgLists, typeParams, dataName
