diff --git a/jsonparse.py b/jsonparse.py
index 8703cd6f5799a7b796a452781030cc48567ae307..47ec08971c022e11ef37d00062ecaab247ca5246 100644
--- a/jsonparse.py
+++ b/jsonparse.py
@@ -171,7 +171,7 @@ def main():
         print(functionobj)
         print(parameterobj)
         #exec(open("writefile.py").read())
-        wf.write(measurementobj)
+        wf.write(measurementobj, parameterobj)
 
 
 
diff --git a/writefile.py b/writefile.py
index 6baca89555352de9b5239ef2411a94add340c343..6ba12b7c94e4b80590eccc91063c8ee6d5b2a1a8 100644
--- a/writefile.py
+++ b/writefile.py
@@ -7,7 +7,7 @@ def defFunction(functionname, file, indent, contents = None):
         writeindent = writeindent + "\t"
     file.write(indent + "async def " + functionname + ":")
 
-def write(measurementobj):
+def write(measurementobj, parameterobj):
     if os.path.exists("opcua-server.py"):
         os.remove("opcua-server.py")
     server = open("opcua-server.py", "a")
@@ -36,26 +36,58 @@ _logger = logging.getLogger('asyncua')
     idx = await server.register_namespace(uri)
     #id of rangetype
     rangeid = await server.nodes.base_data_type.get_child(["0:Structure", "0:Range"])
+    
+    #creating the objecttype 
     myobjtype = await server.nodes.base_object_type.add_object_type(idx, "Robot")
-    vartype = await server.nodes.base_data_type.add_data_type(idx, "Measurement")
+    
+    #creating dataypes for parameters and measurements
+    measurementtype = await server.nodes.base_data_type.add_data_type(idx, "Measurement")
+    parametertype = await server.nodes.base_data_type.add_data_type(idx, "Parameter")
 """)
     indent = 1
     writeindent = ""
     for j in range(indent):
             writeindent = writeindent + "    "
+
+    server.write("\n" + writeindent + "# creating all measurements with their properterties\n")
+
     for i in measurementobj:
         varianttype = "ua.VariantType.Int64"
         if i.datatype == "float" or i.datatype == "double":
             varianttype = "ua.VariantType.Double"
         elif i.datatype == "Boolean":
             varianttype = "ua.VariantType.Boolean"
-        datatype = "vartype.nodeid"
+        datatype = "measurementtype.nodeid"
+        varname = ((i.name).lower()).replace(" ", "") + "var"
+        server.write(writeindent + varname + " = " + "await myobjtype.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 and i.range is not [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 is not None:
+            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 + "description = await " + varname + ".add_property(idx, \"Description\", " + "\"" + i.description + "\")" + "\n")
+        server.write(writeindent + "await description.set_modelling_rule(True)\n\n")
+
+    server.write("\n" + writeindent + "#creating all parameters with their properties\n")
+
+    for i in parameterobj:
+        varianttype = "ua.VariantType.Int64"
+        if i.datatype == "float" or i.datatype == "double":
+            varianttype = "ua.VariantType.Double"
+        elif i.datatype == "Boolean":
+            varianttype = "ua.VariantType.Boolean"
+        datatype = "parametertype.nodeid"
         varname = ((i.name).lower()).replace(" ", "") + "var"
         server.write(writeindent + varname + " = " + "await myobjtype.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 and i.range is not [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 is not None:
             unitname = "unitprop"
@@ -63,7 +95,7 @@ _logger = logging.getLogger('asyncua')
             server.write(writeindent + "await " + unitname + ".set_modelling_rule(True)\n")
 
         server.write(writeindent + "description = await " + varname + ".add_property(idx, \"Description\", " + "\"" + i.description + "\")" + "\n")
-        server.write(writeindent + "await description.set_modelling_rule(True)\n")
+        server.write(writeindent + "await description.set_modelling_rule(True)\n\n")
 
 
     server.write("""