diff --git a/newmodeljsonparse.py b/newmodeljsonparse.py
index af9b3b149733220486e46b6876998a4ca7f43026..6f728dac9c4f4b34d71e15439e6e62da663a0879 100644
--- a/newmodeljsonparse.py
+++ b/newmodeljsonparse.py
@@ -82,6 +82,7 @@ def dimensionchange(string):
             value = 0
         newdimension = {"dimension": value}
         string.update(newdimension)
+    return string
 
 #gets the datatypes of functions to set for opcua
 def getdatatypes(argarray):
@@ -94,14 +95,18 @@ def getdatatypes(argarray):
         return None
 
 #switches range into the right format
-def changerange(string):
-    if iskeythere(string, "range"):
-        rangeval = string["range"]
-        rangetuple = (rangeval[0], rangeval[1])
-        string.update({"range": rangetuple})
+def changerange(obj):
+    if iskeythere(obj, "range"):
+        if obj["datatype"] == "enum":
+            obj.update({"range": [None, None]})
     else:
-        string.update({"range": (None, None)})
-   # print(string)
+        obj["range"] = [None, None]
+    return obj
+
+def getunit(string):
+    if not iskeythere(string, "unit"):
+        string["unit"] = "UNITLESS"
+    return string
 
 #gets the objectnames for arguments of the function
 def getobjnames(argarray):
@@ -116,15 +121,20 @@ def getobjnames(argarray):
 
 #returns a list of all the parameters as objects
 def getParameters(parametersDict):
+    # extracts the measurements of a Json-Mode
     parameterobj = []
     if len(parametersDict) > 0:
         for i in parametersDict:
             obj = i
-            dimensionchange(obj)
-            obj["value"]=getdefaultvalue(obj["dimension"], obj["datatype"])
-            obj = json.dumps(i)
+            obj = dimensionchange(obj)
+            obj["value"] = getdefaultvalue(obj)
+            obj = changerange(obj)
+            obj = getunit(obj)
+            obj = json.dumps(obj)
             parameterobji = json.loads(obj, object_hook=parameterJsonDecod)
             parameterobj.append(parameterobji)
+    print("parameterobj")
+    print(parameterobj)
     return parameterobj
 
 #returns a list of all the measurements as objects
@@ -133,12 +143,12 @@ def getMeasurements(measurementsDict):
     if len(measurementsDict) > 0:
         for i in measurementsDict:
             obj = i
-            dimensionchange(obj)
-            obj["value"] = getdefaultvalue(obj["dimension"], obj["datatype"])
-            changerange(obj)
+            obj = dimensionchange(obj)
+            obj["value"] = getdefaultvalue(obj)
+            obj = changerange(obj)
             if not iskeythere(obj, "unit"):
                 obj["unit"] = "UNITLESS"
-            obj = json.dumps(i)
+            obj = json.dumps(obj)
             measurementobji = json.loads(obj, object_hook=measurementJsonDecod)
             measurementobj.append(measurementobji)
     return measurementobj
@@ -169,7 +179,7 @@ def getFunctions(functionsDict, jsonmeasurements, jsonparameters):
 
 
 def searchlists(list1, list2):
-    print("I am searching")
+    #print("I am searching")
     objmeasurementlist = []
     if len(list1) <= 0:
         return []
@@ -179,8 +189,13 @@ def searchlists(list1, list2):
                 objmeasurementlist.append(searchobj)
     return objmeasurementlist
 
-
-def getdefaultvalue(dimension, datatype):
+def getdefaultvalue(obj):
+    if iskeythere(obj, "default"):
+        if obj["datatype"] == "string" or obj["datatype"] == "enum":
+            return "\"" + obj["default"] + "\""
+        return obj["default"]
+    datatype = obj["datatype"]
+    dimension = obj["dimension"]
     if datatype == "float" or datatype == "double" or datatype == "int":
         if dimension > 1:
             value = []
@@ -189,8 +204,12 @@ def getdefaultvalue(dimension, datatype):
             return value
         else:
             return 0
-    else:
+    elif datatype == "boolean":
         return True
+    elif datatype == "time":
+        return "ua.DateTime.now()"
+    else:
+        return "\"\""
 
 
 def iskeythere(list, key):
@@ -235,7 +254,7 @@ def buildComponents(interfacesreturn, jsoninterfaces, jsoncomponents, jsonmeasur
         if obj["name"] not in interfacesreturn.keys():
             interfacesreturn[str(obj["name"])] = wf.openobject(obj["name"], rootobj["description"])
             objmeasurementlist = getInterfaceparam([], rootobj, "measurements", jsoncomponents, jsonmeasurements)
-            print(objmeasurementlist)
+            #print(objmeasurementlist)
             measurementsobjs = getMeasurements(objmeasurementlist)
             wf.writemeasurement(measurementsobjs, interfacesreturn[str(obj["name"])])
             objparameterlist = getInterfaceparam([], rootobj, "parameters", jsoncomponents, jsonparameters)
@@ -272,6 +291,7 @@ def instantiate(typesdict, interfaces, jsoncomponents):
             if interface["rootComponent"] == component["uuid"]:
                 root = component
         components = getInterfaceparam([], root, "components", jsoncomponents, jsoncomponents)
+        #events = getInterfaceparam([], root, "events", jsoncomponents, jsonevents)
         instantiatedict[str(interface["name"])] = wf.writeinterface(typesdict[str(interface["name"])], interface["name"], count)
         instantiateComponents(typesdict, components, jsoncomponents, interface, instantiatedict)
 
@@ -297,6 +317,7 @@ def main():
         jsonfunctions = []
         jsoncomponents = []
         jsoninterfaces = []
+        jsonenums = []
         for obj in elements:
             #print(obj)
             if obj["elementType"] == "measurement":
@@ -310,6 +331,8 @@ def main():
             elif obj["elementType"] == "interface":
                 jsoninterfaces.append(obj)
        
+            elif obj["elementType"] == "enum":
+                jsonenums.append(obj)
         typesdict = buildComponents({}, jsoninterfaces, jsoncomponents, jsonmeasurements, jsonparameters, jsonfunctions, [])
         intantiateddict = instantiate(typesdict, jsoninterfaces, jsoncomponents)
 
diff --git a/writefile.py b/writefile.py
index f0f87a76fa8e2eea8907fb8f0265d2b1c43ad7d3..164c601629708439f330c72e3fc468bc3a50edbd 100644
--- a/writefile.py
+++ b/writefile.py
@@ -29,6 +29,12 @@ def getVariantType(datatype):
         varianttype = "ua.VariantType.Double"
     elif datatype == "Boolean":
         varianttype = "ua.VariantType.Boolean"
+    elif datatype == "time":
+        varianttype = "ua.VariantType.DateTime"
+    elif datatype == "string":
+        varianttype = "ua.VariantType.String"
+    elif datatype == "enum":
+        varianttype = "ua.VariantType.String"
     return varianttype
 
 
@@ -112,11 +118,9 @@ def writemeasurement(measurementobj, headnode):
         server.write(writeindent + varname + " = " + "await " + headnode + ".add_variable(idx, \"" + str(
             i.name) + "\", " + str(i.value) + ", " + varianttype + ", " + datatype + ")\n")
         server.write(writeindent + "await " + varname + "." + "set_modelling_rule(True)\n")
-        if i.range is not None or i.range != "(None, None)":
+        if i.range is not None and i.range != [None, None]:
             rangename = "rangeprop"
-            server.write(
-                writeindent + rangename + " = await " + varname + ".add_property(idx, \"range\", ua.Range(" + str(
-                    i.range[0]) + "," + str(i.range[1]) + "))\n")
+            server.write(writeindent + rangename + " = await " + varname + ".add_property(idx, \"range\", ua.Range(" + str(i.range[0]) + ", " + str(i.range[1]) + "))\n")
             server.write(writeindent + "await " + rangename + ".set_modelling_rule(True)\n")
         if i.unit != "UNITLESS":
             unitname = "unitprop"
@@ -144,17 +148,16 @@ def writeparameter(parameterobj, headnode):
         server.write(writeindent + varname + " = " + "await " + headnode + ".add_variable(idx, \"" + str(
             i.name) + "\", " + str(i.value) + ", " + varianttype + ", " + datatype + ")\n")
         server.write(writeindent + "await " + varname + "." + "set_modelling_rule(True)\n")
-        # if i.range is not None or i.range != (None, None):
-        #     rangename = "rangeprop"
-        #     server.write(
-        #         writeindent + rangename + " = await " + headnode + ".add_property(idx, \"range\", ua.Range(" + str(
-        #             i.range[0]) + "," + str(i.range[1]) + "))\n")
-        #     server.write(writeindent + "await " + rangename + ".set_modelling_rule(True)\n")
-        # if i.unit != "UNITLESS":
-        #     unitname = "unitprop"
-        #     server.write(
-        #         writeindent + unitname + " = await " + headnode + ".add_property(idx, \"unit\"," + "\"" + i.unit + "\")\n")
-        #     server.write(writeindent + "await " + unitname + ".set_modelling_rule(True)\n")
+        if i.range is not None and i.range != [None, None]:
+            rangename = "rangeprop"
+            server.write(
+                writeindent + rangename + " = await " + varname + ".add_property(idx, \"range\", ua.Range(" + str(i.range[0]) + ", " + str(i.range[1]) + "))\n")
+            server.write(writeindent + "await " + rangename + ".set_modelling_rule(True)\n")
+        if i.unit != "UNITLESS":
+            unitname = "unitprop"
+            server.write(
+                writeindent + unitname + " = await " + varname + ".add_property(idx, \"unit\"," + "\"" + i.unit + "\")\n")
+            server.write(writeindent + "await " + unitname + ".set_modelling_rule(True)\n")
 
         server.write(
             writeindent + varname + "description = await " + varname + ".add_property(idx, \"Description\", " + "\"" + i.description + "\")" + "\n")