Repository: dlubal-software/RFEM_Python_Client (language: python)

Issue:
REQUEST: allow working with more than model
**current situation**
Model stores clientModel as a class attribute so you it is not possible to work with more than one file

**preferred solution**
use a instance variable instead
`self.clientModel`




Discussion / hints:
Hi @ZTThomasOberthanner,
the SUDS module which facilates connection enables only one connection. But there is no problem switching between the model inside one connection. I can add a function to switch between the models to make it easier. Class Model() represents model not application. See [application methods](https://github.com/Dlubal-Software/RFEM_Python_Client/wiki/Methods-and-Types-for-Application) to see how it works.
that would be great because I have a use case, where many models interact with each other

Fix patch:
diff --git a/.vscode/settings.json b/.vscode/settings.json
index b06aaa96..30d0a105 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -2,7 +2,7 @@
     "files.trimTrailingWhitespace": true,
     "editor.tabSize": 4,
     "editor.insertSpaces": true,
-    "python.linting.pylintEnabled": true,
+    "python.linting.pylintEnabled": false,
     "python.linting.pylintArgs": [],
     "python.linting.enabled": false,
     "python.linting.pydocstyleEnabled": false,
@@ -23,5 +23,9 @@
     "python.analysis.completeFunctionParens": true,
     "python.disableInstallationCheck": true,
     "python.linting.banditEnabled": true,
-    "python.languageServer": "Pylance"
+    "python.languageServer": "Pylance",
+    "python.analysis.diagnosticSeverityOverrides": {
+        "reportOptionalMemberAccess": "none",
+        "reportGeneralTypeIssues": "none",
+    }
 }
\ No newline at end of file
diff --git a/Examples/TrussGenerator_2D/TrussGenerator.py b/Examples/TrussGenerator_2D/TrussGenerator.py
index 92614d2a..8dad52e8 100644
--- a/Examples/TrussGenerator_2D/TrussGenerator.py
+++ b/Examples/TrussGenerator_2D/TrussGenerator.py
@@ -64,8 +64,6 @@
 print('dirname:     ', dirName)
 sys.path.append(dirName + r'/../..')
 from RFEM.enums import *
-from RFEM.window import *
-from RFEM.dataTypes import *
 from RFEM.initModel import *
 from RFEM.BasicObjects.material import *
 from RFEM.BasicObjects.section import *
diff --git a/Examples/main.py b/Examples/main.py
index 4c741770..b7f0f007 100644
--- a/Examples/main.py
+++ b/Examples/main.py
@@ -11,7 +11,7 @@
 )
 sys.path.append(PROJECT_ROOT)
 from RFEM.enums import NodalSupportType, StaticAnalysisType, LoadDirectionType, MemberLoadDistribution, MemberLoadDirection, MemberRotationSpecificationType
-from RFEM.window import window
+from Examples.window import window
 from RFEM.dataTypes import inf
 from RFEM.initModel import Model, Calculate_all, insertSpaces, modelLst
 from RFEM.BasicObjects.material import Material
@@ -287,6 +287,7 @@ def main(hall_width_L, hall_height_h_o, hall_height_h_m, number_frames, frame_sp
 # -------------------------------------------------------------
     # Calculate all
     Calculate_all()
+
     print("Done")
 
 if __name__ == '__main__':
diff --git a/RFEM/window.py b/Examples/window.py
similarity index 97%
rename from RFEM/window.py
rename to Examples/window.py
index df15656c..11a296a9 100644
--- a/RFEM/window.py
+++ b/Examples/window.py
@@ -1,163 +1,163 @@
-from tkinter import Tk
-from tkinter import ttk, Entry, Label, Button, Radiobutton, Checkbutton, CENTER, VERTICAL, INSERT, NORMAL, DISABLED, LEFT, W, IntVar, StringVar
-
-def window(mainFunc, lstOfModels):
-    color = '#F2F3F4'
-    # Creating tkinter window
-    win = Tk()
-    win.resizable(False, False)
-    win.title('Power of automation with RFEM6')
-    win.geometry("550x280")
-
-    win.configure(bg=color)
-    win.grid_columnconfigure(index=0, minsize=140)
-    win.grid_columnconfigure(index=1, minsize=80)
-    win.grid_columnconfigure(index=2, minsize=80)
-    win.grid_columnconfigure(index=3, minsize=70)
-    win.grid_columnconfigure(index=4, minsize=120)
-
-    # Separators
-    y = 3
-    rh = 120 #0.76
-    ttk.Separator(win, orient=VERTICAL).place(x=140, y=y, height=rh)
-    ttk.Separator(win, orient=VERTICAL).place(x=260, y=y, height=rh)
-    ttk.Separator(win, orient=VERTICAL).place(x=350, y=y, height=rh)
-    ttk.Separator(win, orient=VERTICAL).place(x=430, y=y, height=rh)
-
-    Label(text="Params Type", justify=CENTER, font="Segoe 9 bold", bg=color).grid(row=0, column=0)
-    Label(text="Data Type", justify=CENTER, font="Segoe 9 bold", bg=color).grid(row=0, column=1)
-    Label(text="Symbol", justify=CENTER, font="Segoe 9 bold", bg=color).grid(row=0, column=2)
-    Label(text="Units", justify=CENTER, font="Segoe 9 bold", bg=color).grid(row=0, column=3)
-    Label(text="Magnitude", justify=CENTER, font="Segoe 9 bold", bg=color).grid(row=0, column=4)
-
-    Label(text="hall width", bg=color).grid(row=1, column=0)
-    Label(text="hall height", bg=color).grid(row=2, column=0)
-    Label(text="hall height", bg=color).grid(row=3, column=0)
-    Label(text="frame spacing", bg=color).grid(row=4, column=0)
-    Label(text="number of frames", bg=color).grid(row=5, column=0)
-    Label(text="Options", justify=CENTER, font="Segoe 9 bold", bg=color).grid(row=6, column=0)
-
-    Label(text="float", bg=color).grid(row=1, column=1)
-    Label(text="float", bg=color).grid(row=2, column=1)
-    Label(text="float", bg=color).grid(row=3, column=1)
-    Label(text="float", bg=color).grid(row=4, column=1)
-    Label(text="integer", bg=color).grid(row=5, column=1)
-
-    Label(text="L", bg=color).grid(row=1, column=2)
-    Label(text="h_o", bg=color).grid(row=2, column=2)
-    Label(text="h_m", bg=color).grid(row=3, column=2)
-    Label(text="f_s", bg=color).grid(row=4, column=2)
-    Label(text="n", bg=color).grid(row=5, column=2)
-
-    Label(text="meters", bg=color).grid(row=1, column=3)
-    Label(text="meters", bg=color).grid(row=2, column=3)
-    Label(text="meters", bg=color).grid(row=3, column=3)
-    Label(text="meters", bg=color).grid(row=4, column=3)
-    Label(text="-", bg=color).grid(row=5, column=3)
-
-    def validateAll(val): # 1 mandatory argument, not used
-        try:
-            float(e1.get())
-            float(e2.get())
-            float(e3.get())
-            float(e4.get())
-            int(e5.get())
-            button1['state']="normal"
-            return 1
-        except:
-            button1['state']="disabled"
-            print("disabled")
-            return 0
-
-    # Setting entry points
-    e1 = Entry(justify=CENTER, width=15) # (relief=FLAT, justify=CENTER, bg=color)
-    e1.grid(row=1, column=4)
-    e1.insert(INSERT, 20.0)
-    e2 = Entry(justify=CENTER, width=15)
-    e2.grid(row=2, column=4)
-    e2.insert(INSERT, 5.2)
-    e3 = Entry(justify=CENTER, width=15)
-    e3.grid(row=3, column=4)
-    e3.insert(INSERT, 7.3)
-    e4 = Entry(justify=CENTER, width=15)
-    e4.grid(row=4, column=4)
-    e4.insert(INSERT, 6.0)
-    e5 = Entry(justify=CENTER, width=15)
-    e5.grid(row=5, column=4)
-    e5.insert(INSERT, 6)
-
-
-    def start(val):
-        # hall_width_L, hall_height_h_o, hall_height_h_m, number_frames, frame_spacing, new_model, model_name, delete, delete_all
-        model_name = e6.get() if var1.get() else modeCombo.get()
-        mainFunc(float(e1.get()),float(e2.get()),float(e3.get()),int(e5.get()),float(e4.get()),var1.get(),model_name,int(var2.get()),int(var3.get()))
-    def close_window(val):
-        win.destroy()
-
-    # substitute for validatecommand and validation options of Entry (e1-e5)
-    e1.bind('<FocusOut>', validateAll)
-    e1.bind('<Key>', validateAll)
-    e2.bind('<FocusOut>', validateAll)
-    e2.bind('<Key>', validateAll)
-    e3.bind('<FocusOut>', validateAll)
-    e3.bind('<Key>', validateAll)
-    e4.bind('<FocusOut>', validateAll)
-    e4.bind('<Key>', validateAll)
-    e5.bind('<FocusOut>', validateAll)
-    e5.bind('<Key>', validateAll)
-
-    def selectRadioButton():
-        if var1.get()==1:
-            c2.config(state=DISABLED)
-            c3.config(state=DISABLED)
-            modeCombo.config(state=DISABLED)
-            e6.config(state=NORMAL)
-        else:
-            e6.config(state=DISABLED)
-            c2.config(state=NORMAL)
-            c3.config(state=NORMAL)
-            modeCombo.config(state=NORMAL)
-
-    # Radiobuttons
-    var1 = IntVar()
-    c1 = Radiobutton(win, text='create new model', variable=var1, value=1, command=selectRadioButton)
-    c1.grid(row=7, column=0, sticky=W)
-    c1.select()
-    c1 = Radiobutton(win, text='use existing model', variable=var1, value=0, command=selectRadioButton)
-    c1.grid(row=8, column=0, sticky=W)
-    c1.config(state=DISABLED)
-
-    # Textbox
-    e6 = Entry(justify=LEFT, width=19)
-    e6.grid(row=7, column=1)
-    e6.insert(INSERT, 'new_Model')
-
-    # Combobox
-    n = StringVar()
-    lst = []
-    modeCombo = ttk.Combobox(win,  text='model', width=16, textvariable=n)
-    if lstOfModels:
-        c1.config(state=NORMAL)
-        for i in lstOfModels.name:
-            lst.append(i)
-        modeCombo['values'] = lst
-        modeCombo.current(0)
-    modeCombo.grid(row=8, column=1, sticky=W)
-
-    # Checkboxes
-    var2 = IntVar()
-    c2 = Checkbutton(win, text='delete results', state=DISABLED, variable=var2, onvalue=1, offvalue=0)
-    c2.grid(row=9, column=0, sticky=W)
-    var3 = IntVar()
-    c3 = Checkbutton(win, text='delete_all model', state=DISABLED, variable=var3, onvalue=1, offvalue=0)
-    c3.grid(row=10, column=0, sticky=W)
-
-    button1=Button(text='Run', anchor=CENTER, width=12, height=1, bg=color, state="normal") # width=16
-    button1.grid(row=11, column=4)
-    button1.bind('<ButtonRelease-1>', start)
-
-    button2=Button(text='Close', anchor=CENTER, width=12, height=1, bg=color, state="normal")
-    button2.grid(row=11, column=3)
-    button2.bind('<ButtonRelease-1>', close_window)
-
-    win.mainloop()
+from tkinter import Tk
+from tkinter import ttk, Entry, Label, Button, Radiobutton, Checkbutton, CENTER, VERTICAL, INSERT, NORMAL, DISABLED, LEFT, W, IntVar, StringVar
+
+def window(mainFunc, lstOfModels):
+    color = '#F2F3F4'
+    # Creating tkinter window
+    win = Tk()
+    win.resizable(False, False)
+    win.title('Power of automation with RFEM6')
+    win.geometry("550x280")
+
+    win.configure(bg=color)
+    win.grid_columnconfigure(index=0, minsize=140)
+    win.grid_columnconfigure(index=1, minsize=80)
+    win.grid_columnconfigure(index=2, minsize=80)
+    win.grid_columnconfigure(index=3, minsize=70)
+    win.grid_columnconfigure(index=4, minsize=120)
+
+    # Separators
+    y = 3
+    rh = 120 #0.76
+    ttk.Separator(win, orient=VERTICAL).place(x=140, y=y, height=rh)
+    ttk.Separator(win, orient=VERTICAL).place(x=260, y=y, height=rh)
+    ttk.Separator(win, orient=VERTICAL).place(x=350, y=y, height=rh)
+    ttk.Separator(win, orient=VERTICAL).place(x=430, y=y, height=rh)
+
+    Label(text="Params Type", justify=CENTER, font="Segoe 9 bold", bg=color).grid(row=0, column=0)
+    Label(text="Data Type", justify=CENTER, font="Segoe 9 bold", bg=color).grid(row=0, column=1)
+    Label(text="Symbol", justify=CENTER, font="Segoe 9 bold", bg=color).grid(row=0, column=2)
+    Label(text="Units", justify=CENTER, font="Segoe 9 bold", bg=color).grid(row=0, column=3)
+    Label(text="Magnitude", justify=CENTER, font="Segoe 9 bold", bg=color).grid(row=0, column=4)
+
+    Label(text="hall width", bg=color).grid(row=1, column=0)
+    Label(text="hall height", bg=color).grid(row=2, column=0)
+    Label(text="hall height", bg=color).grid(row=3, column=0)
+    Label(text="frame spacing", bg=color).grid(row=4, column=0)
+    Label(text="number of frames", bg=color).grid(row=5, column=0)
+    Label(text="Options", justify=CENTER, font="Segoe 9 bold", bg=color).grid(row=6, column=0)
+
+    Label(text="float", bg=color).grid(row=1, column=1)
+    Label(text="float", bg=color).grid(row=2, column=1)
+    Label(text="float", bg=color).grid(row=3, column=1)
+    Label(text="float", bg=color).grid(row=4, column=1)
+    Label(text="integer", bg=color).grid(row=5, column=1)
+
+    Label(text="L", bg=color).grid(row=1, column=2)
+    Label(text="h_o", bg=color).grid(row=2, column=2)
+    Label(text="h_m", bg=color).grid(row=3, column=2)
+    Label(text="f_s", bg=color).grid(row=4, column=2)
+    Label(text="n", bg=color).grid(row=5, column=2)
+
+    Label(text="meters", bg=color).grid(row=1, column=3)
+    Label(text="meters", bg=color).grid(row=2, column=3)
+    Label(text="meters", bg=color).grid(row=3, column=3)
+    Label(text="meters", bg=color).grid(row=4, column=3)
+    Label(text="-", bg=color).grid(row=5, column=3)
+
+    def validateAll(val): # 1 mandatory argument, not used
+        try:
+            float(e1.get())
+            float(e2.get())
+            float(e3.get())
+            float(e4.get())
+            int(e5.get())
+            button1['state']="normal"
+            return 1
+        except:
+            button1['state']="disabled"
+            print("disabled")
+            return 0
+
+    # Setting entry points
+    e1 = Entry(justify=CENTER, width=15) # (relief=FLAT, justify=CENTER, bg=color)
+    e1.grid(row=1, column=4)
+    e1.insert(INSERT, 20.0)
+    e2 = Entry(justify=CENTER, width=15)
+    e2.grid(row=2, column=4)
+    e2.insert(INSERT, 5.2)
+    e3 = Entry(justify=CENTER, width=15)
+    e3.grid(row=3, column=4)
+    e3.insert(INSERT, 7.3)
+    e4 = Entry(justify=CENTER, width=15)
+    e4.grid(row=4, column=4)
+    e4.insert(INSERT, 6.0)
+    e5 = Entry(justify=CENTER, width=15)
+    e5.grid(row=5, column=4)
+    e5.insert(INSERT, 6)
+
+
+    def start(val):
+        # hall_width_L, hall_height_h_o, hall_height_h_m, number_frames, frame_spacing, new_model, model_name, delete, delete_all
+        model_name = e6.get() if var1.get() else modeCombo.get()
+        mainFunc(float(e1.get()),float(e2.get()),float(e3.get()),int(e5.get()),float(e4.get()),var1.get(),model_name,int(var2.get()),int(var3.get()))
+    def close_window(val):
+        win.destroy()
+
+    # substitute for validatecommand and validation options of Entry (e1-e5)
+    e1.bind('<FocusOut>', validateAll)
+    e1.bind('<Key>', validateAll)
+    e2.bind('<FocusOut>', validateAll)
+    e2.bind('<Key>', validateAll)
+    e3.bind('<FocusOut>', validateAll)
+    e3.bind('<Key>', validateAll)
+    e4.bind('<FocusOut>', validateAll)
+    e4.bind('<Key>', validateAll)
+    e5.bind('<FocusOut>', validateAll)
+    e5.bind('<Key>', validateAll)
+
+    def selectRadioButton():
+        if var1.get()==1:
+            c2.config(state=DISABLED)
+            c3.config(state=DISABLED)
+            modeCombo.config(state=DISABLED)
+            e6.config(state=NORMAL)
+        else:
+            e6.config(state=DISABLED)
+            c2.config(state=NORMAL)
+            c3.config(state=NORMAL)
+            modeCombo.config(state=NORMAL)
+
+    # Radiobuttons
+    var1 = IntVar()
+    c1 = Radiobutton(win, text='create new model', variable=var1, value=1, command=selectRadioButton)
+    c1.grid(row=7, column=0, sticky=W)
+    c1.select()
+    c1 = Radiobutton(win, text='use existing model', variable=var1, value=0, command=selectRadioButton)
+    c1.grid(row=8, column=0, sticky=W)
+    c1.config(state=DISABLED)
+
+    # Textbox
+    e6 = Entry(justify=LEFT, width=19)
+    e6.grid(row=7, column=1)
+    e6.insert(INSERT, 'new_Model')
+
+    # Combobox
+    n = StringVar()
+    lst = []
+    modeCombo = ttk.Combobox(win,  text='model', width=16, textvariable=n)
+    if lstOfModels:
+        c1.config(state=NORMAL)
+        for i in lstOfModels.name:
+            lst.append(i)
+        modeCombo['values'] = lst
+        modeCombo.current(0)
+    modeCombo.grid(row=8, column=1, sticky=W)
+
+    # Checkboxes
+    var2 = IntVar()
+    c2 = Checkbutton(win, text='delete results', state=DISABLED, variable=var2, onvalue=1, offvalue=0)
+    c2.grid(row=9, column=0, sticky=W)
+    var3 = IntVar()
+    c3 = Checkbutton(win, text='delete_all model', state=DISABLED, variable=var3, onvalue=1, offvalue=0)
+    c3.grid(row=10, column=0, sticky=W)
+
+    button1=Button(text='Run', anchor=CENTER, width=12, height=1, bg=color, state="normal") # width=16
+    button1.grid(row=11, column=4)
+    button1.bind('<ButtonRelease-1>', start)
+
+    button2=Button(text='Close', anchor=CENTER, width=12, height=1, bg=color, state="normal")
+    button2.grid(row=11, column=3)
+    button2.bind('<ButtonRelease-1>', close_window)
+
+    win.mainloop()
\ No newline at end of file
diff --git a/RFEM/BasicObjects/bracing.py b/RFEM/BasicObjects/bracing.py
index 3ef4327d..dd3b5db8 100644
--- a/RFEM/BasicObjects/bracing.py
+++ b/RFEM/BasicObjects/bracing.py
@@ -11,7 +11,7 @@
 #                  start_section_no: int = 1,
 #                  end_section_no: int = 1,
 #                  comment: str = '',
-#                  params: dict = None):
+#                  params: dict = None, model = Model):
 
 #        '''
 #        Args:
@@ -27,7 +27,7 @@
 #        '''
 
 #         # Client model | Bracing
-#         clientObject = Model.clientModel.factory.create('ns0:bracing')
+#         clientObject = model.clientModel.factory.create('ns0:bracing')
 
 #         # Clears object atributes | Sets all atributes to None
 #         clearAtributes(clientObject)
@@ -67,7 +67,7 @@
 #             clientObject[key] = params[key]
 
 #         # Add Member to client model
-#         Model.clientModel.service.set_bracing(clientObject)
+#         model.clientModel.service.set_bracing(clientObject)
 
 #       def Horizontal(self,
 #             no: int = 1,
@@ -80,7 +80,7 @@
 #             start_bracing_hinge_no: int = 0,
 #             end_bracing_hinge_no: int = 0,
 #             comment: str = '',
-#             params: dict = None):
+#             params: dict = None, model = Model):
 
 #             '''
 #            Args:
@@ -98,7 +98,7 @@
 #             '''
 
 #         # Client model | Bracing
-#         clientObject = Model.clientModel.factory.create('ns0:bracing')
+#         clientObject = model.clientModel.factory.create('ns0:bracing')
 
 #         # Clears object atributes | Sets all atributes to None
 #         clearAtributes(clientObject)
@@ -138,7 +138,7 @@
 #             clientObject[key] = params[key]
 
 #         # Add Bracing to client model
-#         Model.clientModel.service.set_bracing(clientObject)
+#         model.clientModel.service.set_bracing(clientObject)
 
 #         def Vertical(self,
 #             no: int = 1,
@@ -151,7 +151,7 @@
 #             start_bracing_hinge_no: int = 0,
 #             end_bracing_hinge_no: int = 0,
 #             comment: str = '',
-#             params: dict = None):
+#             params: dict = None, model = Model):
 
 #            '''
 #            Args:
@@ -169,7 +169,7 @@
 #            '''
 
 #         # Client model | Bracing
-#         clientObject = Model.clientModel.factory.create('ns0:bracing')
+#         clientObject = model.clientModel.factory.create('ns0:bracing')
 
 #         # Clears object atributes | Sets all atributes to None
 #         clearAtributes(clientObject)
@@ -209,5 +209,5 @@
 #             clientObject[key] = params[key]
 
 #         # Add Bracing to client model
-#         Model.clientModel.service.set_bracing(clientObject)
+#         model.clientModel.service.set_bracing(clientObject)
 
diff --git a/RFEM/BasicObjects/frame.py b/RFEM/BasicObjects/frame.py
index cbcb236e..1c0e55a2 100644
--- a/RFEM/BasicObjects/frame.py
+++ b/RFEM/BasicObjects/frame.py
@@ -14,7 +14,7 @@
 #                  insertion_point_y: int = 4,
 #                  insertion_point_z: int = 3,
 #                  comment: str = '',
-#                  params: dict = None):
+#                  params: dict = None, model = Model):
 
 #        '''
 #        Args:
diff --git a/RFEM/BasicObjects/line.py b/RFEM/BasicObjects/line.py
index cae286fe..94ee0a15 100644
--- a/RFEM/BasicObjects/line.py
+++ b/RFEM/BasicObjects/line.py
@@ -6,7 +6,8 @@ def __init__(self,
                  no: int = 1,
                  nodes_no: str = '1 2',
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -17,7 +18,7 @@ def __init__(self,
         '''
 
         # Client model | Line
-        clientObject = Model.clientModel.factory.create('ns0:line')
+        clientObject = model.clientModel.factory.create('ns0:line')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -37,14 +38,15 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Line to client model
-        Model.clientModel.service.set_line(clientObject)
+        model.clientModel.service.set_line(clientObject)
 
     @staticmethod
     def Polyline(
                  no: int = 1,
                  nodes_no: str = '1 2',
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -55,7 +57,7 @@ def Polyline(
         '''
 
         # Client model | Line
-        clientObject = Model.clientModel.factory.create('ns0:line')
+        clientObject = model.clientModel.factory.create('ns0:line')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -78,7 +80,7 @@ def Polyline(
                 clientObject[key] = params[key]
 
         # Add Line to client model
-        Model.clientModel.service.set_line(clientObject)
+        model.clientModel.service.set_line(clientObject)
 
     @staticmethod
     def Arc(
@@ -87,7 +89,8 @@ def Arc(
             control_point: list,
             alpha_adjustment_target = LineArcAlphaAdjustmentTarget.ALPHA_ADJUSTMENT_TARGET_BEGINNING_OF_ARC,
             comment: str = '',
-            params: dict = None):
+            params: dict = None,
+            model = Model):
 
         '''
         Args:
@@ -100,7 +103,7 @@ def Arc(
         '''
 
         # Client model | Line
-        clientObject = Model.clientModel.factory.create('ns0:line')
+        clientObject = model.clientModel.factory.create('ns0:line')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -129,7 +132,7 @@ def Arc(
                 clientObject[key] = params[key]
 
         # Add Line to client model
-        Model.clientModel.service.set_line(clientObject)
+        model.clientModel.service.set_line(clientObject)
 
     @staticmethod
     def Circle(
@@ -138,7 +141,7 @@ def Circle(
                 circle_radius: float = 1.0,
                 point_of_normal_to_circle_plane: list = [1,0,0],
                 comment: str = '',
-                params: dict = None):
+                params: dict = None, model = Model):
 
         '''
         Args:
@@ -152,7 +155,7 @@ def Circle(
         '''
 
         # Client model | Line
-        clientObject = Model.clientModel.factory.create('ns0:line')
+        clientObject = model.clientModel.factory.create('ns0:line')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -184,7 +187,7 @@ def Circle(
                 clientObject[key] = params[key]
 
         # Add Line to client model
-        Model.clientModel.service.set_line(clientObject)
+        model.clientModel.service.set_line(clientObject)
 
     @staticmethod
     def EllipticalArc(
@@ -195,7 +198,7 @@ def EllipticalArc(
                       arc_angle_alpha: float = 0,
                       arc_angle_beta: float = 3.141592653589793,
                       comment: str = '',
-                      params: dict = None):
+                      params: dict = None, model = Model):
 
         '''
         Args:
@@ -210,7 +213,7 @@ def EllipticalArc(
         '''
 
         # Client model | Line
-        clientObject = Model.clientModel.factory.create('ns0:line')
+        clientObject = model.clientModel.factory.create('ns0:line')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -246,7 +249,7 @@ def EllipticalArc(
                 clientObject[key] = params[key]
 
         # Add Line to client model
-        Model.clientModel.service.set_line(clientObject)
+        model.clientModel.service.set_line(clientObject)
 
     @staticmethod
     def Ellipse(
@@ -254,7 +257,7 @@ def Ellipse(
                 nodes_no: list = [5,10],
                 ellipse_control_point: list = [18,-4.8,0],
                 comment: str = '',
-                params: dict = None):
+                params: dict = None, model = Model):
 
         '''
         Args:
@@ -266,7 +269,7 @@ def Ellipse(
         '''
 
         # Client model | Line
-        clientObject = Model.clientModel.factory.create('ns0:line')
+        clientObject = model.clientModel.factory.create('ns0:line')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -296,7 +299,7 @@ def Ellipse(
                 clientObject[key] = params[key]
 
         # Add Line to client model
-        Model.clientModel.service.set_line(clientObject)
+        model.clientModel.service.set_line(clientObject)
 
     @staticmethod
     def Parabola(
@@ -305,7 +308,7 @@ def Parabola(
                  parabola_control_point: list = [10,-3,0],
                  parabola_alpha: float = 0,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None, model = Model):
 
         '''
         Args:
@@ -318,7 +321,7 @@ def Parabola(
         '''
 
         # Client model | Line
-        clientObject = Model.clientModel.factory.create('ns0:line')
+        clientObject = model.clientModel.factory.create('ns0:line')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -350,14 +353,14 @@ def Parabola(
                 clientObject[key] = params[key]
 
         # Add Line to client model
-        Model.clientModel.service.set_line(clientObject)
+        model.clientModel.service.set_line(clientObject)
 
     @staticmethod
     def Spline(
                no: int = 1,
                nodes_no: str = '1 3 5',
                comment: str = '',
-               params: dict = None):
+               params: dict = None, model = Model):
 
         '''
         Args:
@@ -368,7 +371,7 @@ def Spline(
         '''
 
         # Client model | Line
-        clientObject = Model.clientModel.factory.create('ns0:line')
+        clientObject = model.clientModel.factory.create('ns0:line')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -391,7 +394,7 @@ def Spline(
                 clientObject[key] = params[key]
 
         # Add Line to client model
-        Model.clientModel.service.set_line(clientObject)
+        model.clientModel.service.set_line(clientObject)
 
     @staticmethod
     def NURBS(
@@ -401,7 +404,7 @@ def NURBS(
               weights: list = None,
               order: int = 0,
               comment: str = '',
-              params: dict = None):
+              params: dict = None, model = Model):
 
         '''
         Args:
@@ -415,7 +418,7 @@ def NURBS(
         '''
 
         # Client model | Line
-        clientObject = Model.clientModel.factory.create('ns0:line')
+        clientObject = model.clientModel.factory.create('ns0:line')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -438,14 +441,14 @@ def NURBS(
             # TODO: bug 24721
             nurbs_control_points = []
             for i,j in enumerate(control_points):
-                point = Model.clientModel.factory.create('ns0:line_nurbs_control_points_by_components')
+                point = model.clientModel.factory.create('ns0:line_nurbs_control_points_by_components')
                 point.no = i+1
                 point.global_coordinate_x = control_points[i][0]
                 point.global_coordinate_y = control_points[i][1]
                 point.global_coordinate_z = control_points[i][2]
                 point.weight = 1 if not weights else weights[i]
                 nurbs_control_points.append(point)
-            clientObject.nurbs_control_points_by_components = Model.clientModel.factory.create('ns0:line_nurbs_control_points_by_components')
+            clientObject.nurbs_control_points_by_components = model.clientModel.factory.create('ns0:line_nurbs_control_points_by_components')
 
         # Comment
         clientObject.comment = comment
@@ -456,4 +459,4 @@ def NURBS(
                 clientObject[key] = params[key]
 
         # Add Line to client model
-        Model.clientModel.service.set_line(clientObject)
+        model.clientModel.service.set_line(clientObject)
diff --git a/RFEM/BasicObjects/lineSet.py b/RFEM/BasicObjects/lineSet.py
index ea3333e8..316b9cee 100644
--- a/RFEM/BasicObjects/lineSet.py
+++ b/RFEM/BasicObjects/lineSet.py
@@ -7,7 +7,8 @@ def __init__(self,
                  lines_no: str = '33 36 39 42 45',
                  line_set_type = SetType.SET_TYPE_CONTINUOUS,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -19,7 +20,7 @@ def __init__(self,
         '''
 
         # Client model | Line Set
-        clientObject = Model.clientModel.factory.create('ns0:line_set')
+        clientObject = model.clientModel.factory.create('ns0:line_set')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -42,14 +43,15 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Line Set to client model
-        Model.clientModel.service.set_line_set(clientObject)
+        model.clientModel.service.set_line_set(clientObject)
 
     @staticmethod
     def ContinuousLines(
                  no: int = 1,
                  lines_no: str = '33 36 39 42 45',
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -60,7 +62,7 @@ def ContinuousLines(
         '''
 
         # Client model | Line Set
-        clientObject = Model.clientModel.factory.create('ns0:line_set')
+        clientObject = model.clientModel.factory.create('ns0:line_set')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -83,14 +85,15 @@ def ContinuousLines(
                 clientObject[key] = params[key]
 
         # Add Line Set to client model
-        Model.clientModel.service.set_line_set(clientObject)
+        model.clientModel.service.set_line_set(clientObject)
 
     @staticmethod
     def GroupOfLines(
                  no: int = 1,
                  lines_no: str = '33 36 39 42 45',
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -101,7 +104,7 @@ def GroupOfLines(
         '''
 
         # Client model | Line Set
-        clientObject = Model.clientModel.factory.create('ns0:line_set')
+        clientObject = model.clientModel.factory.create('ns0:line_set')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -124,4 +127,4 @@ def GroupOfLines(
                 clientObject[key] = params[key]
 
         # Add Line Set to client model
-        Model.clientModel.service.set_line_set(clientObject)
+        model.clientModel.service.set_line_set(clientObject)
diff --git a/RFEM/BasicObjects/material.py b/RFEM/BasicObjects/material.py
index 1883d959..3f1faa9f 100644
--- a/RFEM/BasicObjects/material.py
+++ b/RFEM/BasicObjects/material.py
@@ -1,11 +1,13 @@
 from RFEM.initModel import clearAtributes, Model
 
+
 class Material():
     def __init__(self,
                  no: int = 1,
                  name: str = 'S235',
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -16,7 +18,7 @@ def __init__(self,
         '''
 
         # Client model | Material
-        clientObject = Model.clientModel.factory.create('ns0:material')
+        clientObject = model.clientModel.factory.create('ns0:material')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -36,4 +38,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add material to client model
-        Model.clientModel.service.set_material(clientObject)
+        model.clientModel.service.set_material(clientObject)
diff --git a/RFEM/BasicObjects/member.py b/RFEM/BasicObjects/member.py
index 17b82c33..cd1a410b 100644
--- a/RFEM/BasicObjects/member.py
+++ b/RFEM/BasicObjects/member.py
@@ -13,7 +13,8 @@ def __init__(self,
                  end_member_hinge_no: int = 0,
                  line = None,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Member Tag
@@ -30,7 +31,7 @@ def __init__(self,
         """
 
         # Client model | Member
-        clientObject = Model.clientModel.factory.create('ns0:member')
+        clientObject = model.clientModel.factory.create('ns0:member')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -74,7 +75,7 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Member to client model
-        Model.clientModel.service.set_member(clientObject)
+        model.clientModel.service.set_member(clientObject)
 
     @staticmethod
     def Beam(
@@ -86,7 +87,7 @@ def Beam(
             rotation_parameters = [0],
             start_section_no: int = 1,
             end_section_no: int = 1,
-            distribution_parameters = [],
+            distribution_parameters: list = None,
             line = None,
             comment: str = '',
             params: dict = {'member_hinge_start':0, 'member_hinge_end': 0,
@@ -99,7 +100,8 @@ def Beam(
                             'end_modifications_member_end_slope_y': 0,
                             'end_modifications_member_end_slope_z': 0,
                             'member_result_intermediate_point' : 0,
-                            'is_deactivated_for_calculation' : False}):
+                            'is_deactivated_for_calculation' : False},
+            model = Model):
         """
         Args:
             no (int): Member Tag
@@ -144,7 +146,7 @@ def Beam(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Member
-        clientObject = Model.clientModel.factory.create('ns0:member')
+        clientObject = model.clientModel.factory.create('ns0:member')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -340,7 +342,7 @@ def Beam(
                 clientObject[key] = params[key]
 
         # Add Member to client model
-        Model.clientModel.service.set_member(clientObject)
+        model.clientModel.service.set_member(clientObject)
 
     @staticmethod
     def Rigid(
@@ -355,7 +357,8 @@ def Rigid(
                                 'member_eccentricity_start': 0, 'member_eccentricity_end': 0,
                                 'support':0, 'member_nonlinearity': 0,
                                 'member_result_intermediate_point' : 0,
-                                'is_deactivated_for_calculation' : False}):
+                                'is_deactivated_for_calculation' : False},
+                model = Model):
         """
         Args:
             no (int): Member Tag
@@ -376,7 +379,7 @@ def Rigid(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Member
-        clientObject = Model.clientModel.factory.create('ns0:member')
+        clientObject = model.clientModel.factory.create('ns0:member')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -447,7 +450,7 @@ def Rigid(
                 clientObject[key] = params[key]
 
         # Add Member to client model
-        Model.clientModel.service.set_member(clientObject)
+        model.clientModel.service.set_member(clientObject)
 
 	## Rib Member should be corrected.
     @staticmethod
@@ -472,7 +475,8 @@ def Rib(
                             'end_modifications_member_end_slope_y': 0,
                             'end_modifications_member_end_slope_z': 0,
                             'member_result_intermediate_point' : 0,
-                            'is_deactivated_for_calculation' : False}):
+                            'is_deactivated_for_calculation' : False},
+            model = Model):
         """
         Args:
             no (int): Member Tag
@@ -493,7 +497,7 @@ def Rib(
         """
 
         # Client model | Member
-        clientObject = Model.clientModel.factory.create('ns0:member')
+        clientObject = model.clientModel.factory.create('ns0:member')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -580,7 +584,7 @@ def Rib(
                 clientObject[key] = params[key]
 
         # Add Member to client model
-        Model.clientModel.service.set_member(clientObject)
+        model.clientModel.service.set_member(clientObject)
 
     @staticmethod
     def Truss(
@@ -600,7 +604,8 @@ def Truss(
                             'end_modifications_member_end_extension': 0,
                             'end_modifications_member_end_slope_y': 0,
                             'end_modifications_member_end_slope_z': 0,
-                            'is_deactivated_for_calculation' : False}):
+                            'is_deactivated_for_calculation' : False},
+            model = Model):
         """
         Args:
             no (int): Member Tag
@@ -622,7 +627,7 @@ def Truss(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Member
-        clientObject = Model.clientModel.factory.create('ns0:member')
+        clientObject = model.clientModel.factory.create('ns0:member')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -701,7 +706,7 @@ def Truss(
                 clientObject[key] = params[key]
 
         # Add Member to client model
-        Model.clientModel.service.set_member(clientObject)
+        model.clientModel.service.set_member(clientObject)
 
     @staticmethod
     def TrussOnlyN(
@@ -721,7 +726,8 @@ def TrussOnlyN(
                             'end_modifications_member_end_extension': 0,
                             'end_modifications_member_end_slope_y': 0,
                             'end_modifications_member_end_slope_z': 0,
-                            'is_deactivated_for_calculation' : False}):
+                            'is_deactivated_for_calculation' : False},
+            model = Model):
         """
         Args:
             no (int): Member Tag
@@ -743,7 +749,7 @@ def TrussOnlyN(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Member
-        clientObject = Model.clientModel.factory.create('ns0:member')
+        clientObject = model.clientModel.factory.create('ns0:member')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -822,7 +828,7 @@ def TrussOnlyN(
                 clientObject[key] = params[key]
 
         # Add Member to client model
-        Model.clientModel.service.set_member(clientObject)
+        model.clientModel.service.set_member(clientObject)
 
     @staticmethod
     def Tension(
@@ -842,7 +848,8 @@ def Tension(
                             'end_modifications_member_end_extension': 0,
                             'end_modifications_member_end_slope_y': 0,
                             'end_modifications_member_end_slope_z': 0,
-                            'is_deactivated_for_calculation' : False}):
+                            'is_deactivated_for_calculation' : False},
+            model = Model):
         """
         Args:
             no (int): Member Tag
@@ -864,7 +871,7 @@ def Tension(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Member
-        clientObject = Model.clientModel.factory.create('ns0:member')
+        clientObject = model.clientModel.factory.create('ns0:member')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -943,7 +950,7 @@ def Tension(
                 clientObject[key] = params[key]
 
         # Add Member to client model
-        Model.clientModel.service.set_member(clientObject)
+        model.clientModel.service.set_member(clientObject)
 
     @staticmethod
     def Compression(
@@ -963,7 +970,8 @@ def Compression(
                             'end_modifications_member_end_extension': 0,
                             'end_modifications_member_end_slope_y': 0,
                             'end_modifications_member_end_slope_z': 0,
-                            'is_deactivated_for_calculation' : False}):
+                            'is_deactivated_for_calculation' : False},
+            model = Model):
         """
         Args:
             no (int): Member Tag
@@ -985,7 +993,7 @@ def Compression(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Member
-        clientObject = Model.clientModel.factory.create('ns0:member')
+        clientObject = model.clientModel.factory.create('ns0:member')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -1064,7 +1072,7 @@ def Compression(
                 clientObject[key] = params[key]
 
         # Add Member to client model
-        Model.clientModel.service.set_member(clientObject)
+        model.clientModel.service.set_member(clientObject)
 
     @staticmethod
     def Buckling(
@@ -1084,7 +1092,8 @@ def Buckling(
                             'end_modifications_member_end_extension': 0,
                             'end_modifications_member_end_slope_y': 0,
                             'end_modifications_member_end_slope_z': 0,
-                            'is_deactivated_for_calculation' : False}):
+                            'is_deactivated_for_calculation' : False},
+            model = Model):
         """
         Args:
             no (int): Member Tag
@@ -1106,7 +1115,7 @@ def Buckling(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Member
-        clientObject = Model.clientModel.factory.create('ns0:member')
+        clientObject = model.clientModel.factory.create('ns0:member')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -1185,7 +1194,7 @@ def Buckling(
                 clientObject[key] = params[key]
 
         # Add Member to client model
-        Model.clientModel.service.set_member(clientObject)
+        model.clientModel.service.set_member(clientObject)
 
     @staticmethod
     def Cable(
@@ -1203,7 +1212,8 @@ def Cable(
                             'end_modifications_member_end_extension': 0,
                             'end_modifications_member_end_slope_y': 0,
                             'end_modifications_member_end_slope_z': 0,
-                            'is_deactivated_for_calculation' : False}):
+                            'is_deactivated_for_calculation' : False},
+            model = Model):
         """
         Args:
             no (int): Member Tag
@@ -1225,7 +1235,7 @@ def Cable(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Member
-        clientObject = Model.clientModel.factory.create('ns0:member')
+        clientObject = model.clientModel.factory.create('ns0:member')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -1295,7 +1305,7 @@ def Cable(
                 clientObject[key] = params[key]
 
         # Add Member to client model
-        Model.clientModel.service.set_member(clientObject)
+        model.clientModel.service.set_member(clientObject)
 
     @staticmethod
     def ResultBeam(
@@ -1308,8 +1318,8 @@ def ResultBeam(
             rotation_parameters = [0],
             start_section_no: int = 1,
             end_section_no: int = 1,
-            distribution_parameters = [],
-            integration_parameters = [],
+            distribution_parameters: list = None,
+            integration_parameters: list = None,
             comment: str = '',
             params: dict = { 'end_modifications_member_start_extension': 0,
                             'end_modifications_member_start_slope_y': 0,
@@ -1317,7 +1327,8 @@ def ResultBeam(
                             'end_modifications_member_end_extension': 0,
                             'end_modifications_member_end_slope_y': 0,
                             'end_modifications_member_end_slope_z': 0,
-                            'member_result_intermediate_point' : 0}):
+                            'member_result_intermediate_point' : 0},
+            model = Model):
         """
         Args:
             no (int): Member Tag
@@ -1368,7 +1379,7 @@ def ResultBeam(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Member
-        clientObject = Model.clientModel.factory.create('ns0:member')
+        clientObject = model.clientModel.factory.create('ns0:member')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -1551,7 +1562,7 @@ def ResultBeam(
                 clientObject[key] = params[key]
 
         # Add Member to client model
-        Model.clientModel.service.set_member(clientObject)
+        model.clientModel.service.set_member(clientObject)
 
     @staticmethod
     def DefinableStiffness(
@@ -1566,7 +1577,8 @@ def DefinableStiffness(
                             'member_eccentricity_start': 0, 'member_eccentricity_end': 0,
                             'member_nonlinearity': 0,
                             'member_result_intermediate_point' : 0,
-                            'is_deactivated_for_calculation' : False}):
+                            'is_deactivated_for_calculation' : False},
+            model = Model):
         """
         Args:
             no (int): Member Tag
@@ -1587,7 +1599,7 @@ def DefinableStiffness(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Member
-        clientObject = Model.clientModel.factory.create('ns0:member')
+        clientObject = model.clientModel.factory.create('ns0:member')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -1658,7 +1670,7 @@ def DefinableStiffness(
                 clientObject[key] = params[key]
 
         # Add Member to client model
-        Model.clientModel.service.set_member(clientObject)
+        model.clientModel.service.set_member(clientObject)
 
     @staticmethod
     def CouplingRigidRigid(
@@ -1668,7 +1680,8 @@ def CouplingRigidRigid(
                         rotation_specification_type = MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_ANGLE,
                         rotation_parameters = [0],
                         comment: str = '',
-                        params: dict = {'is_deactivated_for_calculation' : False}):
+                        params: dict = {'is_deactivated_for_calculation' : False},
+                        model = Model):
         """
         Args:
             no (int): Member Tag
@@ -1688,7 +1701,7 @@ def CouplingRigidRigid(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Member
-        clientObject = Model.clientModel.factory.create('ns0:member')
+        clientObject = model.clientModel.factory.create('ns0:member')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -1735,7 +1748,7 @@ def CouplingRigidRigid(
                 clientObject[key] = params[key]
 
         # Add Member to client model
-        Model.clientModel.service.set_member(clientObject)
+        model.clientModel.service.set_member(clientObject)
 
     @staticmethod
     def CouplingRigidHinge(
@@ -1745,7 +1758,8 @@ def CouplingRigidHinge(
                         rotation_specification_type = MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_ANGLE,
                         rotation_parameters = [0],
                         comment: str = '',
-                        params: dict = {'is_deactivated_for_calculation' : False}):
+                        params: dict = {'is_deactivated_for_calculation' : False},
+                        model = Model):
         """
         Args:
             no (int): Member Tag
@@ -1765,7 +1779,7 @@ def CouplingRigidHinge(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Member
-        clientObject = Model.clientModel.factory.create('ns0:member')
+        clientObject = model.clientModel.factory.create('ns0:member')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -1812,7 +1826,7 @@ def CouplingRigidHinge(
                 clientObject[key] = params[key]
 
         # Add Member to client model
-        Model.clientModel.service.set_member(clientObject)
+        model.clientModel.service.set_member(clientObject)
 
     @staticmethod
     def CouplingHingeRigid(
@@ -1822,7 +1836,8 @@ def CouplingHingeRigid(
                         rotation_specification_type = MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_ANGLE,
                         rotation_parameters = [0],
                         comment: str = '',
-                        params: dict = {'is_deactivated_for_calculation' : False}):
+                        params: dict = {'is_deactivated_for_calculation' : False},
+                        model = Model):
         """
         Args:
             no (int): Member Tag
@@ -1842,7 +1857,7 @@ def CouplingHingeRigid(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Member
-        clientObject = Model.clientModel.factory.create('ns0:member')
+        clientObject = model.clientModel.factory.create('ns0:member')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -1889,7 +1904,7 @@ def CouplingHingeRigid(
                 clientObject[key] = params[key]
 
         # Add Member to client model
-        Model.clientModel.service.set_member(clientObject)
+        model.clientModel.service.set_member(clientObject)
 
     @staticmethod
     def CouplingHingeHinge(
@@ -1899,7 +1914,8 @@ def CouplingHingeHinge(
                         rotation_specification_type = MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_ANGLE,
                         rotation_parameters = [0],
                         comment: str = '',
-                        params: dict = {'is_deactivated_for_calculation' : False}):
+                        params: dict = {'is_deactivated_for_calculation' : False},
+                        model = Model):
         """
         Args:
             no (int): Member Tag
@@ -1919,7 +1935,7 @@ def CouplingHingeHinge(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Member
-        clientObject = Model.clientModel.factory.create('ns0:member')
+        clientObject = model.clientModel.factory.create('ns0:member')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -1966,4 +1982,4 @@ def CouplingHingeHinge(
                 clientObject[key] = params[key]
 
         # Add Member to client model
-        Model.clientModel.service.set_member(clientObject)
+        model.clientModel.service.set_member(clientObject)
diff --git a/RFEM/BasicObjects/memberSet.py b/RFEM/BasicObjects/memberSet.py
index cd553d03..2260abac 100644
--- a/RFEM/BasicObjects/memberSet.py
+++ b/RFEM/BasicObjects/memberSet.py
@@ -7,7 +7,8 @@ def __init__(self,
                  members_no: str = '1 4 5 8 9 12 13 16 17 20 21 24',
                  member_set_type = SetType.SET_TYPE_GROUP,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -19,7 +20,7 @@ def __init__(self,
         '''
 
         # Client model | Member Set
-        clientObject = Model.clientModel.factory.create('ns0:member_set')
+        clientObject = model.clientModel.factory.create('ns0:member_set')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -42,14 +43,15 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Member Set to client model
-        Model.clientModel.service.set_member_set(clientObject)
+        model.clientModel.service.set_member_set(clientObject)
 
     @staticmethod
     def ContinuousMembers(
                           no: int = 1,
                           members_no: str = '1 4 5 8 9 12 13 16 17 20 21 24',
                           comment: str = '',
-                          params: dict = None):
+                          params: dict = None,
+                          model = Model):
 
         '''
         Args:
@@ -60,7 +62,7 @@ def ContinuousMembers(
         '''
 
         # Client model | Member Set
-        clientObject = Model.clientModel.factory.create('ns0:member_set')
+        clientObject = model.clientModel.factory.create('ns0:member_set')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -83,14 +85,15 @@ def ContinuousMembers(
                 clientObject[key] = params[key]
 
         # Add Member Set to client model
-        Model.clientModel.service.set_member_set(clientObject)
+        model.clientModel.service.set_member_set(clientObject)
 
     @staticmethod
     def GroupOfmembers(
                        no: int = 1,
                        members_no: str = '1 4 5 8 9 12 13 16 17 20 21 24',
                        comment: str = '',
-                       params: dict = None):
+                       params: dict = None,
+                       model = Model):
 
         '''
         Args:
@@ -101,7 +104,7 @@ def GroupOfmembers(
         '''
 
         # Client model | Member Set
-        clientObject = Model.clientModel.factory.create('ns0:member_set')
+        clientObject = model.clientModel.factory.create('ns0:member_set')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -124,4 +127,4 @@ def GroupOfmembers(
                 clientObject[key] = params[key]
 
         # Add Member Set to client model
-        Model.clientModel.service.set_member_set(clientObject)
+        model.clientModel.service.set_member_set(clientObject)
diff --git a/RFEM/BasicObjects/node.py b/RFEM/BasicObjects/node.py
index 5534d946..8d29daa1 100644
--- a/RFEM/BasicObjects/node.py
+++ b/RFEM/BasicObjects/node.py
@@ -11,7 +11,8 @@ def __init__(self,
                  coordinate_Y: float = 0.0,
                  coordinate_Z: float = 0.0,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
          Args:
@@ -23,7 +24,7 @@ def __init__(self,
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         '''
         # Client model | Node
-        clientObject = Model.clientModel.factory.create('ns0:node')
+        clientObject = model.clientModel.factory.create('ns0:node')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -45,15 +46,16 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Node to client model
-        Model.clientModel.service.set_node(clientObject)
+        model.clientModel.service.set_node(clientObject)
 
     @staticmethod
     def Standard(
                  no: int = 1,
-                 coordinate_system = [],
+                 coordinate_system: list = None,
                  coordinate_system_type = NodeCoordinateSystemType.COORDINATE_SYSTEM_CARTESIAN,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
          Args:
@@ -75,7 +77,7 @@ def Standard(
         '''
 
         # Client model | Node
-        clientObject = Model.clientModel.factory.create('ns0:node')
+        clientObject = model.clientModel.factory.create('ns0:node')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -135,7 +137,7 @@ def Standard(
                 clientObject[key] = params[key]
 
         # Add Node to client model
-        Model.clientModel.service.set_node(clientObject)
+        model.clientModel.service.set_node(clientObject)
 
 
     @staticmethod
@@ -149,7 +151,8 @@ def BetweenTwoNodes(
                  offset_y: int = 0,
                  offset_z: int = 0,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -170,7 +173,7 @@ def BetweenTwoNodes(
         '''
 
         # Client model | Node
-        clientObject = Model.clientModel.factory.create('ns0:node')
+        clientObject = model.clientModel.factory.create('ns0:node')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -214,7 +217,7 @@ def BetweenTwoNodes(
                 clientObject[key] = params[key]
 
         # Add Node to client model
-        Model.clientModel.service.set_node(clientObject)
+        model.clientModel.service.set_node(clientObject)
 
     @staticmethod
     def BetweenTwoPoints(
@@ -230,7 +233,8 @@ def BetweenTwoPoints(
                  offset_y: float = 0.0,
                  offset_z: float = 0.0,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -254,7 +258,7 @@ def BetweenTwoPoints(
         '''
 
         # Client model | Node
-        clientObject = Model.clientModel.factory.create('ns0:node')
+        clientObject = model.clientModel.factory.create('ns0:node')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -299,7 +303,7 @@ def BetweenTwoPoints(
                 clientObject[key] = params[key]
 
         # Add Node to client model
-        Model.clientModel.service.set_node(clientObject)
+        model.clientModel.service.set_node(clientObject)
 
     @staticmethod
     def OnLine(
@@ -309,7 +313,8 @@ def OnLine(
                  length_between_i_and_j: int = 1,
                  parameters = [True, 0.5],
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
          Args:
@@ -326,7 +331,7 @@ def OnLine(
         '''
 
         # Client model | Node
-        clientObject = Model.clientModel.factory.create('ns0:node')
+        clientObject = model.clientModel.factory.create('ns0:node')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -361,7 +366,7 @@ def OnLine(
                 clientObject[key] = params[key]
 
         # Add Node to client model
-        Model.clientModel.service.set_node(clientObject)
+        model.clientModel.service.set_node(clientObject)
 
     @staticmethod
     def OnMember(
@@ -371,7 +376,8 @@ def OnMember(
                  length_between_i_and_j: int = 1,
                  parameters = [True, 0.5],
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
          Args:
@@ -389,7 +395,7 @@ def OnMember(
         '''
 
         # Client model | Node
-        clientObject = Model.clientModel.factory.create('ns0:node')
+        clientObject = model.clientModel.factory.create('ns0:node')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -424,4 +430,4 @@ def OnMember(
                 clientObject[key] = params[key]
 
         # Add Node to client model
-        Model.clientModel.service.set_node(clientObject)
+        model.clientModel.service.set_node(clientObject)
diff --git a/RFEM/BasicObjects/opening.py b/RFEM/BasicObjects/opening.py
index e804b3a2..9f8f5e88 100644
--- a/RFEM/BasicObjects/opening.py
+++ b/RFEM/BasicObjects/opening.py
@@ -5,7 +5,8 @@ def __init__(self,
                  no: int = 1,
                  lines_no: str = '1 2 3 4',
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -16,7 +17,7 @@ def __init__(self,
         '''
 
         # Client model | Opening
-        clientObject = Model.clientModel.factory.create('ns0:opening')
+        clientObject = model.clientModel.factory.create('ns0:opening')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -36,4 +37,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Opening to client model
-        Model.clientModel.service.set_opening(clientObject)
+        model.clientModel.service.set_opening(clientObject)
diff --git a/RFEM/BasicObjects/section.py b/RFEM/BasicObjects/section.py
index 016b76eb..93995b43 100644
--- a/RFEM/BasicObjects/section.py
+++ b/RFEM/BasicObjects/section.py
@@ -6,7 +6,8 @@ def __init__(self,
                  name: str = 'IPE 300',
                  material_no: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -18,7 +19,7 @@ def __init__(self,
         '''
 
         # Client model | Section
-        clientObject = Model.clientModel.factory.create('ns0:section')
+        clientObject = model.clientModel.factory.create('ns0:section')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -41,4 +42,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Section to client model
-        Model.clientModel.service.set_section(clientObject)
+        model.clientModel.service.set_section(clientObject)
diff --git a/RFEM/BasicObjects/solid.py b/RFEM/BasicObjects/solid.py
index 56edf3e3..ced3bb09 100644
--- a/RFEM/BasicObjects/solid.py
+++ b/RFEM/BasicObjects/solid.py
@@ -7,7 +7,8 @@ def __init__(self,
                  boundary_surfaces_no: str = '1 2',
                  material_no: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -19,7 +20,7 @@ def __init__(self,
         '''
 
         # Client model | Solid
-        clientObject = Model.clientModel.factory.create('ns0:solid')
+        clientObject = model.clientModel.factory.create('ns0:solid')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -42,7 +43,7 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Surface to client model
-        Model.clientModel.service.set_solid(clientObject)
+        model.clientModel.service.set_solid(clientObject)
 
     @staticmethod
     def Standard(
@@ -50,7 +51,8 @@ def Standard(
                  boundary_surfaces_no: str = '1 2',
                  material_no: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -62,7 +64,7 @@ def Standard(
         '''
 
         # Client model | Solid
-        clientObject = Model.clientModel.factory.create('ns0:solid')
+        clientObject = model.clientModel.factory.create('ns0:solid')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -88,7 +90,7 @@ def Standard(
                 clientObject[key] = params[key]
 
         # Add Surface to client model
-        Model.clientModel.service.set_solid(clientObject)
+        model.clientModel.service.set_solid(clientObject)
 
     @staticmethod
     def Gas(
@@ -96,7 +98,8 @@ def Gas(
                  boundary_surfaces_no: str = '1 2',
                  material_no: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -108,7 +111,7 @@ def Gas(
         '''
 
         # Client model | Solid
-        clientObject = Model.clientModel.factory.create('ns0:solid')
+        clientObject = model.clientModel.factory.create('ns0:solid')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -134,7 +137,7 @@ def Gas(
                 clientObject[key] = params[key]
 
         # Add Surface to client model
-        Model.clientModel.service.set_solid(clientObject)
+        model.clientModel.service.set_solid(clientObject)
 
     @staticmethod
     def Contact(
@@ -142,7 +145,8 @@ def Contact(
                  boundary_surfaces_no: str = '1 2',
                  material_no: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -154,7 +158,7 @@ def Contact(
         '''
 
         # Client model | Solid
-        clientObject = Model.clientModel.factory.create('ns0:solid')
+        clientObject = model.clientModel.factory.create('ns0:solid')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -180,7 +184,7 @@ def Contact(
                 clientObject[key] = params[key]
 
         # Add Surface to client model
-        Model.clientModel.service.set_solid(clientObject)
+        model.clientModel.service.set_solid(clientObject)
 
     @staticmethod
     def Soil(
@@ -188,7 +192,8 @@ def Soil(
              boundary_surfaces_no: str = '1 2',
              material_no: int = 1,
              comment: str = '',
-             params: dict = None):
+             params: dict = None,
+             model = Model):
 
         '''
         Args:
@@ -200,7 +205,7 @@ def Soil(
         '''
 
         # Client model | Solid
-        clientObject = Model.clientModel.factory.create('ns0:solid')
+        clientObject = model.clientModel.factory.create('ns0:solid')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -226,4 +231,4 @@ def Soil(
                 clientObject[key] = params[key]
 
         # Add Surface to client model
-        Model.clientModel.service.set_solid(clientObject)
\ No newline at end of file
+        model.clientModel.service.set_solid(clientObject)
\ No newline at end of file
diff --git a/RFEM/BasicObjects/solidSet.py b/RFEM/BasicObjects/solidSet.py
index a35ab61b..cccc8079 100644
--- a/RFEM/BasicObjects/solidSet.py
+++ b/RFEM/BasicObjects/solidSet.py
@@ -7,7 +7,8 @@ def __init__(self,
                  solids_no: str = '1 2',
                  solid_set_type = SetType.SET_TYPE_GROUP,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -19,7 +20,7 @@ def __init__(self,
         '''
 
         # Client model | Solid Set
-        clientObject = Model.clientModel.factory.create('ns0:solid_set')
+        clientObject = model.clientModel.factory.create('ns0:solid_set')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -42,14 +43,15 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Solid Set to client model
-        Model.clientModel.service.set_solid_set(clientObject)
+        model.clientModel.service.set_solid_set(clientObject)
 
     @staticmethod
     def ContinuousSolids(
                  no: int = 1,
                  solids_no: str = '1 2',
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -60,7 +62,7 @@ def ContinuousSolids(
         '''
 
         # Client model | Solid Set
-        clientObject = Model.clientModel.factory.create('ns0:solid_set')
+        clientObject = model.clientModel.factory.create('ns0:solid_set')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -83,14 +85,15 @@ def ContinuousSolids(
                 clientObject[key] = params[key]
 
         # Add Solid Set to client model
-        Model.clientModel.service.set_solid_set(clientObject)
+        model.clientModel.service.set_solid_set(clientObject)
 
     @staticmethod
     def GroupOfSolids(
                  no: int = 1,
                  solids_no: str = '1 2',
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -101,7 +104,7 @@ def GroupOfSolids(
         '''
 
         # Client model | Solid Set
-        clientObject = Model.clientModel.factory.create('ns0:solid_set')
+        clientObject = model.clientModel.factory.create('ns0:solid_set')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -124,4 +127,4 @@ def GroupOfSolids(
                 clientObject[key] = params[key]
 
         # Add Solid Set to client model
-        Model.clientModel.service.set_solid_set(clientObject)
+        model.clientModel.service.set_solid_set(clientObject)
diff --git a/RFEM/BasicObjects/surface.py b/RFEM/BasicObjects/surface.py
index a2b2e24e..224f47c6 100644
--- a/RFEM/BasicObjects/surface.py
+++ b/RFEM/BasicObjects/surface.py
@@ -2,7 +2,7 @@
 from RFEM.initModel import Model, clearAtributes, ConvertToDlString
 import math
 
-def CreateGeometryAndSetToModel(no, surface_type, boundary_lines_no, geometry_type, geometry_type_parameters, thickness = None, comment = None, params = None):
+def CreateGeometryAndSetToModel(no, surface_type, boundary_lines_no, geometry_type, geometry_type_parameters, thickness = None, comment = None, params = None, model = Model):
     '''
         Args:
             no (int): Surface Tag
@@ -23,7 +23,7 @@ def CreateGeometryAndSetToModel(no, surface_type, boundary_lines_no, geometry_ty
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         '''
     # Client model | Surface
-    clientObject = Model.clientModel.factory.create('ns0:surface')
+    clientObject = model.clientModel.factory.create('ns0:surface')
 
     # Clears object atributes | Sets all atributes to None
     clearAtributes(clientObject)
@@ -40,7 +40,7 @@ def CreateGeometryAndSetToModel(no, surface_type, boundary_lines_no, geometry_ty
         if len(geometry_type_parameters) != 4:
             raise Exception('WARNING: The geometry type parameter needs to be of length 4. Kindly check list inputs for completeness and correctness.')
         for line in boundary_lines_list:
-            if Model.clientModel.service.get_line(int(line))['type'] != 'TYPE_NURBS':
+            if model.clientModel.service.get_line(int(line))['type'] != 'TYPE_NURBS':
                 raise Exception('WARNING: For a NURBS Surface, the boundary lines need to be NURBS Curves')
         clientObject.nurbs_control_point_count_in_direction_u = geometry_type_parameters[0]
         clientObject.nurbs_control_point_count_in_direction_v = geometry_type_parameters[1]
@@ -82,7 +82,7 @@ def CreateGeometryAndSetToModel(no, surface_type, boundary_lines_no, geometry_ty
             clientObject[key] = params[key]
 
     # Add Surface to client model
-    Model.clientModel.service.set_surface(clientObject)
+    model.clientModel.service.set_surface(clientObject)
 
 class Surface():
     def __init__(self,
@@ -90,7 +90,8 @@ def __init__(self,
                  boundary_lines_no: str = '1 2 3 4',
                  thickness: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -102,7 +103,7 @@ def __init__(self,
         '''
 
         # Client model | Surface
-        clientObject = Model.clientModel.factory.create('ns0:surface')
+        clientObject = model.clientModel.factory.create('ns0:surface')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -125,7 +126,7 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Surface to client model
-        Model.clientModel.service.set_surface(clientObject)
+        model.clientModel.service.set_surface(clientObject)
 
     @staticmethod
     def Standard(
@@ -135,7 +136,8 @@ def Standard(
                  boundary_lines_no: str = '1 2 3 4',
                  thickness: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -154,7 +156,7 @@ def Standard(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         '''
 
-        CreateGeometryAndSetToModel(no, SurfaceType.TYPE_STANDARD, boundary_lines_no, geometry_type, geometry_type_parameters, thickness, comment, params)
+        CreateGeometryAndSetToModel(no, SurfaceType.TYPE_STANDARD, boundary_lines_no, geometry_type, geometry_type_parameters, thickness, comment, params, model)
 
     @staticmethod
     def WithoutThickness(
@@ -163,7 +165,8 @@ def WithoutThickness(
                  geometry_type_parameters = None,
                  boundary_lines_no: str = '1 2 3 4',
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -181,7 +184,7 @@ def WithoutThickness(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         '''
 
-        CreateGeometryAndSetToModel(no, SurfaceType.TYPE_WITHOUT_THICKNESS, boundary_lines_no, geometry_type, geometry_type_parameters, comment=comment, params=params)
+        CreateGeometryAndSetToModel(no, SurfaceType.TYPE_WITHOUT_THICKNESS, boundary_lines_no, geometry_type, geometry_type_parameters, comment=comment, params=params, model=model)
 
     @staticmethod
     def Rigid(
@@ -190,7 +193,8 @@ def Rigid(
                  geometry_type_parameters = None,
                  boundary_lines_no: str = '1 2 3 4',
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -208,7 +212,7 @@ def Rigid(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         '''
 
-        CreateGeometryAndSetToModel(no, SurfaceType.TYPE_RIGID, boundary_lines_no, geometry_type, geometry_type_parameters, comment=comment, params=params)
+        CreateGeometryAndSetToModel(no, SurfaceType.TYPE_RIGID, boundary_lines_no, geometry_type, geometry_type_parameters, comment=comment, params=params, model=model)
 
     @staticmethod
     def Membrane(
@@ -218,7 +222,8 @@ def Membrane(
                  boundary_lines_no: str = '1 2 3 4',
                  thickness: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -237,7 +242,7 @@ def Membrane(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         '''
 
-        CreateGeometryAndSetToModel(no, SurfaceType.TYPE_WITHOUT_THICKNESS, boundary_lines_no, geometry_type, geometry_type_parameters, thickness, comment, params)
+        CreateGeometryAndSetToModel(no, SurfaceType.TYPE_WITHOUT_THICKNESS, boundary_lines_no, geometry_type, geometry_type_parameters, thickness, comment, params, model)
 
     @staticmethod
     def WithoutMemberaneTension(
@@ -247,7 +252,8 @@ def WithoutMemberaneTension(
                  boundary_lines_no: str = '1 2 3 4',
                  thickness: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -266,7 +272,7 @@ def WithoutMemberaneTension(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         '''
 
-        CreateGeometryAndSetToModel(no, SurfaceType.TYPE_WITHOUT_THICKNESS, boundary_lines_no, geometry_type, geometry_type_parameters, thickness, comment, params)
+        CreateGeometryAndSetToModel(no, SurfaceType.TYPE_WITHOUT_THICKNESS, boundary_lines_no, geometry_type, geometry_type_parameters, thickness, comment, params, model)
 
     @staticmethod
     def LoadDistribution(
@@ -282,7 +288,8 @@ def LoadDistribution(
                  loaded_members = None,
                  loaded_lines = None,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -302,7 +309,7 @@ def LoadDistribution(
         '''
 
         # Client model | Surface
-        clientObject = Model.clientModel.factory.create('ns0:surface')
+        clientObject = model.clientModel.factory.create('ns0:surface')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -351,4 +358,4 @@ def LoadDistribution(
                 clientObject[key] = params[key]
 
         # Add Surface to client model
-        Model.clientModel.service.set_surface(clientObject)
+        model.clientModel.service.set_surface(clientObject)
diff --git a/RFEM/BasicObjects/surfaceSet.py b/RFEM/BasicObjects/surfaceSet.py
index 25994250..c4d5d825 100644
--- a/RFEM/BasicObjects/surfaceSet.py
+++ b/RFEM/BasicObjects/surfaceSet.py
@@ -7,7 +7,8 @@ def __init__(self,
                  surfaces_no: str = '2 4 7',
                  surface_set_type = SetType.SET_TYPE_GROUP,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -19,7 +20,7 @@ def __init__(self,
         '''
 
         # Client model | Surface Set
-        clientObject = Model.clientModel.factory.create('ns0:surface_set')
+        clientObject = model.clientModel.factory.create('ns0:surface_set')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -42,14 +43,15 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Surface Set to client model
-        Model.clientModel.service.set_surface_set(clientObject)
+        model.clientModel.service.set_surface_set(clientObject)
 
     @staticmethod
     def ContinuousSurfaces(
                  no: int = 1,
                  surfaces_no: str = '2 4 7',
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -61,7 +63,7 @@ def ContinuousSurfaces(
         '''
 
         # Client model | Surface Set
-        clientObject = Model.clientModel.factory.create('ns0:surface_set')
+        clientObject = model.clientModel.factory.create('ns0:surface_set')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -84,14 +86,15 @@ def ContinuousSurfaces(
                 clientObject[key] = params[key]
 
         # Add Surface Set to client model
-        Model.clientModel.service.set_surface_set(clientObject)
+        model.clientModel.service.set_surface_set(clientObject)
 
     @staticmethod
     def GroupOfSurfaces(
                  no: int = 1,
                  surfaces_no: str = '2 4 7',
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -102,7 +105,7 @@ def GroupOfSurfaces(
         '''
 
         # Client model | Surface Set
-        clientObject = Model.clientModel.factory.create('ns0:surface_set')
+        clientObject = model.clientModel.factory.create('ns0:surface_set')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -125,4 +128,4 @@ def GroupOfSurfaces(
                 clientObject[key] = params[key]
 
         # Add Surface Set to client model
-        Model.clientModel.service.set_surface_set(clientObject)
+        model.clientModel.service.set_surface_set(clientObject)
diff --git a/RFEM/BasicObjects/thickness.py b/RFEM/BasicObjects/thickness.py
index b5fc84d8..51dd5be2 100644
--- a/RFEM/BasicObjects/thickness.py
+++ b/RFEM/BasicObjects/thickness.py
@@ -12,7 +12,8 @@ def __init__(self,
                  material_no: int = 1,
                  uniform_thickness_d: float = 0.20,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -25,7 +26,7 @@ def __init__(self,
         '''
 
         # Client model | Thickness
-        clientObject = Model.clientModel.factory.create('ns0:thickness')
+        clientObject = model.clientModel.factory.create('ns0:thickness')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -56,7 +57,7 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Thickness to client model
-        Model.clientModel.service.set_thickness(clientObject)
+        model.clientModel.service.set_thickness(clientObject)
 
     @staticmethod
     def Uniform(
@@ -65,7 +66,8 @@ def Uniform(
                  material_no: int = 1,
                  properties = [0.2],
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -78,7 +80,7 @@ def Uniform(
         '''
 
         # Client model | Thickness
-        clientObject = Model.clientModel.factory.create('ns0:thickness')
+        clientObject = model.clientModel.factory.create('ns0:thickness')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -111,7 +113,7 @@ def Uniform(
                 clientObject[key] = params[key]
 
         # Add Thickness to client model
-        Model.clientModel.service.set_thickness(clientObject)
+        model.clientModel.service.set_thickness(clientObject)
 
     @staticmethod
     def Variable_3Nodes(
@@ -120,7 +122,8 @@ def Variable_3Nodes(
                  material_no: int = 1,
                  properties = None,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -134,7 +137,7 @@ def Variable_3Nodes(
         '''
 
         # Client model | Thickness
-        clientObject = Model.clientModel.factory.create('ns0:thickness')
+        clientObject = model.clientModel.factory.create('ns0:thickness')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -174,7 +177,7 @@ def Variable_3Nodes(
                 clientObject[key] = params[key]
 
         # Add Thickness to client model
-        Model.clientModel.service.set_thickness(clientObject)
+        model.clientModel.service.set_thickness(clientObject)
 
     @staticmethod
     def Variable_2NodesAndDirection(
@@ -183,7 +186,8 @@ def Variable_2NodesAndDirection(
                  material_no: int = 1,
                  properties = [0.18, 1, 0.18, 2, ThicknessDirection.THICKNESS_DIRECTION_IN_X],
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -198,7 +202,7 @@ def Variable_2NodesAndDirection(
         '''
 
         # Client model | Thickness
-        clientObject = Model.clientModel.factory.create('ns0:thickness')
+        clientObject = model.clientModel.factory.create('ns0:thickness')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -235,7 +239,7 @@ def Variable_2NodesAndDirection(
                 clientObject[key] = params[key]
 
         # Add Thickness to client model
-        Model.clientModel.service.set_thickness(clientObject)
+        model.clientModel.service.set_thickness(clientObject)
 
     @staticmethod
     def Variable_4SurfaceCorners(
@@ -244,7 +248,8 @@ def Variable_4SurfaceCorners(
                  material_no: int = 1,
                  properties = None,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -259,7 +264,7 @@ def Variable_4SurfaceCorners(
         '''
 
         # Client model | Thickness
-        clientObject = Model.clientModel.factory.create('ns0:thickness')
+        clientObject = model.clientModel.factory.create('ns0:thickness')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -301,7 +306,7 @@ def Variable_4SurfaceCorners(
                 clientObject[key] = params[key]
 
         # Add Thickness to client model
-        Model.clientModel.service.set_thickness(clientObject)
+        model.clientModel.service.set_thickness(clientObject)
 
     @staticmethod
     def Variable_Circle(
@@ -310,7 +315,8 @@ def Variable_Circle(
                  material_no: int = 1,
                  properties = None,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -324,7 +330,7 @@ def Variable_Circle(
         '''
 
         # Client model | Thickness
-        clientObject = Model.clientModel.factory.create('ns0:thickness')
+        clientObject = model.clientModel.factory.create('ns0:thickness')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -360,7 +366,7 @@ def Variable_Circle(
                 clientObject[key] = params[key]
 
         # Add Thickness to client model
-        Model.clientModel.service.set_thickness(clientObject)
+        model.clientModel.service.set_thickness(clientObject)
 
     @staticmethod
     def Layers(
@@ -368,7 +374,8 @@ def Layers(
                  name: str = None,
                  layers = [[0, 1, 0.2, 0.0, '']],
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         NOTE: Available only for Special Solution Add-on Multilayer Surfaces.
@@ -384,11 +391,11 @@ def Layers(
         '''
 
         # Check if Multilayer Surfaces Add-on is ON.
-        if not GetAddonStatus(Model.clientModel, AddOn.multilayer_surfaces_design_active):
-            SetAddonStatus(Model.clientModel, AddOn.multilayer_surfaces_design_active, True)
+        if not GetAddonStatus(model.clientModel, AddOn.multilayer_surfaces_design_active):
+            SetAddonStatus(model.clientModel, AddOn.multilayer_surfaces_design_active, True)
 
         # Client model | Thickness
-        clientObject = Model.clientModel.factory.create('ns0:thickness')
+        clientObject = model.clientModel.factory.create('ns0:thickness')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -405,10 +412,10 @@ def Layers(
         clientObject.type = ThicknessType.TYPE_LAYERS.name
 
         # Layers
-        clientObject.layers_reference_table = Model.clientModel.factory.create('ns0:thickness.layers_reference_table')
+        clientObject.layers_reference_table = model.clientModel.factory.create('ns0:thickness.layers_reference_table')
 
         for i,j in enumerate(layers):
-            tlrt = Model.clientModel.factory.create('ns0:thickness_layers_reference_table')
+            tlrt = model.clientModel.factory.create('ns0:thickness_layers_reference_table')
             tlrt.no = no
             tlrt.layer_no = i+1
             tlrt.layer_type = None
@@ -432,7 +439,7 @@ def Layers(
                 clientObject[key] = params[key]
 
         # Add Thickness to client model
-        Model.clientModel.service.set_thickness(clientObject)
+        model.clientModel.service.set_thickness(clientObject)
 
     @staticmethod
     def ShapeOrthotropy(
@@ -444,7 +451,8 @@ def ShapeOrthotropy(
                  consideration_of_self_weight = [ThicknessShapeOrthotropySelfWeightDefinitionType.SELF_WEIGHT_COMPUTED_FROM_PARAMETERS, 0.18],
                  parameters = [0.18, 0.18],
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -480,7 +488,7 @@ def ShapeOrthotropy(
         '''
 
         # Client model | Thickness
-        clientObject = Model.clientModel.factory.create('ns0:thickness')
+        clientObject = model.clientModel.factory.create('ns0:thickness')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -575,7 +583,7 @@ def ShapeOrthotropy(
                 clientObject[key] = params[key]
 
         # Add Thickness to client model
-        Model.clientModel.service.set_thickness(clientObject)
+        model.clientModel.service.set_thickness(clientObject)
 
     @staticmethod
     def StiffnessMatrix(
@@ -587,7 +595,8 @@ def StiffnessMatrix(
                  coefficient_of_thermal_expansion: float = 0,
                  stiffness_matrix = [[0, 0, 0, 0, 0, 0],[0, 0, 0],[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -617,7 +626,7 @@ def StiffnessMatrix(
         '''
 
         # Client model | Thickness
-        clientObject = Model.clientModel.factory.create('ns0:thickness')
+        clientObject = model.clientModel.factory.create('ns0:thickness')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -683,4 +692,4 @@ def StiffnessMatrix(
                 clientObject[key] = params[key]
 
         # Add Thickness to client model
-        Model.clientModel.service.set_thickness(clientObject)
+        model.clientModel.service.set_thickness(clientObject)
diff --git a/RFEM/Calculate/meshSettings.py b/RFEM/Calculate/meshSettings.py
index 5ee0b920..9829de8c 100644
--- a/RFEM/Calculate/meshSettings.py
+++ b/RFEM/Calculate/meshSettings.py
@@ -104,7 +104,8 @@ def __init__(self,
                  commonConfig: dict = ComonMeshConfig,
                  surfaceConfig: dict = SurfacesMeshQualityConfig,
                  solidConfig: dict = SolidsMeshQualityConfig,
-                 windConfig: dict = WindSimulationMeshConfig):
+                 windConfig: dict = WindSimulationMeshConfig,
+                 model = Model):
         """
         The object is automaticaly created therefore we can assume that it will not be created but only updated.
         Only posititve values are recognized.
@@ -116,12 +117,12 @@ def __init__(self,
             windConfig: wind specific parameters; use only when Wind Simulation Add-on is active
         """
         # Get current mesh settings
-        config = Model.clientModel.service.get_mesh_settings()
+        config = model.clientModel.service.get_mesh_settings()
 
         clientObject = {}
         for i in config:
             if i[0] == 'windSimulationMeshConfig':
-                if GetAddonStatus(Model.clientModel, AddOn.wind_simulation_active):
+                if GetAddonStatus(model.clientModel, AddOn.wind_simulation_active):
                     clientObject[i[0]] = config[i[0]]
             else:
                 clientObject[i[0]] = config[i[0]]
@@ -144,36 +145,36 @@ def __init__(self,
                         clientObject['SolidsMeshQualityConfig']['QualityCriteriaConfigForSolids'][key_] = solidConfig['QualityCriteriaConfigForSolids'][key_]
             elif solidConfig[key]:
                 clientObject['SolidsMeshQualityConfig'][key] = solidConfig[key]
-        if  GetAddonStatus(Model.clientModel, AddOn.wind_simulation_active):
+        if  GetAddonStatus(model.clientModel, AddOn.wind_simulation_active):
             for key in windConfig:
                 if windConfig[key]:
                     clientObject['windSimulationMeshConfig'][key] = windConfig[key]
 
         # Add Mesh Settings to client model
-        Model.clientModel.service.set_mesh_settings(clientObject)
+        model.clientModel.service.set_mesh_settings(clientObject)
 
     @staticmethod
-    def set_mesh_settings(all_settings):
+    def set_mesh_settings(all_settings, model = Model):
         new_sett = {}
 
         for i in all_settings:
             if i[0] == 'windSimulationMeshConfig':
-                if GetAddonStatus(Model.clientModel, AddOn.wind_simulation_active):
+                if GetAddonStatus(model.clientModel, AddOn.wind_simulation_active):
                     new_sett['wind_simulation_active'] = all_settings['wind_simulation_active']
             else:
                 new_sett[i[0]] = all_settings[i[0]]
 
-        Model.clientModel.service.set_mesh_settings(new_sett)
+        model.clientModel.service.set_mesh_settings(new_sett)
 
-def GetModelInfo():
-    return Model.clientModel.service.get_model_info()
+def GetModelInfo(model = Model):
+    return model.clientModel.service.get_model_info()
 
-def GetMeshStatistics():
-    mesh_stats = Model.clientModel.service.get_mesh_statistics()
-    return Model.clientModel.dict(mesh_stats)
+def GetMeshStatistics(model = Model):
+    mesh_stats = model.clientModel.service.get_mesh_statistics()
+    return model.clientModel.dict(mesh_stats)
 
-def GenerateMesh():
-    Model.clientModel.service.generate_mesh()
+def GenerateMesh(model = Model):
+    model.clientModel.service.generate_mesh()
 
-def GetMeshSettings():
-    return Model.clientModel.service.get_mesh_settings()
+def GetMeshSettings(model = Model):
+    return model.clientModel.service.get_mesh_settings()
diff --git a/RFEM/Calculate/optimizationSettings.py b/RFEM/Calculate/optimizationSettings.py
index 8dd11761..d86babef 100644
--- a/RFEM/Calculate/optimizationSettings.py
+++ b/RFEM/Calculate/optimizationSettings.py
@@ -7,7 +7,8 @@ def __init__(self,
         general_keep_best_number_model_mutations = 10,
         general_optimize_on = OptimizeOnType.E_OPTIMIZE_ON_TYPE_MIN_WHOLE_WEIGHT,
         general_optimizer = Optimizer.E_OPTIMIZER_TYPE_ALL_MUTATIONS,
-        general_number_random_mutations = 0.2):
+        general_number_random_mutations = 0.2,
+        model = Model):
         """
         The object is automaticaly created therefore we can assume,
         that it will not be created but only updated/changed.
@@ -20,7 +21,7 @@ def __init__(self,
             general_number_random_mutations (float): Number of random mutations
         """
 
-        opt_settings = Model.clientModel.service.get_optimization_settings()
+        opt_settings = model.clientModel.service.get_optimization_settings()
         opt_settings.general_optimization_active = general_optimization_active
         opt_settings.general_keep_best_number_model_mutations = general_keep_best_number_model_mutations
         opt_settings.general_optimize_on = general_optimize_on.name
@@ -28,12 +29,12 @@ def __init__(self,
         opt_settings.general_number_random_mutations = general_number_random_mutations
 
         # Set Optimization settings to client model
-        Model.clientModel.service.set_optimization_settings(opt_settings)
+        model.clientModel.service.set_optimization_settings(opt_settings)
 
     @staticmethod
-    def get_optimization_settings():
-        return Model.clientModel.service.get_optimization_settings()
+    def get(model = Model):
+        return model.clientModel.service.get_optimization_settings()
 
     @staticmethod
-    def set_optimization_settings(opt_settings):
-        Model.clientModel.service.set_optimization_settings(opt_settings)
\ No newline at end of file
+    def set(opt_settings, model = Model):
+        model.clientModel.service.set_optimization_settings(opt_settings)
\ No newline at end of file
diff --git a/RFEM/ConcreteDesign/ConcreteServiceabilityConfigurations.py b/RFEM/ConcreteDesign/ConcreteServiceabilityConfigurations.py
index 44bf39ab..825129ca 100644
--- a/RFEM/ConcreteDesign/ConcreteServiceabilityConfigurations.py
+++ b/RFEM/ConcreteDesign/ConcreteServiceabilityConfigurations.py
@@ -1,5 +1,4 @@
 from RFEM.initModel import Model, clearAtributes, ConvertToDlString
-from RFEM.enums import *
 
 class ConcreteServiceabilityConfiguration():
 
@@ -12,7 +11,8 @@ def __init__(self,
                 surface_sets = '',
                 nodes = '',
                 comment: str = '',
-                params: dict = None):
+                params: dict = None,
+                model = Model):
         """
         Args:
             no (int): Configuration Tag
@@ -27,7 +27,7 @@ def __init__(self,
         """
 
         # Client model | Concrete Durabilities
-        clientObject = Model.clientModel.factory.create('ns0:sls_configuration')
+        clientObject = model.clientModel.factory.create('ns0:sls_configuration')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -63,4 +63,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Global Parameter to client model
-        Model.clientModel.service.set_sls_configuration(clientObject)
\ No newline at end of file
+        model.clientModel.service.set_sls_configuration(clientObject)
\ No newline at end of file
diff --git a/RFEM/ConcreteDesign/ConcreteUltimateConfigurations.py b/RFEM/ConcreteDesign/ConcreteUltimateConfigurations.py
index d80a5b73..0e79ea6d 100644
--- a/RFEM/ConcreteDesign/ConcreteUltimateConfigurations.py
+++ b/RFEM/ConcreteDesign/ConcreteUltimateConfigurations.py
@@ -1,5 +1,4 @@
 from RFEM.initModel import Model, clearAtributes, ConvertToDlString
-from RFEM.enums import *
 
 class ConcreteUltimateConfiguration():
 
@@ -12,7 +11,8 @@ def __init__(self,
                 surface_sets = '',
                 nodes = '',
                 comment: str = '',
-                params: dict = None):
+                params: dict = None,
+                model = Model):
         """
         Args:
             no (int): Configuration Tag
@@ -27,7 +27,7 @@ def __init__(self,
         """
 
         # Client model | Concrete Durabilities
-        clientObject = Model.clientModel.factory.create('ns0:uls_configuration')
+        clientObject = model.clientModel.factory.create('ns0:uls_configuration')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -63,4 +63,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Global Parameter to client model
-        Model.clientModel.service.set_uls_configuration(clientObject)
\ No newline at end of file
+        model.clientModel.service.set_uls_configuration(clientObject)
\ No newline at end of file
diff --git a/RFEM/Imperfections/imperfectionCase.py b/RFEM/Imperfections/imperfectionCase.py
index 38ff6257..a3aefeb6 100644
--- a/RFEM/Imperfections/imperfectionCase.py
+++ b/RFEM/Imperfections/imperfectionCase.py
@@ -5,7 +5,8 @@ def __init__(self,
                  no: int = 1,
                  assigned_to_load_cases: str = '1',
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -15,7 +16,7 @@ def __init__(self,
         '''
 
         # Client model | Imperfection Case
-        clientObject = Model.clientModel.factory.create('ns0:imperfection_case')
+        clientObject = model.clientModel.factory.create('ns0:imperfection_case')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -35,4 +36,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Imperfection Case to client model
-        Model.clientModel.service.set_imperfection_case(clientObject)
+        model.clientModel.service.set_imperfection_case(clientObject)
diff --git a/RFEM/ImportExport/exports.py b/RFEM/ImportExport/exports.py
index 74442bed..750221cc 100644
--- a/RFEM/ImportExport/exports.py
+++ b/RFEM/ImportExport/exports.py
@@ -3,52 +3,52 @@
 from RFEM.initModel import Model
 from RFEM.enums import IFCExportType, ObjectTypes
 
-def ExportDetailsOfDesignToCSV(targetDirectoryPath: str):
+def ExportDetailsOfDesignToCSV(targetDirectoryPath: str, model = Model):
     '''
     Export details of design to CSV format.
 
     Args:
         targetDirectoryPath (string): Destination path to the directory
     '''
-    Model.clientModel.service.export_details_of_design_to_csv(targetDirectoryPath)
+    model.clientModel.service.export_details_of_design_to_csv(targetDirectoryPath)
 
-def ExportResultTablesToCSV(targetDirectoryPath: str):
+def ExportResultTablesToCSV(targetDirectoryPath: str, model = Model):
     '''
     Export result tables to CSV format.
 
     Args:
         targetDirectoryPath (string): Destination path to the directory
     '''
-    Model.clientModel.service.export_result_tables_to_csv(targetDirectoryPath)
+    model.clientModel.service.export_result_tables_to_csv(targetDirectoryPath)
 
-def ExportResultTablesToXML(targetFilePath: str):
+def ExportResultTablesToXML(targetFilePath: str, model = Model):
     '''
     Export result tables to XML format.
 
     Args:
         targetFilePath (string): Destination path to the file
     '''
-    Model.clientModel.service.export_result_tables_to_xml(targetFilePath)
+    model.clientModel.service.export_result_tables_to_xml(targetFilePath)
 
-def ExportResultTablesWithDetaliedMembersResultsToCSV(targetDirectoryPath: str):
+def ExportResultTablesWithDetaliedMembersResultsToCSV(targetDirectoryPath: str, model = Model):
     '''
     Export result tables with detailed member results to CSV format.
 
     Args:
         targetDirectoryPath (string): Destination path to the directory
     '''
-    Model.clientModel.service.export_result_tables_with_detailed_members_results_to_csv(targetDirectoryPath)
+    model.clientModel.service.export_result_tables_with_detailed_members_results_to_csv(targetDirectoryPath)
 
-def ExportResultTablesWithDetaliedMembersResultsToXML(targetFilePath: str):
+def ExportResultTablesWithDetaliedMembersResultsToXML(targetFilePath: str, model = Model):
     '''
     Export result tables with detailed member results to XML format.
 
     Args:
         targetFilePath (string): Destination path to the file
     '''
-    Model.clientModel.service.export_result_tables_with_detailed_members_results_to_xml(targetFilePath)
+    model.clientModel.service.export_result_tables_with_detailed_members_results_to_xml(targetFilePath)
 
-def ExportTo(targetFilePath: str):
+def ExportTo(targetFilePath: str, model = Model):
     '''
     Export active model to format specified by suffix of the destination path to file.
     Supported formats are .xml, .vtk, .xlsx, .saf, .gltf, and .glb.
@@ -56,7 +56,7 @@ def ExportTo(targetFilePath: str):
     Args:
         targetFilePath (string): Destination path to the file
     '''
-    Model.clientModel.service.export_to(targetFilePath)
+    model.clientModel.service.export_to(targetFilePath)
 
 IFCExportSettings = {
     'mirror_axis_x': False,
@@ -102,7 +102,7 @@ def ObjectLocations(locationsArray):
     return {'location': locationsArray}
 
 
-def ExportToIFC(targetFilePath: str, IFCSettings: IFCExportSettings, ObjectLoc = None):
+def ExportToIFC(targetFilePath: str, IFCSettings: IFCExportSettings, ObjectLoc = None, model = Model):
     '''
     Use this function to export active model t o IFC.
 
@@ -112,20 +112,20 @@ def ExportToIFC(targetFilePath: str, IFCSettings: IFCExportSettings, ObjectLoc =
         ObjectLoc (array): array of ObjectLocation dictionary. If left out, all objects will be exported to IFC.
     '''
     if ObjectLoc:
-        Model.clientModel.service.export_to_ifc(targetFilePath, IFCSettings, ObjectLoc)
+        model.clientModel.service.export_to_ifc(targetFilePath, IFCSettings, ObjectLoc)
     else:
-        Model.clientModel.service.export_to_ifc(targetFilePath, IFCSettings)
+        model.clientModel.service.export_to_ifc(targetFilePath, IFCSettings)
 
-def ExportToTables(targetDirectoryPath: str):
+def ExportToTables(targetDirectoryPath: str, model = Model):
     '''
     Export active model to tables.
 
     Args:
         targetDirectoryPath (string): Destination path to the directory
     '''
-    Model.clientModel.service.export_to_tables(targetDirectoryPath)
+    model.clientModel.service.export_to_tables(targetDirectoryPath)
 
-def GetTableExportConfigManager():
+def GetTableExportConfigManager(model = Model):
     '''
     Export active model to tables.
     Use this fuction to obtain input parameter to SetTableExportConfigManager()
@@ -133,9 +133,9 @@ def GetTableExportConfigManager():
     Return:
         Table export configuration.
     '''
-    return Model.clientModel.service.get_table_export_config_manager()
+    return model.clientModel.service.get_table_export_config_manager()
 
-def SetTableExportConfigManager(TableExportConfigManager):
+def SetTableExportConfigManager(TableExportConfigManager, model = Model):
     '''
     Create or change table export settings.
     To obtain input data (TableExportConfigManager) call GetTableExportConfigManager() first.
@@ -143,7 +143,7 @@ def SetTableExportConfigManager(TableExportConfigManager):
     Args:
         TableExportConfigManager (dict): Table export config
     '''
-    Model.clientModel.service.set_table_export_config_manager(TableExportConfigManager)
+    model.clientModel.service.set_table_export_config_manager(TableExportConfigManager)
 
 def ParseCSVResultsFromSelectedFileToDict(filePath: str):
 
diff --git a/RFEM/LoadCasesAndCombinations/designSituation.py b/RFEM/LoadCasesAndCombinations/designSituation.py
index 15e58cff..6096c03f 100644
--- a/RFEM/LoadCasesAndCombinations/designSituation.py
+++ b/RFEM/LoadCasesAndCombinations/designSituation.py
@@ -8,7 +8,8 @@ def __init__(self,
                  active: bool = True,
                  name = None,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         """
         Args:
@@ -21,7 +22,7 @@ def __init__(self,
         """
 
         # Client model | Design Situation
-        clientObject = Model.clientModel.factory.create('ns0:design_situation')
+        clientObject = model.clientModel.factory.create('ns0:design_situation')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -49,4 +50,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Design Situation to client model
-        Model.clientModel.service.set_design_situation(clientObject)
+        model.clientModel.service.set_design_situation(clientObject)
diff --git a/RFEM/LoadCasesAndCombinations/loadCase.py b/RFEM/LoadCasesAndCombinations/loadCase.py
index 951a40ee..3d4247d1 100644
--- a/RFEM/LoadCasesAndCombinations/loadCase.py
+++ b/RFEM/LoadCasesAndCombinations/loadCase.py
@@ -9,7 +9,8 @@ def __init__(self,
                  name: str = 'Self-weight',
                  self_weight: list = [True, 0.0, 0.0, 1.0],
                  comment: str = 'Comment',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         '''
         Args:
             no (int): Load Case Tag
@@ -21,7 +22,7 @@ def __init__(self,
         '''
 
         # Client model | Load Case
-        clientObject = Model.clientModel.factory.create('ns0:load_case')
+        clientObject = model.clientModel.factory.create('ns0:load_case')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -68,7 +69,7 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Load Case to client model
-        Model.clientModel.service.set_load_case(clientObject)
+        model.clientModel.service.set_load_case(clientObject)
 
     @staticmethod
     def StaticAnalysis(
@@ -79,7 +80,8 @@ def StaticAnalysis(
             action_category=ActionCategoryType.ACTION_CATEGORY_PERMANENT_G,
             self_weight=[True, 0.0, 0.0, 10.0],
             comment: str = 'Comment',
-            params: dict = None):
+            params: dict = None,
+            model = Model):
         '''
         Args:
             no (int): Load Case Tag
@@ -98,7 +100,7 @@ def StaticAnalysis(
         '''
 
         # Client model | Load Case
-        clientObject = Model.clientModel.factory.create('ns0:load_case')
+        clientObject = model.clientModel.factory.create('ns0:load_case')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -145,4 +147,4 @@ def StaticAnalysis(
                 clientObject[key] = params[key]
 
         # Add Load Case to client model
-        Model.clientModel.service.set_load_case(clientObject)
+        model.clientModel.service.set_load_case(clientObject)
diff --git a/RFEM/LoadCasesAndCombinations/loadCombination.py b/RFEM/LoadCasesAndCombinations/loadCombination.py
index 19a08cf3..08fe107e 100644
--- a/RFEM/LoadCasesAndCombinations/loadCombination.py
+++ b/RFEM/LoadCasesAndCombinations/loadCombination.py
@@ -14,10 +14,11 @@ def __init__(self,
                  to_solve: bool = True,
                  combination_items = [[1.5, 1, 0, False]],
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Load Combination
-        clientObject = Model.clientModel.factory.create('ns0:load_combination')
+        clientObject = model.clientModel.factory.create('ns0:load_combination')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -60,10 +61,10 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Items
-        clientObject.items = Model.clientModel.factory.create('ns0:load_combination.items')
+        clientObject.items = model.clientModel.factory.create('ns0:load_combination.items')
 
         for i,j in enumerate(combination_items):
-            mlvlp = Model.clientModel.factory.create('ns0:load_combination_items')
+            mlvlp = model.clientModel.factory.create('ns0:load_combination_items')
             mlvlp.no = i+1
             mlvlp.factor = combination_items[i][0]
             mlvlp.load_case = combination_items[i][1]
@@ -94,4 +95,4 @@ def __init__(self,
             clientObject.items.load_combination_items.append(mlvlp)
 
         # Add Load Combination to client model
-        Model.clientModel.service.set_load_combination(clientObject)
+        model.clientModel.service.set_load_combination(clientObject)
diff --git a/RFEM/LoadCasesAndCombinations/modalAnalysisSettings.py b/RFEM/LoadCasesAndCombinations/modalAnalysisSettings.py
index 2d90a469..3f4daf7b 100644
--- a/RFEM/LoadCasesAndCombinations/modalAnalysisSettings.py
+++ b/RFEM/LoadCasesAndCombinations/modalAnalysisSettings.py
@@ -9,10 +9,11 @@ def __init__(self,
                  mass_conversion_type = ModalMassConversionType.MASS_CONVERSION_TYPE_Z_COMPONENTS_OF_LOADS,
                  mass_matrix_type = ModalMassMatrixType.MASS_MATRIX_TYPE_CONSISTENT,
                  number_of_modes : int = 4,
-                 acting_masses = [],
+                 acting_masses: list = None,
                  neglect_masses = ModalNeglectMasses.E_NEGLECT_MASSES_NO_NEGLECTION,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Setting Tag
@@ -27,7 +28,7 @@ def __init__(self,
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Surface
-        clientObject = Model.clientModel.factory.create('ns0:modal_analysis_settings')
+        clientObject = model.clientModel.factory.create('ns0:modal_analysis_settings')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -75,4 +76,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Static Analysis Settings to client model
-        Model.clientModel.service.set_modal_analysis_settings(clientObject)
+        model.clientModel.service.set_modal_analysis_settings(clientObject)
diff --git a/RFEM/LoadCasesAndCombinations/resultCombination.py b/RFEM/LoadCasesAndCombinations/resultCombination.py
index 3270be88..ab8bb4c5 100644
--- a/RFEM/LoadCasesAndCombinations/resultCombination.py
+++ b/RFEM/LoadCasesAndCombinations/resultCombination.py
@@ -4,7 +4,8 @@ class ResultCombination():
     def __init__(self,
                  no: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -14,7 +15,7 @@ def __init__(self,
         '''
 
         # Client model | Result Combination
-        clientObject = Model.clientModel.factory.create('ns0:result_combination')
+        clientObject = model.clientModel.factory.create('ns0:result_combination')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -31,4 +32,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Result Combination to client model
-        Model.clientModel.service.set_result_combination(clientObject)
+        model.clientModel.service.set_result_combination(clientObject)
diff --git a/RFEM/LoadCasesAndCombinations/spectralAnalysisSettings.py b/RFEM/LoadCasesAndCombinations/spectralAnalysisSettings.py
index 34ba2637..40d939cd 100644
--- a/RFEM/LoadCasesAndCombinations/spectralAnalysisSettings.py
+++ b/RFEM/LoadCasesAndCombinations/spectralAnalysisSettings.py
@@ -14,7 +14,8 @@ def __init__(self,
                  damping_for_cqc_rule = CqsDampingRule.CONSTANT_FOR_EACH_MODE,
                  constant_d_for_each_mode: float = 0.0,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -33,7 +34,7 @@ def __init__(self,
         '''
 
         # Client model | Surface
-        clientObject = Model.clientModel.factory.create('ns0:spectral_analysis_settings')
+        clientObject = model.clientModel.factory.create('ns0:spectral_analysis_settings')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -80,4 +81,4 @@ def __init__(self,
             for key in params:
                 clientObject[key] = params[key]
         # Add Static Analysis Settings to client model
-        Model.clientModel.service.set_spectral_analysis_settings(clientObject)
+        model.clientModel.service.set_spectral_analysis_settings(clientObject)
diff --git a/RFEM/LoadCasesAndCombinations/stabilityAnalysisSettings.py b/RFEM/LoadCasesAndCombinations/stabilityAnalysisSettings.py
index 8c0f61fc..40b18832 100644
--- a/RFEM/LoadCasesAndCombinations/stabilityAnalysisSettings.py
+++ b/RFEM/LoadCasesAndCombinations/stabilityAnalysisSettings.py
@@ -8,7 +8,8 @@ def __init__(self,
                  no: int = 1,
                  name: str = None,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         '''
         Args:
             no (int): Stability Analysis Setting Tag
@@ -18,7 +19,7 @@ def __init__(self,
         '''
 
         # Client model | Stability Analysis Settings
-        clientObject = Model.clientModel.factory.create('ns0:stability_analysis_settings')
+        clientObject = model.clientModel.factory.create('ns0:stability_analysis_settings')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -52,7 +53,7 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Stability Analysis Settings to client model
-        Model.clientModel.service.set_stability_analysis_settings(clientObject)
+        model.clientModel.service.set_stability_analysis_settings(clientObject)
 
     @staticmethod
     def EigenvalueMethod(
@@ -66,7 +67,8 @@ def EigenvalueMethod(
                  eigenvalue_method = StabilityAnalysisSettingsEigenvalueMethod.EIGENVALUE_METHOD_LANCZOS,
                  matrix_type = StabilityAnalysisSettingsMatrixType.MATRIX_TYPE_STANDARD,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         '''
         Args:
             no (int): Stability Analysis Setting Tag
@@ -94,7 +96,7 @@ def EigenvalueMethod(
             params (dict, optional):
         '''
         # Client model | Stability Analysis Settings
-        clientObject = Model.clientModel.factory.create('ns0:stability_analysis_settings')
+        clientObject = model.clientModel.factory.create('ns0:stability_analysis_settings')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -147,7 +149,7 @@ def EigenvalueMethod(
                 clientObject[key] = params[key]
 
         # Add Stability Analysis Settings to client model
-        Model.clientModel.service.set_stability_analysis_settings(clientObject)
+        model.clientModel.service.set_stability_analysis_settings(clientObject)
 
     @staticmethod
     def IncrementalyMethodWithEigenvalue(
@@ -164,7 +166,8 @@ def IncrementalyMethodWithEigenvalue(
                  eigenvalue_method = StabilityAnalysisSettingsEigenvalueMethod.EIGENVALUE_METHOD_LANCZOS,
                  matrix_type = StabilityAnalysisSettingsMatrixType.MATRIX_TYPE_STANDARD,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         '''
         Args:
             no (int): Stability Analysis Setting Tag
@@ -213,7 +216,7 @@ def IncrementalyMethodWithEigenvalue(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         '''
         # Client model | Stability Analysis Settings
-        clientObject = Model.clientModel.factory.create('ns0:stability_analysis_settings')
+        clientObject = model.clientModel.factory.create('ns0:stability_analysis_settings')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -289,7 +292,7 @@ def IncrementalyMethodWithEigenvalue(
                 clientObject[key] = params[key]
 
         # Add Stability Analysis Settings to client model
-        Model.clientModel.service.set_stability_analysis_settings(clientObject)
+        model.clientModel.service.set_stability_analysis_settings(clientObject)
 
     @staticmethod
     def IncrementalyMethodWithoutEigenvalue(
@@ -301,7 +304,8 @@ def IncrementalyMethodWithoutEigenvalue(
                  stopping_of_load_increasing = None,
                  save_results_of_all_increments: bool = False,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         '''
         Args:
             no (int): Stability Analysis Setting Tag
@@ -341,7 +345,7 @@ def IncrementalyMethodWithoutEigenvalue(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         '''
         # Client model | Stability Analysis Settings
-        clientObject = Model.clientModel.factory.create('ns0:stability_analysis_settings')
+        clientObject = model.clientModel.factory.create('ns0:stability_analysis_settings')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -400,4 +404,4 @@ def IncrementalyMethodWithoutEigenvalue(
                 clientObject[key] = params[key]
 
         # Add Stability Analysis Settings to client model
-        Model.clientModel.service.set_stability_analysis_settings(clientObject)
+        model.clientModel.service.set_stability_analysis_settings(clientObject)
diff --git a/RFEM/LoadCasesAndCombinations/staticAnalysisSettings.py b/RFEM/LoadCasesAndCombinations/staticAnalysisSettings.py
index eb261370..9e2d288d 100644
--- a/RFEM/LoadCasesAndCombinations/staticAnalysisSettings.py
+++ b/RFEM/LoadCasesAndCombinations/staticAnalysisSettings.py
@@ -9,7 +9,8 @@ def __init__(self,
                  name: str = None,
                  analysis_type=StaticAnalysisType.GEOMETRICALLY_LINEAR,
                  comment: str = '',
-                 params: dict = []):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Static Analysis Setting Tag
@@ -19,7 +20,7 @@ def __init__(self,
             params (dict): Parameters
         """
         # Client model | Surface
-        clientObject = Model.clientModel.factory.create('ns0:static_analysis_settings')
+        clientObject = model.clientModel.factory.create('ns0:static_analysis_settings')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -43,7 +44,7 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Static Analysis Settings to client model
-        Model.clientModel.service.set_static_analysis_settings(clientObject)
+        model.clientModel.service.set_static_analysis_settings(clientObject)
 
     @staticmethod
     def GeometricallyLinear(
@@ -56,7 +57,8 @@ def GeometricallyLinear(
                   plate_bending_theory = StaticAnalysisSettingsPlateBendingTheory.PLATE_BENDING_THEORY_MINDLIN,
                   mass_conversion = [False, 0, 0, 0],
                   comment: str = '',
-                  params: dict = []):
+                  params: dict = None,
+                  model = Model):
 
         """
         Args:
@@ -75,7 +77,7 @@ def GeometricallyLinear(
         """
 
         # Client model
-        clientObject = Model.clientModel.factory.create('ns0:static_analysis_settings')
+        clientObject = model.clientModel.factory.create('ns0:static_analysis_settings')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -129,7 +131,7 @@ def GeometricallyLinear(
                 clientObject[key] = params[key]
 
         # Add Static Analysis Settings to client model
-        Model.clientModel.service.set_static_analysis_settings(clientObject)
+        model.clientModel.service.set_static_analysis_settings(clientObject)
 
     @staticmethod
     def LargeDeformation(
@@ -146,7 +148,8 @@ def LargeDeformation(
                   plate_bending_theory = StaticAnalysisSettingsPlateBendingTheory.PLATE_BENDING_THEORY_MINDLIN,
                   mass_conversion = [False, 0, 0, 1],
                   comment: str = '',
-                  params: dict = {'save_results_of_all_load_increments': False}):
+                  params: dict = {'save_results_of_all_load_increments': False},
+                  model = Model):
 
         """
         Args:
@@ -173,7 +176,7 @@ def LargeDeformation(
         """
 
         # Client model
-        clientObject = Model.clientModel.factory.create('ns0:static_analysis_settings')
+        clientObject = model.clientModel.factory.create('ns0:static_analysis_settings')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -252,7 +255,7 @@ def LargeDeformation(
                 clientObject[key] = params[key]
 
         # Add Static Analysis Settings to client model
-        Model.clientModel.service.set_static_analysis_settings(clientObject)
+        model.clientModel.service.set_static_analysis_settings(clientObject)
 
     @staticmethod
     def SecondOrderPDelta(
@@ -270,7 +273,8 @@ def SecondOrderPDelta(
                   plate_bending_theory = StaticAnalysisSettingsPlateBendingTheory.PLATE_BENDING_THEORY_MINDLIN,
                   mass_conversion = [False, 0, 0, 1],
                   comment: str = '',
-                  params: dict = []):
+                  params: dict = None,
+                  model = Model):
         """
         Args:
             no (int): Static Analysis Setting Tag
@@ -294,7 +298,7 @@ def SecondOrderPDelta(
         """
 
         # Client model
-        clientObject = Model.clientModel.factory.create('ns0:static_analysis_settings')
+        clientObject = model.clientModel.factory.create('ns0:static_analysis_settings')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -372,4 +376,4 @@ def SecondOrderPDelta(
                 clientObject[key] = params[key]
 
         # Add Static Analysis Settings to client model
-        Model.clientModel.service.set_static_analysis_settings(clientObject)
+        model.clientModel.service.set_static_analysis_settings(clientObject)
diff --git a/RFEM/Loads/freeLoad.py b/RFEM/Loads/freeLoad.py
index 49fb7629..5fe2c9e4 100644
--- a/RFEM/Loads/freeLoad.py
+++ b/RFEM/Loads/freeLoad.py
@@ -17,7 +17,8 @@ def ConcentratedLoad(
                  load_direction = FreeConcentratedLoadLoadDirection.LOAD_DIRECTION_GLOBAL_Z,
                  load_parameter = [1000, 0, 0],
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -39,7 +40,7 @@ def ConcentratedLoad(
         '''
 
         # Client model | Free Concentrated Load
-        clientObject = Model.clientModel.factory.create('ns0:free_concentrated_load')
+        clientObject = model.clientModel.factory.create('ns0:free_concentrated_load')
 
         # Clears object attributes | Sets all attributes to None
         clearAtributes(clientObject)
@@ -78,7 +79,7 @@ def ConcentratedLoad(
                 clientObject[key] = params[key]
 
         # Add Free Concentrated Load to client model
-        Model.clientModel.service.set_free_concentrated_load(load_case_no, clientObject)
+        model.clientModel.service.set_free_concentrated_load(load_case_no, clientObject)
 
     @staticmethod
     def LineLoad(
@@ -88,9 +89,10 @@ def LineLoad(
                  load_distribution = FreeLineLoadLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
                  load_projection = FreeLoadLoadProjection.LOAD_PROJECTION_XY_OR_UV,
                  load_direction = FreeLineLoadLoadDirection.LOAD_DIRECTION_LOCAL_Z,
-                 load_parameter = [],
+                 load_parameter: list = None,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -110,7 +112,7 @@ def LineLoad(
         '''
 
         # Client model | Free Concentrated Load
-        clientObject = Model.clientModel.factory.create('ns0:free_line_load')
+        clientObject = model.clientModel.factory.create('ns0:free_line_load')
 
         # Clears object attributes | Sets all attributes to None
         clearAtributes(clientObject)
@@ -161,7 +163,7 @@ def LineLoad(
                 clientObject[key] = params[key]
 
         # Add Free Concentrated Load to client model
-        Model.clientModel.service.set_free_line_load(load_case_no, clientObject)
+        model.clientModel.service.set_free_line_load(load_case_no, clientObject)
 
     @staticmethod
     def RectangularLoad(
@@ -171,11 +173,12 @@ def RectangularLoad(
                  load_distribution = FreeRectangularLoadLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
                  load_projection = FreeLoadLoadProjection.LOAD_PROJECTION_XY_OR_UV,
                  load_direction = FreeRectangularLoadLoadDirection.LOAD_DIRECTION_GLOBAL_Z_TRUE,
-                 load_magnitude_parameter = [],
+                 load_magnitude_parameter: list = None,
                  load_location = FreeRectangularLoadLoadLocationRectangle.LOAD_LOCATION_RECTANGLE_CORNER_POINTS,
-                 load_location_parameter = [],
+                 load_location_parameter: list = None,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -215,7 +218,7 @@ def RectangularLoad(
         '''
 
         # Client model | Free Concentrated Load
-        clientObject = Model.clientModel.factory.create('ns0:free_rectangular_load')
+        clientObject = model.clientModel.factory.create('ns0:free_rectangular_load')
 
         # Clears object attributes | Sets all attributes to None
         clearAtributes(clientObject)
@@ -272,10 +275,10 @@ def RectangularLoad(
                 clientObject.load_location_second_x = load_location_parameter[2]
                 clientObject.load_location_second_y = load_location_parameter[3]
 
-                clientObject.load_varying_in_z_parameters = Model.clientModel.factory.create('ns0:free_rectangular_load.load_varying_in_z_parameters')
+                clientObject.load_varying_in_z_parameters = model.clientModel.factory.create('ns0:free_rectangular_load.load_varying_in_z_parameters')
                 varying_in_z = load_location_parameter[4]
                 for i,j in enumerate(varying_in_z):
-                    frllvp = Model.clientModel.factory.create('ns0:free_rectangular_load_load_varying_in_z_parameters')
+                    frllvp = model.clientModel.factory.create('ns0:free_rectangular_load_load_varying_in_z_parameters')
                     frllvp.no = i+1
                     frllvp.distance = varying_in_z[i][0]
                     frllvp.factor = varying_in_z[i][1]
@@ -296,10 +299,10 @@ def RectangularLoad(
                 clientObject.axis_definition_p2_z = load_location_parameter[5][2]
                 clientObject.axis_start_angle = load_location_parameter[6]
 
-                clientObject.load_varying_along_perimeter_parameters = Model.clientModel.factory.create('ns0:free_rectangular_load.load_varying_along_perimeter_parameters')
+                clientObject.load_varying_along_perimeter_parameters = model.clientModel.factory.create('ns0:free_rectangular_load.load_varying_along_perimeter_parameters')
                 varying_along_perimeter = load_location_parameter[7]
                 for i,j in enumerate(varying_along_perimeter):
-                    frllvapp = Model.clientModel.factory.create('ns0:free_rectangular_load_load_varying_along_perimeter_parameters')
+                    frllvapp = model.clientModel.factory.create('ns0:free_rectangular_load_load_varying_along_perimeter_parameters')
                     frllvapp.no = i+1
                     frllvapp.alpha = varying_along_perimeter[i][0] * (pi/180)
                     frllvapp.factor = varying_along_perimeter[i][1]
@@ -313,10 +316,10 @@ def RectangularLoad(
                 clientObject.load_location_second_x = load_location_parameter[2]
                 clientObject.load_location_second_y = load_location_parameter[3]
 
-                clientObject.load_varying_in_z_parameters = Model.clientModel.factory.create('ns0:free_rectangular_load.load_varying_in_z_parameters')
+                clientObject.load_varying_in_z_parameters = model.clientModel.factory.create('ns0:free_rectangular_load.load_varying_in_z_parameters')
                 varying_in_z = load_location_parameter[4]
                 for i,j in enumerate(varying_in_z):
-                    frllvp = Model.clientModel.factory.create('ns0:free_rectangular_load_load_varying_in_z_parameters')
+                    frllvp = model.clientModel.factory.create('ns0:free_rectangular_load_load_varying_in_z_parameters')
                     frllvp.no = i+1
                     frllvp.distance = varying_in_z[i][0]
                     frllvp.factor = varying_in_z[i][1]
@@ -330,10 +333,10 @@ def RectangularLoad(
                 clientObject.axis_definition_p2_z = load_location_parameter[6][2]
                 clientObject.axis_start_angle = load_location_parameter[7]
 
-                clientObject.load_varying_along_perimeter_parameters = Model.clientModel.factory.create('ns0:free_rectangular_load.load_varying_along_perimeter_parameters')
+                clientObject.load_varying_along_perimeter_parameters = model.clientModel.factory.create('ns0:free_rectangular_load.load_varying_along_perimeter_parameters')
                 varying_along_perimeter = load_location_parameter[8]
                 for i,j in enumerate(varying_along_perimeter):
-                    frllvapp = Model.clientModel.factory.create('ns0:free_rectangular_load_load_varying_along_perimeter_parameters')
+                    frllvapp = model.clientModel.factory.create('ns0:free_rectangular_load_load_varying_along_perimeter_parameters')
                     frllvapp.no = i+1
                     frllvapp.alpha = varying_along_perimeter[i][0] * (pi/180)
                     frllvapp.factor = varying_along_perimeter[i][1]
@@ -358,10 +361,10 @@ def RectangularLoad(
                 clientObject.load_location_center_side_a = load_location_parameter[2]
                 clientObject.load_location_center_side_b = load_location_parameter[3]
 
-                clientObject.load_varying_in_z_parameters = Model.clientModel.factory.create('ns0:free_rectangular_load.load_varying_in_z_parameters')
+                clientObject.load_varying_in_z_parameters = model.clientModel.factory.create('ns0:free_rectangular_load.load_varying_in_z_parameters')
                 varying_in_z = load_location_parameter[4]
                 for i,j in enumerate(varying_in_z):
-                    frllvp = Model.clientModel.factory.create('ns0:free_rectangular_load_load_varying_in_z_parameters')
+                    frllvp = model.clientModel.factory.create('ns0:free_rectangular_load_load_varying_in_z_parameters')
                     frllvp.no = i+1
                     frllvp.distance = varying_in_z[i][0]
                     frllvp.factor = varying_in_z[i][1]
@@ -382,10 +385,10 @@ def RectangularLoad(
                 clientObject.axis_definition_p2_z = load_location_parameter[5][2]
                 clientObject.axis_start_angle = load_location_parameter[6]
 
-                clientObject.load_varying_along_perimeter_parameters = Model.clientModel.factory.create('ns0:free_rectangular_load.load_varying_along_perimeter_parameters')
+                clientObject.load_varying_along_perimeter_parameters = model.clientModel.factory.create('ns0:free_rectangular_load.load_varying_along_perimeter_parameters')
                 varying_along_perimeter = load_location_parameter[7]
                 for i,j in enumerate(varying_along_perimeter):
-                    frllvapp = Model.clientModel.factory.create('ns0:free_rectangular_load_load_varying_along_perimeter_parameters')
+                    frllvapp = model.clientModel.factory.create('ns0:free_rectangular_load_load_varying_along_perimeter_parameters')
                     frllvapp.no = i+1
                     frllvapp.alpha = varying_along_perimeter[i][0] * (pi/180)
                     frllvapp.factor = varying_along_perimeter[i][1]
@@ -399,10 +402,10 @@ def RectangularLoad(
                 clientObject.load_location_center_side_a = load_location_parameter[2]
                 clientObject.load_location_center_side_b = load_location_parameter[3]
 
-                clientObject.load_varying_in_z_parameters = Model.clientModel.factory.create('ns0:free_rectangular_load.load_varying_in_z_parameters')
+                clientObject.load_varying_in_z_parameters = model.clientModel.factory.create('ns0:free_rectangular_load.load_varying_in_z_parameters')
                 varying_in_z = load_location_parameter[4]
                 for i,j in enumerate(varying_in_z):
-                    frllvp = Model.clientModel.factory.create('ns0:free_rectangular_load_load_varying_in_z_parameters')
+                    frllvp = model.clientModel.factory.create('ns0:free_rectangular_load_load_varying_in_z_parameters')
                     frllvp.no = i+1
                     frllvp.distance = varying_in_z[i][0]
                     frllvp.factor = varying_in_z[i][1]
@@ -416,10 +419,10 @@ def RectangularLoad(
                 clientObject.axis_definition_p2_z = load_location_parameter[6][2]
                 clientObject.axis_start_angle = load_location_parameter[7]
 
-                clientObject.load_varying_along_perimeter_parameters = Model.clientModel.factory.create('ns0:free_rectangular_load.load_varying_along_perimeter_parameters')
+                clientObject.load_varying_along_perimeter_parameters = model.clientModel.factory.create('ns0:free_rectangular_load.load_varying_along_perimeter_parameters')
                 varying_along_perimeter = load_location_parameter[8]
                 for i,j in enumerate(varying_along_perimeter):
-                    frllvapp = Model.clientModel.factory.create('ns0:free_rectangular_load_load_varying_along_perimeter_parameters')
+                    frllvapp = model.clientModel.factory.create('ns0:free_rectangular_load_load_varying_along_perimeter_parameters')
                     frllvapp.no = i+1
                     frllvapp.alpha = varying_along_perimeter[i][0] * (pi/180)
                     frllvapp.factor = varying_along_perimeter[i][1]
@@ -434,7 +437,7 @@ def RectangularLoad(
                 clientObject[key] = params[key]
 
         # Add Free Concentrated Load to client model
-        Model.clientModel.service.set_free_rectangular_load(load_case_no, clientObject)
+        model.clientModel.service.set_free_rectangular_load(load_case_no, clientObject)
 
     @staticmethod
     def CircularLoad(
@@ -444,9 +447,10 @@ def CircularLoad(
                  load_distribution = FreeCircularLoadLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
                  load_projection = FreeLoadLoadProjection.LOAD_PROJECTION_XY_OR_UV,
                  load_direction = FreeCircularLoadLoadDirection.LOAD_DIRECTION_GLOBAL_Z_TRUE,
-                 load_parameter = [],
+                 load_parameter: list = None,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -466,7 +470,7 @@ def CircularLoad(
         '''
 
         # Client model | Free Concentrated Load
-        clientObject = Model.clientModel.factory.create('ns0:free_circular_load')
+        clientObject = model.clientModel.factory.create('ns0:free_circular_load')
 
         # Clears object attributes | Sets all attributes to None
         clearAtributes(clientObject)
@@ -516,7 +520,7 @@ def CircularLoad(
                 clientObject[key] = params[key]
 
         # Add Free Concentrated Load to client model
-        Model.clientModel.service.set_free_circular_load(load_case_no, clientObject)
+        model.clientModel.service.set_free_circular_load(load_case_no, clientObject)
 
     @staticmethod
     def PolygonLoad(
@@ -526,10 +530,11 @@ def PolygonLoad(
                  load_distribution = FreePolygonLoadLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
                  load_projection = FreeLoadLoadProjection.LOAD_PROJECTION_XY_OR_UV,
                  load_direction = FreePolygonLoadLoadDirection.LOAD_DIRECTION_GLOBAL_Z_TRUE,
-                 load_location = [],
-                 load_parameter = [],
+                 load_location: list = None,
+                 load_parameter: list = None,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -558,7 +563,7 @@ def PolygonLoad(
         '''
 
         # Client model | Free Concentrated Load
-        clientObject = Model.clientModel.factory.create('ns0:free_polygon_load')
+        clientObject = model.clientModel.factory.create('ns0:free_polygon_load')
 
         # Clears object attributes | Sets all attributes to None
         clearAtributes(clientObject)
@@ -582,9 +587,9 @@ def PolygonLoad(
         clientObject.load_direction = load_direction.name
 
         # Load Location
-        clientObject.load_location = Model.clientModel.factory.create('ns0:free_polygon_load.load_location')
+        clientObject.load_location = model.clientModel.factory.create('ns0:free_polygon_load.load_location')
         for i,j in enumerate(load_location):
-            fplld = Model.clientModel.factory.create('ns0:free_polygon_load_load_location')
+            fplld = model.clientModel.factory.create('ns0:free_polygon_load_load_location')
             fplld.no = i+1
             fplld.first_coordinate = load_location[i][0]
             fplld.second_coordinate = load_location[i][1]
@@ -623,4 +628,4 @@ def PolygonLoad(
                 clientObject[key] = params[key]
 
         # Add Free Concentrated Load to client model
-        Model.clientModel.service.set_free_polygon_load(load_case_no, clientObject)
+        model.clientModel.service.set_free_polygon_load(load_case_no, clientObject)
diff --git a/RFEM/Loads/imposedLineDeformation.py b/RFEM/Loads/imposedLineDeformation.py
index a9daf468..63decca1 100644
--- a/RFEM/Loads/imposedLineDeformation.py
+++ b/RFEM/Loads/imposedLineDeformation.py
@@ -16,10 +16,11 @@ def __init__(self,
                  load_case_no: int = 1,
                  line_no: str = '1',
                  comment: str = '',
-                 params: dict = LineDeformationParams):
+                 params: dict = LineDeformationParams,
+                 model = Model):
 
         # Client model | Imposed Line Deformation
-        clientObject = Model.clientModel.factory.create('ns0:imposed_line_deformation')
+        clientObject = model.clientModel.factory.create('ns0:imposed_line_deformation')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -42,4 +43,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Nodal Support to client model
-        Model.clientModel.service.set_imposed_line_deformation(load_case_no, clientObject)
+        model.clientModel.service.set_imposed_line_deformation(load_case_no, clientObject)
diff --git a/RFEM/Loads/imposedNodalDeformation.py b/RFEM/Loads/imposedNodalDeformation.py
index 12453f3a..eb5ac2cc 100644
--- a/RFEM/Loads/imposedNodalDeformation.py
+++ b/RFEM/Loads/imposedNodalDeformation.py
@@ -6,15 +6,16 @@ def __init__(self,
                  no: int = 1,
                  load_case_no: int = 1,
                  node_no: str = '1',
-                 load_parameter = None,
+                 load_parameter: list = None,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         '''
         load_parameter:
             load_parameter = [imposed_displacement_x, imposed_displacement_y, imposed_displacement_z, imposed_rotation_x, imposed_rotation_y imposed_rotation_z]
         '''
         # Client model | Imposed Nodal Deformation
-        clientObject = Model.clientModel.factory.create('ns0:imposed_nodal_deformation')
+        clientObject = model.clientModel.factory.create('ns0:imposed_nodal_deformation')
 
         # Clears object attributes | Sets all attributes to None
         clearAtributes(clientObject)
@@ -47,4 +48,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Imposed Nodal Deformation to client model
-        Model.clientModel.service.set_imposed_nodal_deformation(load_case_no, clientObject)
+        model.clientModel.service.set_imposed_nodal_deformation(load_case_no, clientObject)
diff --git a/RFEM/Loads/lineLoad.py b/RFEM/Loads/lineLoad.py
index 90728a74..09d2c315 100644
--- a/RFEM/Loads/lineLoad.py
+++ b/RFEM/Loads/lineLoad.py
@@ -10,7 +10,8 @@ def __init__(self,
                  load_direction = LoadDirectionType.LOAD_DIRECTION_LOCAL_Z,
                  magnitude: float = 0,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -24,7 +25,7 @@ def __init__(self,
         '''
 
         # Client model | Line Load
-        clientObject = Model.clientModel.factory.create('ns0:line_load')
+        clientObject = model.clientModel.factory.create('ns0:line_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -61,19 +62,20 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Load Line Load to client model
-        Model.clientModel.service.set_line_load(load_case_no, clientObject)
+        model.clientModel.service.set_line_load(load_case_no, clientObject)
 
     @staticmethod
     def Force(
                 no: int = 1,
                 load_case_no: int = 1,
                 lines_no: str = '1',
-                load_distribution= LineLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
-                load_direction= LineLoadDirection.LOAD_DIRECTION_LOCAL_Z,
-                load_parameter = None,
+                load_distribution = LineLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
+                load_direction = LineLoadDirection.LOAD_DIRECTION_LOCAL_Z,
+                load_parameter: list = None,
                 list_reference: bool= False,
                 comment: str = '',
-                params: dict = None):
+                params: dict = None,
+                model = Model):
 
         '''
         Args:
@@ -111,7 +113,7 @@ def Force(
         '''
 
         # Client model | Line Load
-        clientObject = Model.clientModel.factory.create('ns0:line_load')
+        clientObject = model.clientModel.factory.create('ns0:line_load')
 
         # Clears object attributes | Sets all attributes to None
         clearAtributes(clientObject)
@@ -220,12 +222,12 @@ def Force(
             except:
                 print("WARNING: LineLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:line_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:line_load.varying_load_parameters')
 
             for i,j in enumerate(load_parameter):
                 if len(load_parameter[i]) != 3:
                     raise Exception('WARNING: The load parameter sub-lists need to be of length 3. Kindly check sub-list inputs for completeness and correctness.')
-                mlvlp = Model.clientModel.factory.create('ns0:line_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:line_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -287,11 +289,11 @@ def Force(
             except:
                 print("WARNING: LineLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:line_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:line_load.varying_load_parameters')
             for i,j in enumerate(load_parameter):
                 if len(load_parameter[i]) != 3:
                     raise Exception('WARNING: The load parameter sub-lists need to be of length 3. Kindly check sub-list inputs for completeness and correctness.')
-                mlvlp = Model.clientModel.factory.create('ns0:line_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:line_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -315,7 +317,7 @@ def Force(
                 clientObject[key] = params[key]
 
         # Add Load Line Load to client model
-        Model.clientModel.service.set_line_load(load_case_no, clientObject)
+        model.clientModel.service.set_line_load(load_case_no, clientObject)
 
     @staticmethod
     def Moment(
@@ -324,10 +326,11 @@ def Moment(
                  lines_no: str = '1',
                  load_distribution = LineLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
                  load_direction = LineLoadDirection.LOAD_DIRECTION_LOCAL_Z,
-                 load_parameter = None,
+                 load_parameter: list = None,
                  list_reference: bool = False,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -363,7 +366,7 @@ def Moment(
         '''
 
         # Client model | Line Load
-        clientObject = Model.clientModel.factory.create('ns0:line_load')
+        clientObject = model.clientModel.factory.create('ns0:line_load')
 
         # Clears object attributes | Sets all attributes to None
         clearAtributes(clientObject)
@@ -472,12 +475,12 @@ def Moment(
             except:
                 print("WARNING: LineLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:line_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:line_load.varying_load_parameters')
 
             for i,j in enumerate(load_parameter):
                 if len(load_parameter[i]) != 3:
                     raise Exception('WARNING: The load parameter sub-lists need to be of length 3. Kindly check sub-list inputs for completeness and correctness.')
-                mlvlp = Model.clientModel.factory.create('ns0:line_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:line_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -539,11 +542,11 @@ def Moment(
             except:
                 print("WARNING: LineLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:line_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:line_load.varying_load_parameters')
             for i,j in enumerate(load_parameter):
                 if len(load_parameter[i]) != 3:
                     raise Exception('WARNING: The load parameter sub-lists need to be of length 3. Kindly check sub-list inputs for completeness and correctness.')
-                mlvlp = Model.clientModel.factory.create('ns0:line_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:line_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -567,7 +570,7 @@ def Moment(
                 clientObject[key] = params[key]
 
         # Add Load Line Load to client model
-        Model.clientModel.service.set_line_load(load_case_no, clientObject)
+        model.clientModel.service.set_line_load(load_case_no, clientObject)
 
     @staticmethod
     def Mass(
@@ -575,9 +578,10 @@ def Mass(
                 load_case_no: int = 1,
                 lines_no: str = '1',
                 individual_mass_components: bool=True,
-                mass_components = None,
+                mass_components: list = None,
                 comment: str = '',
-                params: dict = None):
+                params: dict = None,
+                model = Model):
         '''
         Args:
             no (int): Load Tag
@@ -594,7 +598,7 @@ def Mass(
         '''
 
         # Client model | Line Load
-        clientObject = Model.clientModel.factory.create('ns0:line_load')
+        clientObject = model.clientModel.factory.create('ns0:line_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -642,4 +646,4 @@ def Mass(
                 clientObject[key] = params[key]
 
         # Add Load Line Load to client model
-        Model.clientModel.service.set_line_load(load_case_no, clientObject)
+        model.clientModel.service.set_line_load(load_case_no, clientObject)
diff --git a/RFEM/Loads/memberLoad.py b/RFEM/Loads/memberLoad.py
index e096d2e7..d9cd996a 100644
--- a/RFEM/Loads/memberLoad.py
+++ b/RFEM/Loads/memberLoad.py
@@ -11,7 +11,8 @@ def __init__(self,
                  load_direction = LoadDirectionType.LOAD_DIRECTION_LOCAL_Z,
                  magnitude: float = 2000,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -23,7 +24,7 @@ def __init__(self,
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_load')
+        clientObject = model.clientModel.factory.create('ns0:member_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -60,7 +61,7 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_load(load_case_no, clientObject)
 
     @staticmethod
     def Force(
@@ -69,11 +70,12 @@ def Force(
                  members_no: str = '1',
                  load_distribution= MemberLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
                  load_direction= MemberLoadDirection.LOAD_DIRECTION_LOCAL_Z,
-                 load_parameter = [],
+                 load_parameter: list = None,
                  force_eccentricity: bool= False,
                  list_reference: bool= False,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -121,7 +123,7 @@ def Force(
                 'eccentricity_z_at_start': 0.0}
         """
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_load')
+        clientObject = model.clientModel.factory.create('ns0:member_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -214,10 +216,10 @@ def Force(
             except:
                 print("WARNING: MemberLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:member_load.varying_load_parameters')
 
             for i,j in enumerate(load_parameter):
-                mlvlp = Model.clientModel.factory.create('ns0:member_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:member_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -273,9 +275,9 @@ def Force(
             except:
                 print("WARNING: MemberLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:member_load.varying_load_parameters')
             for i,j in enumerate(load_parameter):
-                mlvlp = Model.clientModel.factory.create('ns0:member_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:member_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -294,9 +296,9 @@ def Force(
             except:
                 print("WARNING: MemberLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:member_load.varying_load_parameters')
             for i,j in enumerate(load_parameter):
-                mlvlp = Model.clientModel.factory.create('ns0:member_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:member_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -362,7 +364,7 @@ def Force(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_load(load_case_no, clientObject)
 
     @staticmethod
     def Moment(
@@ -371,10 +373,11 @@ def Moment(
                  members_no: str = '1',
                  load_distribution= MemberLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
                  load_direction= MemberLoadDirection.LOAD_DIRECTION_LOCAL_Z,
-                 load_parameter = [],
+                 load_parameter: list = None,
                  list_reference: bool= False,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -408,7 +411,7 @@ def Moment(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_load')
+        clientObject = model.clientModel.factory.create('ns0:member_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -501,10 +504,10 @@ def Moment(
             except:
                 print("WARNING: MemberLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:member_load.varying_load_parameters')
 
             for i,j in enumerate(load_parameter):
-                mlvlp = Model.clientModel.factory.create('ns0:member_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:member_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -560,9 +563,9 @@ def Moment(
             except:
                 print("WARNING: MemberLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:member_load.varying_load_parameters')
             for i,j in enumerate(load_parameter):
-                mlvlp = Model.clientModel.factory.create('ns0:member_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:member_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -590,7 +593,7 @@ def Moment(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_load(load_case_no, clientObject)
 
     @staticmethod
     def Mass(
@@ -598,9 +601,10 @@ def Mass(
                 load_case_no: int = 1,
                 members_no: str = '1',
                 individual_mass_components: bool=False,
-                mass_components = [],
+                mass_components: list = None,
                 comment: str = '',
-                params: dict = None):
+                params: dict = None,
+                model = Model):
         """
         Args:
             no (int): Load Tag
@@ -616,7 +620,7 @@ def Mass(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_load')
+        clientObject = model.clientModel.factory.create('ns0:member_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -656,7 +660,7 @@ def Mass(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_load(load_case_no, clientObject)
 
     @staticmethod
     def Temperature(
@@ -665,11 +669,12 @@ def Temperature(
                  members_no: str = '1',
                  load_distribution = MemberLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
                  load_direction = MemberLoadDirection.LOAD_DIRECTION_LOCAL_Z,
-                 load_parameter = [],
+                 load_parameter: list = None,
                  list_reference: bool= False,
                  load_over_total_length: bool= False,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -699,7 +704,7 @@ def Temperature(
         '''
 
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_load')
+        clientObject = model.clientModel.factory.create('ns0:member_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -788,9 +793,9 @@ def Temperature(
             except:
                 print("WARNING: MemberLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:member_load.varying_load_parameters')
             for i,j in enumerate(load_parameter):
-                mlvlp = Model.clientModel.factory.create('ns0:member_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:member_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -815,7 +820,7 @@ def Temperature(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_load(load_case_no, clientObject)
 
     @staticmethod
     def TemperatureChange(
@@ -824,11 +829,12 @@ def TemperatureChange(
                            members_no: str = '1',
                            load_distribution = MemberLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
                            load_direction = MemberLoadDirection.LOAD_DIRECTION_LOCAL_Z,
-                           load_parameter = [],
+                           load_parameter: list = None,
                            list_reference: bool= False,
                            load_over_total_length: bool= False,
                            comment: str = '',
-                           params: dict = None):
+                           params: dict = None,
+                           model = Model):
 
         '''
         Args:
@@ -858,7 +864,7 @@ def TemperatureChange(
         '''
 
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_load')
+        clientObject = model.clientModel.factory.create('ns0:member_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -947,9 +953,9 @@ def TemperatureChange(
             except:
                 print("WARNING: MemberLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:member_load.varying_load_parameters')
             for i,j in enumerate(load_parameter):
-                mlvlp = Model.clientModel.factory.create('ns0:member_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:member_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -974,7 +980,7 @@ def TemperatureChange(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_load(load_case_no, clientObject)
 
     @staticmethod
     def AxialStrain(
@@ -983,11 +989,12 @@ def AxialStrain(
                     members_no: str = '1',
                     load_distribution = MemberLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
                     load_direction = MemberLoadDirection.LOAD_DIRECTION_LOCAL_X,
-                    load_parameter = [],
+                    load_parameter: list = None,
                     list_reference: bool= False,
                     load_over_total_length: bool= False,
                     comment: str = '',
-                    params: dict = None):
+                    params: dict = None,
+                    model = Model):
 
         '''
         Args:
@@ -1014,7 +1021,7 @@ def AxialStrain(
         '''
 
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_load')
+        clientObject = model.clientModel.factory.create('ns0:member_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -1095,9 +1102,9 @@ def AxialStrain(
             except:
                 print("WARNING: MemberLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:member_load.varying_load_parameters')
             for i,j in enumerate(load_parameter):
-                mlvlp = Model.clientModel.factory.create('ns0:member_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:member_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -1122,7 +1129,7 @@ def AxialStrain(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_load(load_case_no, clientObject)
 
     @staticmethod
     def AxialDisplacement(
@@ -1132,7 +1139,8 @@ def AxialDisplacement(
                     load_direction = MemberLoadDirection.LOAD_DIRECTION_LOCAL_X,
                     magnitude : float = 0.0,
                     comment: str = '',
-                    params: dict = None):
+                    params: dict = None,
+                    model = Model):
 
         '''
         Args:
@@ -1146,7 +1154,7 @@ def AxialDisplacement(
         '''
 
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_load')
+        clientObject = model.clientModel.factory.create('ns0:member_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -1182,7 +1190,7 @@ def AxialDisplacement(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_load(load_case_no, clientObject)
 
     @staticmethod
     def Precamber(
@@ -1191,11 +1199,12 @@ def Precamber(
                  members_no: str = '1',
                  load_distribution = MemberLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
                  load_direction = MemberLoadDirection.LOAD_DIRECTION_LOCAL_Z,
-                 load_parameter = [],
+                 load_parameter: list = None,
                  list_reference: bool= False,
                  load_over_total_length: bool= False,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -1222,7 +1231,7 @@ def Precamber(
         '''
 
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_load')
+        clientObject = model.clientModel.factory.create('ns0:member_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -1303,9 +1312,9 @@ def Precamber(
             except:
                 print("WARNING: MemberLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:member_load.varying_load_parameters')
             for i,j in enumerate(load_parameter):
-                mlvlp = Model.clientModel.factory.create('ns0:member_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:member_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -1330,7 +1339,7 @@ def Precamber(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_load(load_case_no, clientObject)
 
     @staticmethod
     def InitialPrestress(
@@ -1340,7 +1349,8 @@ def InitialPrestress(
                  load_direction = MemberLoadDirection.LOAD_DIRECTION_LOCAL_X,
                  magnitude : float = 0.0,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -1354,7 +1364,7 @@ def InitialPrestress(
         '''
 
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_load')
+        clientObject = model.clientModel.factory.create('ns0:member_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -1390,7 +1400,7 @@ def InitialPrestress(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_load(load_case_no, clientObject)
 
     @staticmethod
     def Displacement(
@@ -1399,11 +1409,12 @@ def Displacement(
                  members_no: str = '1',
                  load_distribution = MemberLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
                  load_direction = MemberLoadDirection.LOAD_DIRECTION_LOCAL_Z,
-                 load_parameter = [],
+                 load_parameter: list = None,
                  list_reference: bool= False,
                  load_over_total_length: bool= False,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -1440,7 +1451,7 @@ def Displacement(
         '''
 
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_load')
+        clientObject = model.clientModel.factory.create('ns0:member_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -1535,9 +1546,9 @@ def Displacement(
             except:
                 print("WARNING: MemberLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:member_load.varying_load_parameters')
             for i,j in enumerate(load_parameter):
-                mlvlp = Model.clientModel.factory.create('ns0:member_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:member_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -1600,9 +1611,9 @@ def Displacement(
             except:
                 print("WARNING: MemberLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:member_load.varying_load_parameters')
             for i,j in enumerate(load_parameter):
-                mlvlp = Model.clientModel.factory.create('ns0:member_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:member_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -1627,7 +1638,7 @@ def Displacement(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_load(load_case_no, clientObject)
 
     @staticmethod
     def Rotation(
@@ -1636,11 +1647,12 @@ def Rotation(
                  members_no: str = '1',
                  load_distribution = MemberLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
                  load_direction = MemberLoadDirection.LOAD_DIRECTION_LOCAL_Z,
-                 load_parameter = [],
+                 load_parameter: list = None,
                  list_reference: bool= False,
                  load_over_total_length: bool= False,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -1677,7 +1689,7 @@ def Rotation(
         '''
 
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_load')
+        clientObject = model.clientModel.factory.create('ns0:member_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -1772,9 +1784,9 @@ def Rotation(
             except:
                 print("WARNING: MemberLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:member_load.varying_load_parameters')
             for i,j in enumerate(load_parameter):
-                mlvlp = Model.clientModel.factory.create('ns0:member_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:member_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -1837,9 +1849,9 @@ def Rotation(
             except:
                 print("WARNING: MemberLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:member_load.varying_load_parameters')
             for i,j in enumerate(load_parameter):
-                mlvlp = Model.clientModel.factory.create('ns0:member_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:member_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -1864,7 +1876,7 @@ def Rotation(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_load(load_case_no, clientObject)
 
     @staticmethod
     def PipeContentFull(
@@ -1874,7 +1886,8 @@ def PipeContentFull(
                  load_direction_orientation = MemberLoadDirectionOrientation.LOAD_DIRECTION_FORWARD,
                  specific_weight : float = 0.0,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -1888,7 +1901,7 @@ def PipeContentFull(
         '''
 
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_load')
+        clientObject = model.clientModel.factory.create('ns0:member_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -1927,7 +1940,7 @@ def PipeContentFull(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_load(load_case_no, clientObject)
 
     @staticmethod
     def PipeContentPartial(
@@ -1938,7 +1951,8 @@ def PipeContentPartial(
                  specific_weight : float = 0.0,
                  filling_height : float = 0.0,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -1953,7 +1967,7 @@ def PipeContentPartial(
         '''
 
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_load')
+        clientObject = model.clientModel.factory.create('ns0:member_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -1995,7 +2009,7 @@ def PipeContentPartial(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_load(load_case_no, clientObject)
 
     @staticmethod
     def PipeInternalPressure(
@@ -2004,7 +2018,8 @@ def PipeInternalPressure(
                  members_no: str = '1',
                  pressure : float = 0.0,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -2017,7 +2032,7 @@ def PipeInternalPressure(
         '''
 
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_load')
+        clientObject = model.clientModel.factory.create('ns0:member_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -2053,7 +2068,7 @@ def PipeInternalPressure(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_load(load_case_no, clientObject)
 
     @staticmethod
     def RotaryMotion(
@@ -2068,7 +2083,8 @@ def RotaryMotion(
                  axis_definition_p1 = [1,0,1],
                  axis_definition_p2 = [0,1,0],
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         '''
         Args:
@@ -2087,7 +2103,7 @@ def RotaryMotion(
         '''
 
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_load')
+        clientObject = model.clientModel.factory.create('ns0:member_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -2141,4 +2157,4 @@ def RotaryMotion(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_load(load_case_no, clientObject)
\ No newline at end of file
+        model.clientModel.service.set_member_load(load_case_no, clientObject)
\ No newline at end of file
diff --git a/RFEM/Loads/membersetload.py b/RFEM/Loads/membersetload.py
index 326f99bb..1eba3fb9 100644
--- a/RFEM/Loads/membersetload.py
+++ b/RFEM/Loads/membersetload.py
@@ -12,7 +12,8 @@ def __init__(self,
                  load_direction = LoadDirectionType.LOAD_DIRECTION_LOCAL_Z,
                  magnitude: float = 0,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -25,7 +26,7 @@ def __init__(self,
         """
 
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_set_load')
+        clientObject = model.clientModel.factory.create('ns0:member_set_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -62,7 +63,7 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_set_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_set_load(load_case_no, clientObject)
 
     @staticmethod
     def Force(
@@ -71,10 +72,11 @@ def Force(
                  member_sets: str = '1',
                  load_distribution= MemberSetLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
                  load_direction= MemberSetLoadDirection.LOAD_DIRECTION_LOCAL_Z,
-                 load_parameter = [],
+                 load_parameter: list = None,
                  force_eccentricity: bool= False,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -123,7 +125,7 @@ def Force(
             'eccentricity_z_at_start': 0.0}
         """
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_set_load')
+        clientObject = model.clientModel.factory.create('ns0:member_set_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -234,10 +236,10 @@ def Force(
                 except:
                     print("WARNING: MemberSetLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-                clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters')
+                clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters')
 
                 for i,j in enumerate(load_parameter):
-                    mlvlp = Model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters')
+                    mlvlp = model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters')
                     mlvlp.no = i+1
                     mlvlp.distance = load_parameter[i][0]
                     mlvlp.delta_distance = load_parameter[i][1]
@@ -301,9 +303,9 @@ def Force(
                 except:
                     print("WARNING: MemberSetLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-                clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters')
+                clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters')
                 for i,j in enumerate(load_parameter):
-                    mlvlp = Model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters')
+                    mlvlp = model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters')
                     mlvlp.no = i+1
                     mlvlp.distance = load_parameter[i][0]
                     mlvlp.delta_distance = load_parameter[i][1]
@@ -322,9 +324,9 @@ def Force(
                 except:
                     print("WARNING: MemberSetLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-                clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters')
+                clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters')
                 for i,j in enumerate(load_parameter):
-                    mlvlp = Model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters')
+                    mlvlp = model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters')
                     mlvlp.no = i+1
                     mlvlp.distance = load_parameter[i][0]
                     mlvlp.delta_distance = load_parameter[i][1]
@@ -393,7 +395,7 @@ def Force(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_set_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_set_load(load_case_no, clientObject)
 
     @staticmethod
     def Moment(
@@ -402,9 +404,10 @@ def Moment(
                  member_sets: str = '1',
                  load_distribution= MemberSetLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
                  load_direction= MemberSetLoadDirection.LOAD_DIRECTION_LOCAL_Z,
-                 load_parameter = [],
+                 load_parameter: list = None,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -438,7 +441,7 @@ def Moment(
                 load_parameter = [[distance, delta_distance, magnitude], ...]
         """
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_set_load')
+        clientObject = model.clientModel.factory.create('ns0:member_set_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -553,10 +556,10 @@ def Moment(
             except:
                 print("WARNING: MemberSetLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters')
 
             for i,j in enumerate(load_parameter):
-                mlvlp = Model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -624,9 +627,9 @@ def Moment(
             except:
                 print("WARNING: MemberSetLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters')
             for i,j in enumerate(load_parameter):
-                mlvlp = Model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -651,7 +654,7 @@ def Moment(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_set_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_set_load(load_case_no, clientObject)
 
     @staticmethod
     def Mass(
@@ -659,9 +662,10 @@ def Mass(
                 load_case_no: int = 1,
                 member_sets: str = '1',
                 individual_mass_components: bool=False,
-                mass_components = [],
+                mass_components: list = None,
                 comment: str = '',
-                params: dict = None):
+                params: dict = None,
+                model = Model):
         """
         Args:
             no (int): Load Tag
@@ -673,7 +677,7 @@ def Mass(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_set_load')
+        clientObject = model.clientModel.factory.create('ns0:member_set_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -715,7 +719,7 @@ def Mass(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_set_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_set_load(load_case_no, clientObject)
 
     @staticmethod
     def Temperature(
@@ -724,10 +728,11 @@ def Temperature(
                  member_sets: str = '1',
                  load_distribution = MemberSetLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
                  load_direction = MemberSetLoadDirection.LOAD_DIRECTION_LOCAL_Z,
-                 load_parameter = [],
+                 load_parameter: list = None,
                  load_over_total_length: bool= False,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -755,7 +760,7 @@ def Temperature(
             load_parameter = [[distance, delta_distance, magnitude], ...]
         """
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_set_load')
+        clientObject = model.clientModel.factory.create('ns0:member_set_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -867,9 +872,9 @@ def Temperature(
             except:
                 print("WARNING: MemberSetLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters')
             for i,j in enumerate(load_parameter):
-                mlvlp = Model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -891,7 +896,7 @@ def Temperature(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_set_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_set_load(load_case_no, clientObject)
 
     @staticmethod
     def TemperatureChange(
@@ -900,10 +905,11 @@ def TemperatureChange(
                            member_sets: str = '1',
                            load_distribution = MemberSetLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
                            load_direction = MemberSetLoadDirection.LOAD_DIRECTION_LOCAL_Z,
-                           load_parameter = [],
+                           load_parameter: list = None,
                            load_over_total_length: bool= False,
                            comment: str = '',
-                           params: dict = None):
+                           params: dict = None,
+                           model = Model):
         """
         Args:
             no (int): Load Tag
@@ -931,7 +937,7 @@ def TemperatureChange(
             load_parameter = [[distance, delta_distance, magnitude], ...]
         """
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_set_load')
+        clientObject = model.clientModel.factory.create('ns0:member_set_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -1037,9 +1043,9 @@ def TemperatureChange(
             except:
                 print("WARNING: MemberSetLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters')
             for i,j in enumerate(load_parameter):
-                mlvlp = Model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -1061,7 +1067,7 @@ def TemperatureChange(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_set_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_set_load(load_case_no, clientObject)
 
     @staticmethod
     def AxialStrain(
@@ -1070,10 +1076,11 @@ def AxialStrain(
                     member_sets: str = '1',
                     load_distribution = MemberSetLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
                     load_direction = MemberSetLoadDirection.LOAD_DIRECTION_LOCAL_X,
-                    load_parameter = [],
+                    load_parameter: list = None,
                     load_over_total_length: bool= False,
                     comment: str = '',
-                    params: dict = None):
+                    params: dict = None,
+                    model = Model):
         """
         Args:
             no (int): Load Tag
@@ -1098,7 +1105,7 @@ def AxialStrain(
             load_parameter = [[distance, delta_distance, magnitude], ...]
         """
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_set_load')
+        clientObject = model.clientModel.factory.create('ns0:member_set_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -1196,9 +1203,9 @@ def AxialStrain(
             except:
                 print("WARNING: MemberSetLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters')
             for i,j in enumerate(load_parameter):
-                mlvlp = Model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -1220,7 +1227,7 @@ def AxialStrain(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_set_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_set_load(load_case_no, clientObject)
 
     @staticmethod
     def AxialDisplacement(
@@ -1230,7 +1237,8 @@ def AxialDisplacement(
                     load_direction = MemberSetLoadDirection.LOAD_DIRECTION_LOCAL_X,
                     magnitude : float = 0.0,
                     comment: str = '',
-                    params: dict = None):
+                    params: dict = None,
+                    model = Model):
         """
         Args:
             no (int): Load Tag
@@ -1242,7 +1250,7 @@ def AxialDisplacement(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_set_load')
+        clientObject = model.clientModel.factory.create('ns0:member_set_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -1278,7 +1286,7 @@ def AxialDisplacement(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_set_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_set_load(load_case_no, clientObject)
 
     @staticmethod
     def Precamber(
@@ -1287,10 +1295,11 @@ def Precamber(
                  member_sets: str = '1',
                  load_distribution = MemberSetLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
                  load_direction = MemberSetLoadDirection.LOAD_DIRECTION_LOCAL_Z,
-                 load_parameter = [],
+                 load_parameter: list = None,
                  load_over_total_length: bool= False,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -1315,7 +1324,7 @@ def Precamber(
                 load_parameter = [[distance, delta_distance, magnitude], ...]
         """
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_set_load')
+        clientObject = model.clientModel.factory.create('ns0:member_set_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -1414,9 +1423,9 @@ def Precamber(
             except:
                 print("WARNING: MemberSetLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters')
             for i,j in enumerate(load_parameter):
-                mlvlp = Model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -1438,7 +1447,7 @@ def Precamber(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_set_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_set_load(load_case_no, clientObject)
 
     @staticmethod
     def InitialPrestress(
@@ -1448,7 +1457,8 @@ def InitialPrestress(
                  load_direction = MemberSetLoadDirection.LOAD_DIRECTION_LOCAL_X,
                  magnitude : float = 0.0,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -1460,7 +1470,7 @@ def InitialPrestress(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_set_load')
+        clientObject = model.clientModel.factory.create('ns0:member_set_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -1496,7 +1506,7 @@ def InitialPrestress(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_set_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_set_load(load_case_no, clientObject)
 
     @staticmethod
     def Displacement(
@@ -1505,10 +1515,11 @@ def Displacement(
                  member_sets: str = '1',
                  load_distribution = MemberSetLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
                  load_direction = MemberSetLoadDirection.LOAD_DIRECTION_LOCAL_Z,
-                 load_parameter = [],
+                 load_parameter: list = None,
                  load_over_total_length: bool= False,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -1543,7 +1554,7 @@ def Displacement(
             load_parameter = [[distance, delta_distance, magnitude], ...]
         """
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_set_load')
+        clientObject = model.clientModel.factory.create('ns0:member_set_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -1658,9 +1669,9 @@ def Displacement(
             except:
                 print("WARNING: MemberSetLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters')
             for i,j in enumerate(load_parameter):
-                mlvlp = Model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -1738,9 +1749,9 @@ def Displacement(
             except:
                 print("WARNING: MemberSetLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters')
             for i,j in enumerate(load_parameter):
-                mlvlp = Model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -1762,7 +1773,7 @@ def Displacement(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_set_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_set_load(load_case_no, clientObject)
 
     @staticmethod
     def Rotation(
@@ -1771,10 +1782,11 @@ def Rotation(
                  member_sets: str = '1',
                  load_distribution = MemberSetLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
                  load_direction = MemberSetLoadDirection.LOAD_DIRECTION_LOCAL_Z,
-                 load_parameter = [],
+                 load_parameter: list = None,
                  load_over_total_length: bool= False,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -1809,7 +1821,7 @@ def Rotation(
             load_parameter = [[distance, delta_distance, magnitude], ...]
         """
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_set_load')
+        clientObject = model.clientModel.factory.create('ns0:member_set_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -1924,9 +1936,9 @@ def Rotation(
             except:
                 print("WARNING: MemberSetLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters')
             for i,j in enumerate(load_parameter):
-                mlvlp = Model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -2004,9 +2016,9 @@ def Rotation(
             except:
                 print("WARNING: MemberSetLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no))
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters')
             for i,j in enumerate(load_parameter):
-                mlvlp = Model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -2028,7 +2040,7 @@ def Rotation(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_set_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_set_load(load_case_no, clientObject)
 
     @staticmethod
     def PipeContentFull(
@@ -2038,7 +2050,8 @@ def PipeContentFull(
                  load_direction_orientation = MemberSetLoadDirectionOrientation.LOAD_DIRECTION_FORWARD,
                  specific_weight : float = 0.0,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -2050,7 +2063,7 @@ def PipeContentFull(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_set_load')
+        clientObject = model.clientModel.factory.create('ns0:member_set_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -2089,7 +2102,7 @@ def PipeContentFull(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_set_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_set_load(load_case_no, clientObject)
 
     @staticmethod
     def PipeContentPartial(
@@ -2100,7 +2113,8 @@ def PipeContentPartial(
                  specific_weight : float = 0.0,
                  filling_height : float = 0.0,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -2113,7 +2127,7 @@ def PipeContentPartial(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_set_load')
+        clientObject = model.clientModel.factory.create('ns0:member_set_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -2155,7 +2169,7 @@ def PipeContentPartial(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_set_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_set_load(load_case_no, clientObject)
 
     @staticmethod
     def PipeInternalPressure(
@@ -2164,7 +2178,8 @@ def PipeInternalPressure(
                  member_sets: str = '1',
                  pressure : float = 0.0,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -2175,7 +2190,7 @@ def PipeInternalPressure(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_set_load')
+        clientObject = model.clientModel.factory.create('ns0:member_set_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -2211,7 +2226,7 @@ def PipeInternalPressure(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_set_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_set_load(load_case_no, clientObject)
 
     @staticmethod
     def RotaryMotion(
@@ -2223,10 +2238,11 @@ def RotaryMotion(
                  axis_definition_type = MemberSetLoadAxisDefinitionType.AXIS_DEFINITION_TWO_POINTS,
                  axis_orientation = MemberSetLoadAxisDefinitionAxisOrientation.AXIS_POSITIVE,
                  axis_definition = MemberSetLoadAxisDefinition.AXIS_X,
-                 axis_definition_p1 = [],
-                 axis_definition_p2 = [],
+                 axis_definition_p1: list = None,
+                 axis_definition_p2: list = None,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -2243,7 +2259,7 @@ def RotaryMotion(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Member Load
-        clientObject = Model.clientModel.factory.create('ns0:member_set_load')
+        clientObject = model.clientModel.factory.create('ns0:member_set_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -2297,4 +2313,4 @@ def RotaryMotion(
                 clientObject[key] = params[key]
 
         # Add Load Member Load to client model
-        Model.clientModel.service.set_member_set_load(load_case_no, clientObject)
+        model.clientModel.service.set_member_set_load(load_case_no, clientObject)
diff --git a/RFEM/Loads/nodalLoad.py b/RFEM/Loads/nodalLoad.py
index b9d52fe3..a99c0099 100644
--- a/RFEM/Loads/nodalLoad.py
+++ b/RFEM/Loads/nodalLoad.py
@@ -10,7 +10,8 @@ def __init__(self,
                  load_direction= LoadDirectionType.LOAD_DIRECTION_GLOBAL_Z_OR_USER_DEFINED_W,
                  magnitude: float = 0.0,
                  comment: str= '',
-                 params: dict= {}):
+                 params: dict= None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -22,7 +23,7 @@ def __init__(self,
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Nodal Force
-        clientObject = Model.clientModel.factory.create('ns0:nodal_load')
+        clientObject = model.clientModel.factory.create('ns0:nodal_load')
 
         # Clears object attributes | Sets all attributes to None
         clearAtributes(clientObject)
@@ -55,7 +56,7 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Nodal Force to client model
-        Model.clientModel.service.set_nodal_load(load_case_no, clientObject)
+        model.clientModel.service.set_nodal_load(load_case_no, clientObject)
 
     @staticmethod
     def Force(
@@ -68,7 +69,8 @@ def Force(
               specific_direction: bool = False,
               shifted_display: bool = False,
               comment: str= '',
-              params= {}):
+              params: dict = None,
+              model = Model):
         """
         Args:
             no (int): Load Tag
@@ -98,7 +100,7 @@ def Force(
                     params={'shifted_display' : [offset_x, offset_y, offset_y, distance]}
         """
         # Client model | Nodal Force
-        clientObject = Model.clientModel.factory.create('ns0:nodal_load')
+        clientObject = model.clientModel.factory.create('ns0:nodal_load')
 
         # Clears object attributes | Sets all attributes to None
         clearAtributes(clientObject)
@@ -199,7 +201,7 @@ def Force(
                 clientObject[key] = params[key]
 
         # Add Nodal Force to client model
-        Model.clientModel.service.set_nodal_load(load_case_no, clientObject)
+        model.clientModel.service.set_nodal_load(load_case_no, clientObject)
 
     @staticmethod
     def Moment(
@@ -211,7 +213,8 @@ def Moment(
               specific_direction: bool= False,
               shifted_display: bool= False,
               comment: str = '',
-              params: dict = None):
+              params: dict = None,
+              model = Model):
         """
         Args:
             no (int): Load Tag
@@ -237,7 +240,7 @@ def Moment(
                     params={'shifted_display' : [offset_x, offset_y, offset_y, distance]}
         """
         # Client model | Nodal Force
-        clientObject = Model.clientModel.factory.create('ns0:nodal_load')
+        clientObject = model.clientModel.factory.create('ns0:nodal_load')
 
         # Clears object attributes | Sets all attributes to None
         clearAtributes(clientObject)
@@ -320,19 +323,20 @@ def Moment(
                 clientObject[key] = params[key]
 
         # Add Nodal Force to client model
-        Model.clientModel.service.set_nodal_load(load_case_no, clientObject)
+        model.clientModel.service.set_nodal_load(load_case_no, clientObject)
 
     @staticmethod
     def Components(
               no: int= 1,
               load_case_no: int= 1,
               nodes_no: str= '1',
-              components = [],
+              components: list = None,
               specific_direction: bool= False,
               force_eccentricity: bool= False,
               shifted_display: bool= False,
               comment: str= '',
-              params: dict= {}):
+              params: dict= None,
+              model = Model):
         """
         Args:
             no (int): Load Tag
@@ -357,7 +361,7 @@ def Components(
                     params={'shifted_display' : [offset_x, offset_y, offset_y, distance]}
         """
         # Client model | Nodal Force
-        clientObject = Model.clientModel.factory.create('ns0:nodal_load')
+        clientObject = model.clientModel.factory.create('ns0:nodal_load')
 
         # Clears object attributes | Sets all attributes to None
         clearAtributes(clientObject)
@@ -457,7 +461,7 @@ def Components(
                 clientObject[key] = params[key]
 
         # Add Nodal Force to client model
-        Model.clientModel.service.set_nodal_load(load_case_no, clientObject)
+        model.clientModel.service.set_nodal_load(load_case_no, clientObject)
 
     @staticmethod
     def Mass(
@@ -465,9 +469,10 @@ def Mass(
               load_case_no: int = 1,
               nodes_no: str = '1',
               individual_mass_components : bool = False,
-              mass = [],
+              mass: list = None,
               comment: str = '',
-              params: dict = None):
+              params: dict = None,
+              model = Model):
         """
         Args:
             no (int): Load Tag
@@ -483,7 +488,7 @@ def Mass(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Nodal Force
-        clientObject = Model.clientModel.factory.create('ns0:nodal_load')
+        clientObject = model.clientModel.factory.create('ns0:nodal_load')
 
         # Clears object attributes | Sets all attributes to None
         clearAtributes(clientObject)
@@ -527,4 +532,4 @@ def Mass(
                 clientObject[key] = params[key]
 
         # Add Nodal Force to client model
-        Model.clientModel.service.set_nodal_load(load_case_no, clientObject)
+        model.clientModel.service.set_nodal_load(load_case_no, clientObject)
diff --git a/RFEM/Loads/solidLoad.py b/RFEM/Loads/solidLoad.py
index 3c8be1d5..a5379bbd 100644
--- a/RFEM/Loads/solidLoad.py
+++ b/RFEM/Loads/solidLoad.py
@@ -12,10 +12,11 @@ def __init__(self,
                  load_direction = SolidLoadDirection.LOAD_DIRECTION_GLOBAL_Z_OR_USER_DEFINED_W_TRUE,
                  magnitude: float = 0,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Solid Load
-        clientObject = Model.clientModel.factory.create('ns0:solid_load')
+        clientObject = model.clientModel.factory.create('ns0:solid_load')
 
         # Clears object attributes | Sets all attributes to None
         clearAtributes(clientObject)
@@ -50,7 +51,7 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Solid Load to client model
-        Model.clientModel.service.set_solid_load(load_case_no, clientObject)
+        model.clientModel.service.set_solid_load(load_case_no, clientObject)
 
     @staticmethod
     def Force(
@@ -60,10 +61,11 @@ def Force(
               load_direction = SolidLoadDirection.LOAD_DIRECTION_GLOBAL_Z_OR_USER_DEFINED_W_TRUE,
               magnitude: float = 0,
               comment: str = '',
-              params: dict = None):
+              params: dict = None,
+              model = Model):
 
         # Client model | Solid Load
-        clientObject = Model.clientModel.factory.create('ns0:solid_load')
+        clientObject = model.clientModel.factory.create('ns0:solid_load')
 
         # Clears object attributes | Sets all attributes to None
         clearAtributes(clientObject)
@@ -98,7 +100,7 @@ def Force(
                 clientObject[key] = params[key]
 
         # Add Solid Load to client model
-        Model.clientModel.service.set_solid_load(load_case_no, clientObject)
+        model.clientModel.service.set_solid_load(load_case_no, clientObject)
 
     @staticmethod
     def Temperature(
@@ -106,9 +108,10 @@ def Temperature(
                     load_case_no: int = 1,
                     solids_no: str= '1',
                     load_distribution = SolidLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
-                    load_parameter = None,
+                    load_parameter: list  = None,
                     comment: str = '',
-                    params: dict = None):
+                    params: dict = None,
+                    model = Model):
         '''
         load_parameter:
             LOAD_DISTRIBUTION_UNIFORM: load_parameter = magnitude
@@ -119,7 +122,7 @@ def Temperature(
             {''}
         '''
         # Client model | Solid Load
-        clientObject = Model.clientModel.factory.create('ns0:solid_load')
+        clientObject = model.clientModel.factory.create('ns0:solid_load')
 
         # Clears object attributes | Sets all attributes to None
         clearAtributes(clientObject)
@@ -156,7 +159,7 @@ def Temperature(
                 clientObject[key] = params[key]
 
         # Add Solid Load to client model
-        Model.clientModel.service.set_solid_load(load_case_no, clientObject)
+        model.clientModel.service.set_solid_load(load_case_no, clientObject)
 
     @staticmethod
     def Strain(
@@ -164,9 +167,10 @@ def Strain(
                load_case_no: int = 1,
                solids_no: str= '1',
                load_distribution = SolidLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
-               load_parameter = None,
+               load_parameter: list = None,
                comment: str = '',
-               params: dict = None):
+               params: dict = None,
+               model = Model):
         '''
         load_parameter:
             LOAD_DISTRIBUTION_UNIFORM: load_parameter = [strain_uniform_magnitude_x, strain_uniform_magnitude_y, strain_uniform_magnitude_z]
@@ -177,7 +181,7 @@ def Strain(
             {''}
         '''
         # Client model | Solid Load
-        clientObject = Model.clientModel.factory.create('ns0:solid_load')
+        clientObject = model.clientModel.factory.create('ns0:solid_load')
 
         # Clears object attributes | Sets all attributes to None
         clearAtributes(clientObject)
@@ -220,16 +224,17 @@ def Strain(
                 clientObject[key] = params[key]
 
         # Add Solid Load to client model
-        Model.clientModel.service.set_solid_load(load_case_no, clientObject)
+        model.clientModel.service.set_solid_load(load_case_no, clientObject)
 
     @staticmethod
     def Motion(
                no: int = 1,
                load_case_no: int = 1,
                solids_no: str= '1',
-               load_parameter = None,
+               load_parameter: list = None,
                comment: str = '',
-               params: dict = None):
+               params: dict = None,
+               model = Model):
         '''
         load_parameter:
             load_parameter = [angular_velocity, angular_acceleration, axis_definition_p1_x, axis_definition_p1_y, axis_definition_p1_z, axis_definition_p2_x, axis_definition_p2_y, axis_definition_p2_z]
@@ -237,7 +242,7 @@ def Motion(
             {''}
         '''
         # Client model | Solid Load
-        clientObject = Model.clientModel.factory.create('ns0:solid_load')
+        clientObject = model.clientModel.factory.create('ns0:solid_load')
 
         # Clears object attributes | Sets all attributes to None
         clearAtributes(clientObject)
@@ -277,7 +282,7 @@ def Motion(
                 clientObject[key] = params[key]
 
         # Add Solid Load to client model
-        Model.clientModel.service.set_solid_load(load_case_no, clientObject)
+        model.clientModel.service.set_solid_load(load_case_no, clientObject)
 
     #def Buoyancy():
     #    print('The function Buoyancy() is not implemented yet.')
diff --git a/RFEM/Loads/solidSetLoad.py b/RFEM/Loads/solidSetLoad.py
index 99ea962c..a43ffd32 100644
--- a/RFEM/Loads/solidSetLoad.py
+++ b/RFEM/Loads/solidSetLoad.py
@@ -12,10 +12,11 @@ def __init__(self,
                  load_direction = SolidSetLoadDirection.LOAD_DIRECTION_GLOBAL_Z_OR_USER_DEFINED_W_TRUE,
                  magnitude: float = 0,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Solid Load
-        clientObject = Model.clientModel.factory.create('ns0:solid_set_load')
+        clientObject = model.clientModel.factory.create('ns0:solid_set_load')
 
         # Clears object attributes | Sets all attributes to None
         clearAtributes(clientObject)
@@ -50,7 +51,7 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Solid Load to client model
-        Model.clientModel.service.set_solid_set_load(load_case_no, clientObject)
+        model.clientModel.service.set_solid_set_load(load_case_no, clientObject)
 
 
     @staticmethod
@@ -61,10 +62,11 @@ def Force(
               load_direction = SolidSetLoadDirection.LOAD_DIRECTION_GLOBAL_Z_OR_USER_DEFINED_W_TRUE,
               magnitude: float = 0,
               comment: str = '',
-              params: dict = None):
+              params: dict = None,
+              model = Model):
 
         # Client model | Solid Load
-        clientObject = Model.clientModel.factory.create('ns0:solid_set_load')
+        clientObject = model.clientModel.factory.create('ns0:solid_set_load')
 
         # Clears object attributes | Sets all attributes to None
         clearAtributes(clientObject)
@@ -99,7 +101,7 @@ def Force(
                 clientObject[key] = params[key]
 
         # Add Solid Load to client model
-        Model.clientModel.service.set_solid_set_load(load_case_no, clientObject)
+        model.clientModel.service.set_solid_set_load(load_case_no, clientObject)
 
     @staticmethod
     def Temperature(
@@ -107,9 +109,10 @@ def Temperature(
                     load_case_no: int = 1,
                     solid_sets_no: str= '1',
                     load_distribution = SolidSetLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
-                    load_parameter = None,
+                    load_parameter: list = None,
                     comment: str = '',
-                    params: dict = None):
+                    params: dict = None,
+                    model = Model):
         '''
         load_parameter:
             LOAD_DISTRIBUTION_UNIFORM: load_parameter = magnitude
@@ -120,7 +123,7 @@ def Temperature(
             {''}
         '''
         # Client model | Solid Load
-        clientObject = Model.clientModel.factory.create('ns0:solid_set_load')
+        clientObject = model.clientModel.factory.create('ns0:solid_set_load')
 
         # Clears object attributes | Sets all attributes to None
         clearAtributes(clientObject)
@@ -157,7 +160,7 @@ def Temperature(
                 clientObject[key] = params[key]
 
         # Add Solid Load to client model
-        Model.clientModel.service.set_solid_set_load(load_case_no, clientObject)
+        model.clientModel.service.set_solid_set_load(load_case_no, clientObject)
 
     @staticmethod
     def Strain(
@@ -165,9 +168,10 @@ def Strain(
                load_case_no: int = 1,
                solid_sets_no: str= '1',
                load_distribution = SolidSetLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
-               load_parameter = None,
+               load_parameter: list = None,
                comment: str = '',
-               params: dict = None):
+               params: dict = None,
+               model = Model):
         '''
         load_parameter:
             LOAD_DISTRIBUTION_UNIFORM: load_parameter = [strain_uniform_magnitude_x, strain_uniform_magnitude_y, strain_uniform_magnitude_z]
@@ -178,7 +182,7 @@ def Strain(
             {''}
         '''
         # Client model | Solid Load
-        clientObject = Model.clientModel.factory.create('ns0:solid_set_load')
+        clientObject = model.clientModel.factory.create('ns0:solid_set_load')
 
         # Clears object attributes | Sets all attributes to None
         clearAtributes(clientObject)
@@ -221,16 +225,17 @@ def Strain(
                 clientObject[key] = params[key]
 
         # Add Solid Load to client model
-        Model.clientModel.service.set_solid_set_load(load_case_no, clientObject)
+        model.clientModel.service.set_solid_set_load(load_case_no, clientObject)
 
     @staticmethod
     def Motion(
                no: int = 1,
                load_case_no: int = 1,
                solid_sets_no: str= '1',
-               load_parameter = None,
+               load_parameter: list = None,
                comment: str = '',
-               params: dict = None):
+               params: dict = None,
+               model = Model):
         '''
         load_parameter:
             load_parameter = [angular_velocity, angular_acceleration, axis_definition_p1_x, axis_definition_p1_y, axis_definition_p1_z, axis_definition_p2_x, axis_definition_p2_y, axis_definition_p2_z]
@@ -238,7 +243,7 @@ def Motion(
             {''}
         '''
         # Client model | Solid Load
-        clientObject = Model.clientModel.factory.create('ns0:solid_set_load')
+        clientObject = model.clientModel.factory.create('ns0:solid_set_load')
 
         # Clears object attributes | Sets all attributes to None
         clearAtributes(clientObject)
@@ -278,7 +283,7 @@ def Motion(
                 clientObject[key] = params[key]
 
         # Add Solid Load to client model
-        Model.clientModel.service.set_solid_set_load(load_case_no, clientObject)
+        model.clientModel.service.set_solid_set_load(load_case_no, clientObject)
 
     #def Buoyancy():
     #    print('The function Buoyancy() is not implemented yet.')
diff --git a/RFEM/Loads/surfaceLoad.py b/RFEM/Loads/surfaceLoad.py
index 0deaf396..aa73d27e 100644
--- a/RFEM/Loads/surfaceLoad.py
+++ b/RFEM/Loads/surfaceLoad.py
@@ -9,7 +9,8 @@ def __init__(self,
                  surface_no: str = '1',
                  magnitude: float = 1.0,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -20,7 +21,7 @@ def __init__(self,
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Surface Load
-        clientObject = Model.clientModel.factory.create('ns0:surface_load')
+        clientObject = model.clientModel.factory.create('ns0:surface_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -54,7 +55,7 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Surface Load to client model
-        Model.clientModel.service.set_surface_load(load_case_no, clientObject)
+        model.clientModel.service.set_surface_load(load_case_no, clientObject)
 
     @staticmethod
     def Force(
@@ -63,9 +64,10 @@ def Force(
                  surface_no: str = '1',
                  load_direction = SurfaceLoadDirection.LOAD_DIRECTION_GLOBAL_Z_OR_USER_DEFINED_W_TRUE,
                  load_distribution = SurfaceLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
-                 load_parameter = [],
+                 load_parameter: list = None,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -95,7 +97,7 @@ def Force(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Surface Load
-        clientObject = Model.clientModel.factory.create('ns0:surface_load')
+        clientObject = model.clientModel.factory.create('ns0:surface_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -163,9 +165,9 @@ def Force(
 
         elif load_distribution == SurfaceLoadDistribution.LOAD_DISTRIBUTION_VARYING_IN_Z:
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:surface_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:surface_load.varying_load_parameters')
             for i,j in enumerate(load_parameter):
-                mlvlp = Model.clientModel.factory.create('ns0:surface_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:surface_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -183,7 +185,7 @@ def Force(
                 clientObject[key] = params[key]
 
         # Add Surface Load to client model
-        Model.clientModel.service.set_surface_load(load_case_no, clientObject)
+        model.clientModel.service.set_surface_load(load_case_no, clientObject)
 
     @staticmethod
     def Temperature(
@@ -191,9 +193,10 @@ def Temperature(
                  load_case_no: int = 1,
                  surface_no: str = '1',
                  load_distribution = SurfaceLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
-                 load_parameter = [],
+                 load_parameter: list = None,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -220,7 +223,7 @@ def Temperature(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Surface Load
-        clientObject = Model.clientModel.factory.create('ns0:surface_load')
+        clientObject = model.clientModel.factory.create('ns0:surface_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -295,7 +298,7 @@ def Temperature(
                 clientObject[key] = params[key]
 
         # Add Surface Load to client model
-        Model.clientModel.service.set_surface_load(load_case_no, clientObject)
+        model.clientModel.service.set_surface_load(load_case_no, clientObject)
 
     @staticmethod
     def AxialStrain(
@@ -303,9 +306,10 @@ def AxialStrain(
                  load_case_no: int = 1,
                  surface_no: str = '1',
                  load_distribution = SurfaceLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
-                 load_parameter = [],
+                 load_parameter: list = None,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -327,7 +331,7 @@ def AxialStrain(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Surface Load
-        clientObject = Model.clientModel.factory.create('ns0:surface_load')
+        clientObject = model.clientModel.factory.create('ns0:surface_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -382,7 +386,7 @@ def AxialStrain(
                 clientObject[key] = params[key]
 
         # Add Surface Load to client model
-        Model.clientModel.service.set_surface_load(load_case_no, clientObject)
+        model.clientModel.service.set_surface_load(load_case_no, clientObject)
 
     @staticmethod
     def Precamber(
@@ -391,7 +395,8 @@ def Precamber(
                  surface_no: str = '1',
                  uniform_magnitude : float = 0.0,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -402,7 +407,7 @@ def Precamber(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Surface Load
-        clientObject = Model.clientModel.factory.create('ns0:surface_load')
+        clientObject = model.clientModel.factory.create('ns0:surface_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -436,16 +441,17 @@ def Precamber(
                 clientObject[key] = params[key]
 
         # Add Surface Load to client model
-        Model.clientModel.service.set_surface_load(load_case_no, clientObject)
+        model.clientModel.service.set_surface_load(load_case_no, clientObject)
 
     @staticmethod
     def RotaryMotion(
                  no: int = 1,
                  load_case_no: int = 1,
                  surface_no: str = '1',
-                 load_parameter = [],
+                 load_parameter: list = None,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -462,7 +468,7 @@ def RotaryMotion(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Surface Load
-        clientObject = Model.clientModel.factory.create('ns0:surface_load')
+        clientObject = model.clientModel.factory.create('ns0:surface_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -507,7 +513,7 @@ def RotaryMotion(
                 clientObject[key] = params[key]
 
         # Add Surface Load to client model
-        Model.clientModel.service.set_surface_load(load_case_no, clientObject)
+        model.clientModel.service.set_surface_load(load_case_no, clientObject)
 
     @staticmethod
     def Mass(
@@ -515,9 +521,10 @@ def Mass(
                  load_case_no: int = 1,
                  surface_no: str = '1',
                  individual_mass_components : bool = False,
-                 mass_parameter = [],
+                 mass_parameter: list = None,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -535,7 +542,7 @@ def Mass(
             params (dict, optional):
         """
         # Client model | Surface Load
-        clientObject = Model.clientModel.factory.create('ns0:surface_load')
+        clientObject = model.clientModel.factory.create('ns0:surface_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -577,4 +584,4 @@ def Mass(
                 clientObject[key] = params[key]
 
         # Add Surface Load to client model
-        Model.clientModel.service.set_surface_load(load_case_no, clientObject)
+        model.clientModel.service.set_surface_load(load_case_no, clientObject)
diff --git a/RFEM/Loads/surfacesetload.py b/RFEM/Loads/surfacesetload.py
index f84fdc97..83929020 100644
--- a/RFEM/Loads/surfacesetload.py
+++ b/RFEM/Loads/surfacesetload.py
@@ -9,7 +9,8 @@ def __init__(self,
                  surface_sets: str = '1',
                  magnitude: float = 1.0,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -20,7 +21,7 @@ def __init__(self,
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Surface Load
-        clientObject = Model.clientModel.factory.create('ns0:surface_set_load')
+        clientObject = model.clientModel.factory.create('ns0:surface_set_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -54,7 +55,7 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Surface Load to client model
-        Model.clientModel.service.set_surface_set_load(load_case_no, clientObject)
+        model.clientModel.service.set_surface_set_load(load_case_no, clientObject)
 
     @staticmethod
     def Force(
@@ -63,9 +64,10 @@ def Force(
                  surface_sets: str = '1',
                  load_direction = SurfaceSetLoadDirection.LOAD_DIRECTION_GLOBAL_Z_OR_USER_DEFINED_W_TRUE,
                  load_distribution = SurfaceSetLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
-                 load_parameter = [],
+                 load_parameter: list = None,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -94,7 +96,7 @@ def Force(
             load_parameter = [[distance_1, delta_distance_1, magnitude_1], [distance_2, delta_distance_2, magnitude_2]...]
         """
         # Client model | Surface Load
-        clientObject = Model.clientModel.factory.create('ns0:surface_set_load')
+        clientObject = model.clientModel.factory.create('ns0:surface_set_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -163,9 +165,9 @@ def Force(
 
         elif load_distribution == SurfaceSetLoadDistribution.LOAD_DISTRIBUTION_VARYING_IN_Z:
 
-            clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:surface_set_load.varying_load_parameters')
+            clientObject.varying_load_parameters = model.clientModel.factory.create('ns0:surface_set_load.varying_load_parameters')
             for i,j in enumerate(load_parameter):
-                mlvlp = Model.clientModel.factory.create('ns0:surface_set_load_varying_load_parameters')
+                mlvlp = model.clientModel.factory.create('ns0:surface_set_load_varying_load_parameters')
                 mlvlp.no = i+1
                 mlvlp.distance = load_parameter[i][0]
                 mlvlp.delta_distance = load_parameter[i][1]
@@ -183,7 +185,7 @@ def Force(
                 clientObject[key] = params[key]
 
         # Add Surface Load to client model
-        Model.clientModel.service.set_surface_set_load(load_case_no, clientObject)
+        model.clientModel.service.set_surface_set_load(load_case_no, clientObject)
 
     @staticmethod
     def Temperature(
@@ -191,9 +193,10 @@ def Temperature(
                  load_case_no: int = 1,
                  surface_sets: str = '1',
                  load_distribution = SurfaceSetLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
-                 load_parameter = None,
+                 load_parameter: list = None,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -219,7 +222,7 @@ def Temperature(
                 load_parameter = [t_c_1, delta_t_1, t_c_2, delta_t_2, node_1, node_2, SurfaceLoadAxisDefinitionType, SurfaceLoadAxisDefinitionAxis, axis_definition_p1]
         """
         # Client model | Surface Load
-        clientObject = Model.clientModel.factory.create('ns0:surface_set_load')
+        clientObject = model.clientModel.factory.create('ns0:surface_set_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -295,7 +298,7 @@ def Temperature(
                 clientObject[key] = params[key]
 
         # Add Surface Load to client model
-        Model.clientModel.service.set_surface_set_load(load_case_no, clientObject)
+        model.clientModel.service.set_surface_set_load(load_case_no, clientObject)
 
     @staticmethod
     def AxialStrain(
@@ -303,9 +306,10 @@ def AxialStrain(
                  load_case_no: int = 1,
                  surface_sets: str = '1',
                  load_distribution = SurfaceSetLoadDistribution.LOAD_DISTRIBUTION_UNIFORM,
-                 load_parameter = [],
+                 load_parameter: list = None,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -328,7 +332,7 @@ def AxialStrain(
             load_parameter = [magnitude_axial_strain_1x, magnitude_axial_strain_1y, magnitude_axial_strain_2x, magnitude_axial_strain_2y, node_1, node_2]
         """
         # Client model | Surface Load
-        clientObject = Model.clientModel.factory.create('ns0:surface_set_load')
+        clientObject = model.clientModel.factory.create('ns0:surface_set_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -384,7 +388,7 @@ def AxialStrain(
                 clientObject[key] = params[key]
 
         # Add Surface Load to client model
-        Model.clientModel.service.set_surface_set_load(load_case_no, clientObject)
+        model.clientModel.service.set_surface_set_load(load_case_no, clientObject)
 
     @staticmethod
     def Precamber(
@@ -393,7 +397,8 @@ def Precamber(
                  surface_sets: str = '1',
                  uniform_magnitude : float = 0.0,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -404,7 +409,7 @@ def Precamber(
             params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
         """
         # Client model | Surface Load
-        clientObject = Model.clientModel.factory.create('ns0:surface_set_load')
+        clientObject = model.clientModel.factory.create('ns0:surface_set_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -438,16 +443,17 @@ def Precamber(
                 clientObject[key] = params[key]
 
         # Add Surface Load to client model
-        Model.clientModel.service.set_surface_set_load(load_case_no, clientObject)
+        model.clientModel.service.set_surface_set_load(load_case_no, clientObject)
 
     @staticmethod
     def RotaryMotion(
                  no: int = 1,
                  load_case_no: int = 1,
                  surface_sets: str = '1',
-                 load_parameter = [],
+                 load_parameter: list = None,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -463,7 +469,7 @@ def RotaryMotion(
             load_parameter = [angular_velocity, angular_acceleration, SurfaceLoadAxisDefinitionType, SurfaceLoadAxisDefinitionAxis, SurfaceLoadAxisDirectionType; [x1, y1, z1]]
         """
         # Client model | Surface Load
-        clientObject = Model.clientModel.factory.create('ns0:surface_set_load')
+        clientObject = model.clientModel.factory.create('ns0:surface_set_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -508,7 +514,7 @@ def RotaryMotion(
                 clientObject[key] = params[key]
 
         # Add Surface Load to client model
-        Model.clientModel.service.set_surface_set_load(load_case_no, clientObject)
+        model.clientModel.service.set_surface_set_load(load_case_no, clientObject)
 
     @staticmethod
     def Mass(
@@ -516,9 +522,10 @@ def Mass(
                  load_case_no: int = 1,
                  surface_sets: str = '1',
                  individual_mass_components : bool = False,
-                 mass_parameter = [],
+                 mass_parameter: list = None,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Load Tag
@@ -535,7 +542,7 @@ def Mass(
             mass_parameter = [mass_x, mass_y, mass_z]
         """
         # Client model | Surface Load
-        clientObject = Model.clientModel.factory.create('ns0:surface_set_load')
+        clientObject = model.clientModel.factory.create('ns0:surface_set_load')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -571,4 +578,4 @@ def Mass(
                 clientObject[key] = params[key]
 
         # Add Surface Load to client model
-        Model.clientModel.service.set_surface_set_load(load_case_no, clientObject)
+        model.clientModel.service.set_surface_set_load(load_case_no, clientObject)
diff --git a/RFEM/Reports/partsList.py b/RFEM/Reports/partsList.py
index 637bf8d0..cb76ded1 100644
--- a/RFEM/Reports/partsList.py
+++ b/RFEM/Reports/partsList.py
@@ -1,62 +1,62 @@
 
 from RFEM.initModel import Model
 
-def GetPartsListAllByMaterial():
+def GetPartsListAllByMaterial(model = Model):
     '''
     Returns Parts List All By Material
     '''
     try:
-        return Model.clientModel.service.get_parts_list_all_by_material()
+        return model.clientModel.service.get_parts_list_all_by_material()
     except:
-        Model.clientModel.service.generate_parts_lists()
-        return Model.clientModel.service.get_parts_list_all_by_material()
+        model.clientModel.service.generate_parts_lists()
+        return model.clientModel.service.get_parts_list_all_by_material()
 
-def GetPartsListMemberRepresentativesByMaterial():
+def GetPartsListMemberRepresentativesByMaterial(model = Model):
     '''
     Returns Parts List Member Representatives By Material
     '''
     try:
-        return Model.clientModel.service.get_parts_list_member_representatives_by_material()
+        return model.clientModel.service.get_parts_list_member_representatives_by_material()
     except:
-        Model.clientModel.service.generate_parts_lists()
-        return Model.clientModel.service.get_parts_list_member_representatives_by_material()
+        model.clientModel.service.generate_parts_lists()
+        return model.clientModel.service.get_parts_list_member_representatives_by_material()
 
-def GetPartsListMemberSetsByMaterial():
+def GetPartsListMemberSetsByMaterial(model = Model):
     '''
     Returns Parts List Member Sets By Material
     '''
     try:
-        return Model.clientModel.service.get_parts_list_member_sets_by_material()
+        return model.clientModel.service.get_parts_list_member_sets_by_material()
     except:
-        Model.clientModel.service.generate_parts_lists()
-        return Model.clientModel.service.get_parts_list_member_sets_by_material()
+        model.clientModel.service.generate_parts_lists()
+        return model.clientModel.service.get_parts_list_member_sets_by_material()
 
-def GetPartsListMembersByMaterial():
+def GetPartsListMembersByMaterial(model = Model):
     '''
     Returns Parts List Members By Material
     '''
     try:
-        return Model.clientModel.service.get_parts_list_members_by_material()
+        return model.clientModel.service.get_parts_list_members_by_material()
     except:
-        Model.clientModel.service.generate_parts_lists()
-        return Model.clientModel.service.get_parts_list_members_by_material()
+        model.clientModel.service.generate_parts_lists()
+        return model.clientModel.service.get_parts_list_members_by_material()
 
-def GetPartsListSolidsByMaterial():
+def GetPartsListSolidsByMaterial(model = Model):
     '''
     Returns Parts List Solids By Material
     '''
     try:
-        return Model.clientModel.service.get_parts_list_solids_by_material()
+        return model.clientModel.service.get_parts_list_solids_by_material()
     except:
-        Model.clientModel.service.generate_parts_lists()
-        return Model.clientModel.service.get_parts_list_solids_by_material()
+        model.clientModel.service.generate_parts_lists()
+        return model.clientModel.service.get_parts_list_solids_by_material()
 
-def GetPartsListSurfacessByMaterial():
+def GetPartsListSurfacessByMaterial(model = Model):
     '''
     Returns Parts List Surfaces By Material
     '''
     try:
-        return Model.clientModel.service.get_parts_list_surfaces_by_material()
+        return model.clientModel.service.get_parts_list_surfaces_by_material()
     except:
-        Model.clientModel.service.generate_parts_lists()
-        return Model.clientModel.service.get_parts_list_surfaces_by_material()
+        model.clientModel.service.generate_parts_lists()
+        return model.clientModel.service.get_parts_list_surfaces_by_material()
diff --git a/RFEM/Results/designOverview.py b/RFEM/Results/designOverview.py
index a7c731c0..7cee1942 100644
--- a/RFEM/Results/designOverview.py
+++ b/RFEM/Results/designOverview.py
@@ -1,11 +1,11 @@
 from RFEM.initModel import Model
 
-def GetDesignOverview():
+def GetDesignOverview(model = Model):
     '''
     Returns whole Design Overview list.
     '''
     # Return Design Overview
-    return Model.clientModel.service.get_design_overview()
+    return model.clientModel.service.get_design_overview()
 
 def GetPartialDesignOverview(comply: bool = False):
     """
diff --git a/RFEM/SpecialObjects/enlargedColumnHead.py b/RFEM/SpecialObjects/enlargedColumnHead.py
index e559ebed..76b29665 100644
--- a/RFEM/SpecialObjects/enlargedColumnHead.py
+++ b/RFEM/SpecialObjects/enlargedColumnHead.py
@@ -4,10 +4,11 @@ class EnlargedColumnHead():
     def __init__(self,
                  no: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Enlarged Column Head
-        clientObject = Model.clientModel.factory.create('ns0:enlarged_column_head')
+        clientObject = model.clientModel.factory.create('ns0:enlarged_column_head')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -24,4 +25,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Enlarged Column Head to client model
-        Model.clientModel.service.set_enlarged_column_head(clientObject)
+        model.clientModel.service.set_enlarged_column_head(clientObject)
diff --git a/RFEM/SpecialObjects/intersection.py b/RFEM/SpecialObjects/intersection.py
index 3e943f8e..96a3d255 100644
--- a/RFEM/SpecialObjects/intersection.py
+++ b/RFEM/SpecialObjects/intersection.py
@@ -6,10 +6,11 @@ def __init__(self,
                  surface_1: int = 1,
                  surface_2: int = 2,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Intersection
-        clientObject = Model.clientModel.factory.create('ns0:intersection')
+        clientObject = model.clientModel.factory.create('ns0:intersection')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -30,4 +31,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Intersection to client model
-        Model.clientModel.service.set_intersection(clientObject)
+        model.clientModel.service.set_intersection(clientObject)
diff --git a/RFEM/SpecialObjects/resultSection.py b/RFEM/SpecialObjects/resultSection.py
index caa9e994..82ed22f2 100644
--- a/RFEM/SpecialObjects/resultSection.py
+++ b/RFEM/SpecialObjects/resultSection.py
@@ -4,10 +4,11 @@ class ResultSection():
     def __init__(self,
                  no: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Result Section
-        clientObject = Model.clientModel.factory.create('ns0:result_section')
+        clientObject = model.clientModel.factory.create('ns0:result_section')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -24,4 +25,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Result Section to client model
-        Model.clientModel.service.set_result_section(clientObject)
+        model.clientModel.service.set_result_section(clientObject)
diff --git a/RFEM/SpecialObjects/rigidLink.py b/RFEM/SpecialObjects/rigidLink.py
index 8c46a16e..22f484ff 100644
--- a/RFEM/SpecialObjects/rigidLink.py
+++ b/RFEM/SpecialObjects/rigidLink.py
@@ -8,10 +8,11 @@ def __init__(self,
                  line_2: int = 2,
                  ignore_relative_position: bool = True,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Rigid Link
-        clientObject = Model.clientModel.factory.create('ns0:rigid_link')
+        clientObject = model.clientModel.factory.create('ns0:rigid_link')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -38,7 +39,7 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add rigid link to client model
-        Model.clientModel.service.set_rigid_link(clientObject)
+        model.clientModel.service.set_rigid_link(clientObject)
 
     @staticmethod
     def LineToLine(
@@ -47,10 +48,11 @@ def LineToLine(
                  line_2: int = 2,
                  ignore_relative_position: bool = True,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Line To Line Rigid Link
-        clientObject = Model.clientModel.factory.create('ns0:rigid_link')
+        clientObject = model.clientModel.factory.create('ns0:rigid_link')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -77,7 +79,7 @@ def LineToLine(
                 clientObject[key] = params[key]
 
         # Add rigid link to client model
-        Model.clientModel.service.set_rigid_link(clientObject)
+        model.clientModel.service.set_rigid_link(clientObject)
 
     @staticmethod
     def LineToSurface(
@@ -86,10 +88,11 @@ def LineToSurface(
                  surface: int = 1,
                  ignore_relative_position: bool = True,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Line To Surface Rigid Link
-        clientObject = Model.clientModel.factory.create('ns0:rigid_link')
+        clientObject = model.clientModel.factory.create('ns0:rigid_link')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -117,7 +120,7 @@ def LineToSurface(
                 clientObject[key] = params[key]
 
         # Add rigid link to client model
-        Model.clientModel.service.set_rigid_link(clientObject)
+        model.clientModel.service.set_rigid_link(clientObject)
 
     @staticmethod
     def Diapragm(
@@ -125,10 +128,11 @@ def Diapragm(
                  nodes: str = '3 4',
                  lines: str = '6 7',
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Diapragm Rigid Link
-        clientObject = Model.clientModel.factory.create('ns0:rigid_link')
+        clientObject = model.clientModel.factory.create('ns0:rigid_link')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -154,4 +158,4 @@ def Diapragm(
                 clientObject[key] = params[key]
 
         # Add rigid link to client model
-        Model.clientModel.service.set_rigid_link(clientObject)
+        model.clientModel.service.set_rigid_link(clientObject)
diff --git a/RFEM/SpecialObjects/structureModification.py b/RFEM/SpecialObjects/structureModification.py
index d12b976f..6f72b343 100644
--- a/RFEM/SpecialObjects/structureModification.py
+++ b/RFEM/SpecialObjects/structureModification.py
@@ -4,10 +4,11 @@ class StructureModification():
     def __init__(self,
                  no: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Structure Modification
-        clientObject = Model.clientModel.factory.create('ns0:structure_modification')
+        clientObject = model.clientModel.factory.create('ns0:structure_modification')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -24,4 +25,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Structure Modification to client model
-        Model.clientModel.service.set_structure_modification(clientObject)
+        model.clientModel.service.set_structure_modification(clientObject)
diff --git a/RFEM/SpecialObjects/surfaceContact.py b/RFEM/SpecialObjects/surfaceContact.py
index 43d7fb82..e6186eff 100644
--- a/RFEM/SpecialObjects/surfaceContact.py
+++ b/RFEM/SpecialObjects/surfaceContact.py
@@ -4,10 +4,11 @@ class SurfaceContact():
     def __init__(self,
                  no: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Surfaces Contact
-        clientObject = Model.clientModel.factory.create('ns0:surfaces_contact')
+        clientObject = model.clientModel.factory.create('ns0:surfaces_contact')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -24,4 +25,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Surfaces Contact to client model
-        Model.clientModel.service.set_surfaces_contact(clientObject)
+        model.clientModel.service.set_surfaces_contact(clientObject)
diff --git a/RFEM/SpecialObjects/surfaceResultAdjustment.py b/RFEM/SpecialObjects/surfaceResultAdjustment.py
index 4e1d2e17..9d4f84aa 100644
--- a/RFEM/SpecialObjects/surfaceResultAdjustment.py
+++ b/RFEM/SpecialObjects/surfaceResultAdjustment.py
@@ -4,10 +4,11 @@ class SurfaceResultsAdjustment():
     def __init__(self,
                  no: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Surface Result Adjustment
-        clientObject = Model.clientModel.factory.create('ns0:surface_results_adjustment')
+        clientObject = model.clientModel.factory.create('ns0:surface_results_adjustment')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -24,4 +25,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Surface Result Adjustmentto client model
-        Model.clientModel.service.set_surface_results_adjustment(clientObject)
+        model.clientModel.service.set_surface_results_adjustment(clientObject)
diff --git a/RFEM/Tools/ModelCheck.py b/RFEM/Tools/ModelCheck.py
index 82b4ba03..43869749 100644
--- a/RFEM/Tools/ModelCheck.py
+++ b/RFEM/Tools/ModelCheck.py
@@ -1,13 +1,11 @@
+from RFEM.BasicObjects.member import Member
 from RFEM.initModel import Model
 from RFEM.enums import ModelCheckGetOptionType, ModelCheckProcessOptionType
 
 class ModelCheck():
 
-    def __init__(self):
-        pass
-
     @staticmethod
-    def GetIdenticalNodes(tolerance):
+    def GetIdenticalNodes(tolerance, model = Model):
         """
         Args:
             tolerance (float): Tolerance
@@ -16,12 +14,12 @@ def GetIdenticalNodes(tolerance):
         """
 
         operation = ModelCheckGetOptionType.IDENTICAL_NODES.name
-        object_groups = Model.clientModel.service.model_check__get_object_groups_operation(operation, tolerance)
+        object_groups = model.clientModel.service.model_check__get_object_groups_operation(operation, tolerance)
 
         return object_groups
 
     @staticmethod
-    def DeleteUnusedNodes(tolerance, object_groups):
+    def DeleteUnusedNodes(tolerance, object_groups, model = Model):
         """
         Args:
             tolerance (float): Tolerance
@@ -29,10 +27,10 @@ def DeleteUnusedNodes(tolerance, object_groups):
         """
 
         process = ModelCheckProcessOptionType.DELETE_UNUSED_NODES.name
-        Model.clientModel.service.model_check__process_object_groups_operation(process, tolerance, object_groups)
+        model.clientModel.service.model_check__process_object_groups_operation(process, tolerance, object_groups)
 
     @staticmethod
-    def UniteNodes(tolerance, object_groups):
+    def UniteNodes(tolerance, object_groups, model = Model):
         """
         Args:
             tolerance (float): Tolerance
@@ -40,10 +38,10 @@ def UniteNodes(tolerance, object_groups):
         """
 
         process = ModelCheckProcessOptionType.UNITE_NODES_AND_DELETE_UNUSED_NODES.name
-        Model.clientModel.service.model_check__process_object_groups_operation(process, tolerance, object_groups)
+        model.clientModel.service.model_check__process_object_groups_operation(process, tolerance, object_groups)
 
     @staticmethod
-    def GetNotConnectedLines(tolerance):
+    def GetNotConnectedLines(tolerance, model = Model):
         """
         Args:
             tolerance (float): Tolerance
@@ -52,12 +50,12 @@ def GetNotConnectedLines(tolerance):
         """
 
         operation = ModelCheckGetOptionType.CROSSING_LINES.name
-        line_groups = Model.clientModel.service.model_check__get_object_groups_operation(operation, tolerance)
+        line_groups = model.clientModel.service.model_check__get_object_groups_operation(operation, tolerance)
 
         return line_groups
 
     @staticmethod
-    def CrossLines(tolerance, line_groups):
+    def CrossLines(tolerance, line_groups, model = Model):
         """
         Args:
             tolerance (float): Tolerance
@@ -65,10 +63,10 @@ def CrossLines(tolerance, line_groups):
         """
 
         process = ModelCheckProcessOptionType.CROSS_LINES.name
-        Model.clientModel.service.model_check__process_object_groups_operation(process, tolerance, line_groups)
+        model.clientModel.service.model_check__process_object_groups_operation(process, tolerance, line_groups)
 
     @staticmethod
-    def GetNotConnectedMembers(tolerance):
+    def GetNotConnectedMembers(tolerance, model = Model):
         """
         Args:
             tolerance (float): Tolerance
@@ -77,12 +75,12 @@ def GetNotConnectedMembers(tolerance):
         """
 
         operation = ModelCheckGetOptionType.CROSSING_MEMBERS.name
-        member_groups = Model.clientModel.service.model_check__get_object_groups_operation(operation, tolerance)
+        member_groups = model.clientModel.service.model_check__get_object_groups_operation(operation, tolerance)
 
         return member_groups
 
     @staticmethod
-    def CrossMembers(tolerance, member_groups):
+    def CrossMembers(tolerance, member_groups, model = Model):
         """
         Args:
             tolerance (float): Tolerance
@@ -90,28 +88,28 @@ def CrossMembers(tolerance, member_groups):
         """
 
         process = ModelCheckProcessOptionType.CROSS_MEMBERS.name
-        Model.clientModel.service.model_check__process_object_groups_operation(process, tolerance, member_groups)
+        model.clientModel.service.model_check__process_object_groups_operation(process, tolerance, member_groups)
 
     @staticmethod
-    def GetOverlappingLines():
+    def GetOverlappingLines(model = Model):
         """
         Returns:
             Overlapping Line Groups
         """
 
         operation = ModelCheckGetOptionType.OVERLAPPING_LINES.name
-        overlapping_lines = Model.clientModel.service.model_check__get_object_groups_operation(operation)
+        overlapping_lines = model.clientModel.service.model_check__get_object_groups_operation(operation)
 
         return overlapping_lines
 
     @staticmethod
-    def GetOverlappingMembers():
+    def GetOverlappingMembers(model = Model):
         """
         Returns:
             Overlapping Member Groups
         """
 
         operation = ModelCheckGetOptionType.OVERLAPPING_MEMBERS.name
-        overlapping_members = Model.clientModel.service.model_check__get_object_groups_operation(operation)
+        overlapping_members = model.clientModel.service.model_check__get_object_groups_operation(operation)
 
         return overlapping_members
diff --git a/RFEM/Tools/PlausibilityCheck.py b/RFEM/Tools/PlausibilityCheck.py
index f238e8f7..24e2b3fd 100644
--- a/RFEM/Tools/PlausibilityCheck.py
+++ b/RFEM/Tools/PlausibilityCheck.py
@@ -4,9 +4,10 @@
 class PlausibilityCheck():
 
     def __init__(self,
-                 skip_warnings:bool = False):
+                 skip_warnings:bool = False,
+                 model = Model):
 
-        response = Model.clientModel.service.plausibility_check(skip_warnings)
+        response = model.clientModel.service.plausibility_check(skip_warnings)
 
         if "failed" in response:
             self.checkresult = PlausibilityCheckResult.CHECK_FAILED.name
diff --git a/RFEM/Tools/centreOfGravityAndObjectInfo.py b/RFEM/Tools/centreOfGravityAndObjectInfo.py
index 9d2513ab..49dda323 100644
--- a/RFEM/Tools/centreOfGravityAndObjectInfo.py
+++ b/RFEM/Tools/centreOfGravityAndObjectInfo.py
@@ -78,17 +78,19 @@ def SolidInformation(
         result = ObjectInformation.__BuildResultsArray(ObjectTypes.E_OBJECT_TYPE_SOLID, no, 0)
         return ObjectInformation.__AreaVolumeMassInformationLength(information,result, 4)
 
-    def __BuildResultsArray(object_type, no, parent_no):
-        elements = Model.clientModel.factory.create('ns0:array_of_get_center_of_gravity_and_objects_info_elements_type')
-        clientObject = Model.clientModel.factory.create('ns0:get_center_of_gravity_and_objects_info_element_type')
+    @staticmethod
+    def __BuildResultsArray(object_type, no, parent_no, model = Model):
+        elements = model.clientModel.factory.create('ns0:array_of_get_center_of_gravity_and_objects_info_elements_type')
+        clientObject = model.clientModel.factory.create('ns0:get_center_of_gravity_and_objects_info_element_type')
         clientObject.parent_no = parent_no
         clientObject.no = no
         clientObject.type = object_type.name
         elements.element.append(clientObject)
-        result = Model.clientModel.service.get_center_of_gravity_and_objects_info(elements)
-        result = Model.clientModel.dict(result)
+        result = model.clientModel.service.get_center_of_gravity_and_objects_info(elements)
+        result = model.clientModel.dict(result)
         return result
 
+    @staticmethod
     def __AreaVolumeMassInformationLength(information, result, row_key):
         if information.name == "LENGTH" or information.name == "AREA":
             return result['section'][row_key].rows[0][0].value
diff --git a/RFEM/Tools/sectionDialogue.py b/RFEM/Tools/sectionDialogue.py
index 354806f3..9eb1a292 100644
--- a/RFEM/Tools/sectionDialogue.py
+++ b/RFEM/Tools/sectionDialogue.py
@@ -1,43 +1,46 @@
 from RFEM.initModel import Model
 
-def CreateSectionFavoriteList(name: str = "Favorites"):
+def CreateSectionFavoriteList(name: str = "Favorites", model = Model):
 
     if isinstance(name, str):
-        Model.clientModel.service.create_section_favorite_list(name)
+        model.clientModel.service.create_section_favorite_list(name)
     else:
         print("WARNING:Name of the section favorite list should be a string. Please kindly check the inputs.")
 
 def AddSectionToFavoriteList(list_name: str = "Favorites",
-                             section_name: str = "IPE 300"):
+                             section_name: str = "IPE 300",
+                             model = Model):
 
     if isinstance(list_name, str) and isinstance(section_name, str):
-        Model.clientModel.service.add_section_to_favorite_list(list_name, section_name)
+        model.clientModel.service.add_section_to_favorite_list(list_name, section_name)
     else:
         print("WARNING:Name of the section favorite list and the section should be a string. Please kindly check the inputs.")
 
 def DeleteSectionFromFavoriteList(list_name: str = "Favorites",
-                                  section_name: str = "IPE 300"):
+                                  section_name: str = "IPE 300",
+                                  model = Model):
 
     if isinstance(list_name, str) and isinstance(section_name, str):
-        Model.clientModel.service.delete_section_from_favorite_list(list_name, section_name)
+        model.clientModel.service.delete_section_from_favorite_list(list_name, section_name)
     else:
         print("WARNING:Name of the section favorite list and the section should be a string. Please kindly check the inputs.")
 
-def GetSectionFavoriteLists():
+def GetSectionFavoriteLists(model = Model):
 
-    return Model.clientModel.service.get_section_favorite_lists()
+    return model.clientModel.service.get_section_favorite_lists()
 
-def DeleteSectionFavoriteList(name: str = "Favorites"):
+def DeleteSectionFavoriteList(name: str = "Favorites", model = Model):
 
     if isinstance(name, str):
-        Model.clientModel.service.delete_section_favorite_list(name)
+        model.clientModel.service.delete_section_favorite_list(name)
     else:
         print("WARNING:Name of the section favorite list should be a string. Please kindly check the inputs.")
 
 def CreateSectionFromRsectionFile(no: int = 1,
-                                  file_path: str = "/rsection_file_path/"):
+                                  file_path: str = "/rsection_file_path/",
+                                  model = Model):
 
     if isinstance(no, int) and isinstance(file_path, str):
-        Model.clientModel.service.create_section_from_rsection_file(no, file_path)
+        model.clientModel.service.create_section_from_rsection_file(no, file_path)
     else:
         print("WARNING: Type of file_path argument should be string and the type of the no argument should be integer. Please kindly check the inputs.")
diff --git a/RFEM/TypesForLines/lineHinge.py b/RFEM/TypesForLines/lineHinge.py
index ea3149fb..30af4259 100644
--- a/RFEM/TypesForLines/lineHinge.py
+++ b/RFEM/TypesForLines/lineHinge.py
@@ -14,7 +14,8 @@ def __init__(self,
                  translational_release: list = [800, inf, inf],
                  rotational_release_phi: int = inf,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         """
         assigned_to doesn't work. Can't figure why.
@@ -22,7 +23,7 @@ def __init__(self,
         """
 
         # Client model | Line Hinge
-        clientObject = Model.clientModel.factory.create('ns0:line_hinge')
+        clientObject = model.clientModel.factory.create('ns0:line_hinge')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -51,5 +52,5 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Line Hinge to client model
-        Model.clientModel.service.set_line_hinge(clientObject)
+        model.clientModel.service.set_line_hinge(clientObject)
 
diff --git a/RFEM/TypesForLines/lineMeshRefinements.py b/RFEM/TypesForLines/lineMeshRefinements.py
index ea8305f7..0fa05cf6 100644
--- a/RFEM/TypesForLines/lineMeshRefinements.py
+++ b/RFEM/TypesForLines/lineMeshRefinements.py
@@ -11,10 +11,11 @@ def __init__(self,
                  type = LineMeshRefinementsType.TYPE_LENGTH,
                  number_of_layers: int = 2,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Line Mesh Refinement
-        clientObject = Model.clientModel.factory.create('ns0:line_mesh_refinement')
+        clientObject = model.clientModel.factory.create('ns0:line_mesh_refinement')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -40,7 +41,7 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Line Mesh Refinement to client model
-        Model.clientModel.service.set_line_mesh_refinement(clientObject)
+        model.clientModel.service.set_line_mesh_refinement(clientObject)
 
     @staticmethod
     def TargetFELength(
@@ -49,10 +50,11 @@ def TargetFELength(
                        target_length: float = 0.1,
                        number_of_layers: int = 2,
                        comment: str = '',
-                       params: dict = None):
+                       params: dict = None,
+                       model = Model):
 
         # Client model | Line Mesh Refinement
-        clientObject = Model.clientModel.factory.create('ns0:line_mesh_refinement')
+        clientObject = model.clientModel.factory.create('ns0:line_mesh_refinement')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -81,7 +83,7 @@ def TargetFELength(
                 clientObject[key] = params[key]
 
         # Add Line Mesh Refinement to client model
-        Model.clientModel.service.set_line_mesh_refinement(clientObject)
+        model.clientModel.service.set_line_mesh_refinement(clientObject)
 
     @staticmethod
     def NumberFiniteElements(
@@ -90,10 +92,11 @@ def NumberFiniteElements(
                              elements_finite_elements: int = 10,
                              number_of_layers: int = 2,
                              comment: str = '',
-                             params: dict = None):
+                             params: dict = None,
+                             model = Model):
 
         # Client model | Line Mesh Refinement
-        clientObject = Model.clientModel.factory.create('ns0:line_mesh_refinement')
+        clientObject = model.clientModel.factory.create('ns0:line_mesh_refinement')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -122,7 +125,7 @@ def NumberFiniteElements(
                 clientObject[key] = params[key]
 
         # Add Line Mesh Refinement to client model
-        Model.clientModel.service.set_line_mesh_refinement(clientObject)
+        model.clientModel.service.set_line_mesh_refinement(clientObject)
 
     @staticmethod
     def Gradually(
@@ -131,10 +134,11 @@ def Gradually(
                   gradual_rows: int = 10,
                   number_of_layers: int = 2,
                   comment: str = '',
-                  params: dict = None):
+                  params: dict = None,
+                  model = Model):
 
         # Client model | Line Mesh Refinement
-        clientObject = Model.clientModel.factory.create('ns0:line_mesh_refinement')
+        clientObject = model.clientModel.factory.create('ns0:line_mesh_refinement')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -163,4 +167,4 @@ def Gradually(
                 clientObject[key] = params[key]
 
         # Add Line Mesh Refinement to client model
-        Model.clientModel.service.set_line_mesh_refinement(clientObject)
+        model.clientModel.service.set_line_mesh_refinement(clientObject)
diff --git a/RFEM/TypesForLines/lineSupport.py b/RFEM/TypesForLines/lineSupport.py
index 598e3eb7..64c39745 100644
--- a/RFEM/TypesForLines/lineSupport.py
+++ b/RFEM/TypesForLines/lineSupport.py
@@ -38,10 +38,11 @@ def __init__(self,
                  lines_no: str = '1 2',
                  support_type = LineSupportType.HINGED,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Line Support
-        clientObject = Model.clientModel.factory.create('ns0:line_support')
+        clientObject = model.clientModel.factory.create('ns0:line_support')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -90,4 +91,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Line Support to client model
-        Model.clientModel.service.set_line_support(clientObject)
+        model.clientModel.service.set_line_support(clientObject)
diff --git a/RFEM/TypesForLines/lineWeldedJoint.py b/RFEM/TypesForLines/lineWeldedJoint.py
index 0c6af073..c682ab49 100644
--- a/RFEM/TypesForLines/lineWeldedJoint.py
+++ b/RFEM/TypesForLines/lineWeldedJoint.py
@@ -11,10 +11,11 @@ def __init__(self,
                  weld_size_a1: int = 0.005,
                  longitudinal_arrangement = WeldLongitudalArrangement.CONTINUOUS,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Line Welded Joint
-        clientObject = Model.clientModel.factory.create('ns0:line_welded_joint')
+        clientObject = model.clientModel.factory.create('ns0:line_welded_joint')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -43,21 +44,21 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Line welded joint to client model
-        Model.clientModel.service.set_line_welded_joint(clientObject)
+        model.clientModel.service.set_line_welded_joint(clientObject)
 
         iLines = ConvertStrToListOfInt(lines)
         iSurfaces = ConvertStrToListOfInt(surfaces)
 
         for i in iLines:
-            line = Model.clientModel.service.get_line(i)
+            line = model.clientModel.service.get_line(i)
             line.has_line_welds = True
-            clientWeld = Model.clientModel.factory.create('ns0:line_line_weld_assignment')
+            clientWeld = model.clientModel.factory.create('ns0:line_line_weld_assignment')
             clientWeld.no = i
             clientWeld.weld = no
             clientWeld.surface1 = iSurfaces[0]
             clientWeld.surface2 = iSurfaces[1]
             if len(iSurfaces) == 3:
                 clientWeld.surface3 = iSurfaces[2]
-            line.line_weld_assignment = Model.clientModel.factory.create('ns0:array_of_line_line_weld_assignment')
+            line.line_weld_assignment = model.clientModel.factory.create('ns0:array_of_line_line_weld_assignment')
             line.line_weld_assignment.line_line_weld_assignment.append(clientWeld)
-            Model.clientModel.service.set_line(line)
+            model.clientModel.service.set_line(line)
diff --git a/RFEM/TypesForMembers/memberDefinableStiffness.py b/RFEM/TypesForMembers/memberDefinableStiffness.py
index f158002a..34be4236 100644
--- a/RFEM/TypesForMembers/memberDefinableStiffness.py
+++ b/RFEM/TypesForMembers/memberDefinableStiffness.py
@@ -4,10 +4,11 @@ class MemberDefinableStiffness():
     def __init__(self,
                  no: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Member Definable Stffness
-        clientObject = Model.clientModel.factory.create('ns0:member_definable_stiffness')
+        clientObject = model.clientModel.factory.create('ns0:member_definable_stiffness')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -24,4 +25,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Member Definable Stffness to client model
-        Model.clientModel.service.set_member_definable_stiffness(clientObject)
+        model.clientModel.service.set_member_definable_stiffness(clientObject)
diff --git a/RFEM/TypesForMembers/memberEccentricity.py b/RFEM/TypesForMembers/memberEccentricity.py
index 8ac28672..f0139888 100644
--- a/RFEM/TypesForMembers/memberEccentricity.py
+++ b/RFEM/TypesForMembers/memberEccentricity.py
@@ -4,10 +4,11 @@ class MemberEccentricity():
     def __init__(self,
                  no: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Member Eccentricity
-        clientObject = Model.clientModel.factory.create('ns0:member_eccentricity')
+        clientObject = model.clientModel.factory.create('ns0:member_eccentricity')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -24,4 +25,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Member Eccentricity to client model
-        Model.clientModel.service.set_member_eccentricity(clientObject)
+        model.clientModel.service.set_member_eccentricity(clientObject)
diff --git a/RFEM/TypesForMembers/memberHinge.py b/RFEM/TypesForMembers/memberHinge.py
index 9629a5cb..916103ee 100644
--- a/RFEM/TypesForMembers/memberHinge.py
+++ b/RFEM/TypesForMembers/memberHinge.py
@@ -12,10 +12,11 @@ def __init__(self,
                  rotational_release_my: float = 0.0,
                  rotational_release_mz: float = inf,
                  comment: str = 'Rotational Release My',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Member Hinge
-        clientObject = Model.clientModel.factory.create('ns0:member_hinge')
+        clientObject = model.clientModel.factory.create('ns0:member_hinge')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -53,4 +54,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Line to client model
-        Model.clientModel.service.set_member_hinge(clientObject)
+        model.clientModel.service.set_member_hinge(clientObject)
diff --git a/RFEM/TypesForMembers/memberNonlinearity.py b/RFEM/TypesForMembers/memberNonlinearity.py
index a1912dd7..a091afb8 100644
--- a/RFEM/TypesForMembers/memberNonlinearity.py
+++ b/RFEM/TypesForMembers/memberNonlinearity.py
@@ -4,10 +4,11 @@ class MemberNonlinearity():
     def __init__(self,
                  no: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Member Nonlinearity
-        clientObject = Model.clientModel.factory.create('ns0:member_nonlinearity')
+        clientObject = model.clientModel.factory.create('ns0:member_nonlinearity')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -24,4 +25,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Member Nonlinearity to client model
-        Model.clientModel.service.set_member_nonlinearity(clientObject)
+        model.clientModel.service.set_member_nonlinearity(clientObject)
diff --git a/RFEM/TypesForMembers/memberResultIntermediatePoints.py b/RFEM/TypesForMembers/memberResultIntermediatePoints.py
index 3d64b1cd..d9359dc4 100644
--- a/RFEM/TypesForMembers/memberResultIntermediatePoints.py
+++ b/RFEM/TypesForMembers/memberResultIntermediatePoints.py
@@ -4,10 +4,11 @@ class MemberResultIntermediatePoint():
     def __init__(self,
                  no: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Member Result Intermediate Point
-        clientObject = Model.clientModel.factory.create('ns0:member_result_intermediate_point')
+        clientObject = model.clientModel.factory.create('ns0:member_result_intermediate_point')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -24,4 +25,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Member Result Intermediate Point to client model
-        Model.clientModel.service.set_member_result_intermediate_point(clientObject)
+        model.clientModel.service.set_member_result_intermediate_point(clientObject)
diff --git a/RFEM/TypesForMembers/memberStiffnessModification.py b/RFEM/TypesForMembers/memberStiffnessModification.py
index 160d29f2..d44047d2 100644
--- a/RFEM/TypesForMembers/memberStiffnessModification.py
+++ b/RFEM/TypesForMembers/memberStiffnessModification.py
@@ -4,10 +4,11 @@ class MemberStiffnessModification():
     def __init__(self,
                  no: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Member Stiffness Modification
-        clientObject = Model.clientModel.factory.create('ns0:smember_stiffness_modification')
+        clientObject = model.clientModel.factory.create('ns0:smember_stiffness_modification')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -24,4 +25,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Member Stiffness Modification to client model
-        Model.clientModel.service.set_member_stiffness_modification(clientObject)
+        model.clientModel.service.set_member_stiffness_modification(clientObject)
diff --git a/RFEM/TypesForMembers/memberSupport.py b/RFEM/TypesForMembers/memberSupport.py
index ce85c74b..63576646 100644
--- a/RFEM/TypesForMembers/memberSupport.py
+++ b/RFEM/TypesForMembers/memberSupport.py
@@ -4,10 +4,11 @@ class MemberSupport():
     def __init__(self,
                  no: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Member Support
-        clientObject = Model.clientModel.factory.create('ns0:member_support')
+        clientObject = model.clientModel.factory.create('ns0:member_support')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -24,4 +25,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Member Support to client model
-        Model.clientModel.service.set_member_support(clientObject)
+        model.clientModel.service.set_member_support(clientObject)
diff --git a/RFEM/TypesForNodes/nodalMeshRefinement.py b/RFEM/TypesForNodes/nodalMeshRefinement.py
index e504bb9e..00105f5b 100644
--- a/RFEM/TypesForNodes/nodalMeshRefinement.py
+++ b/RFEM/TypesForNodes/nodalMeshRefinement.py
@@ -4,10 +4,11 @@ class NodalMeshRefinement():
     def __init__(self,
                  no: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Nodal Mesh Refinement
-        clientObject = Model.clientModel.factory.create('ns0:nodal_mesh_refinement')
+        clientObject = model.clientModel.factory.create('ns0:nodal_mesh_refinement')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -24,4 +25,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Nodal Mesh Refinement to client model
-        Model.clientModel.service.set_nodal_mesh_refinement(clientObject)
+        model.clientModel.service.set_nodal_mesh_refinement(clientObject)
diff --git a/RFEM/TypesForNodes/nodalSupport.py b/RFEM/TypesForNodes/nodalSupport.py
index 1b285a73..291f0447 100644
--- a/RFEM/TypesForNodes/nodalSupport.py
+++ b/RFEM/TypesForNodes/nodalSupport.py
@@ -38,10 +38,11 @@ def __init__(self,
                  nodes_no: str = '1 2',
                  support_type = NodalSupportType.HINGED,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Nodal Support
-        clientObject = Model.clientModel.factory.create('ns0:nodal_support')
+        clientObject = model.clientModel.factory.create('ns0:nodal_support')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -90,4 +91,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Nodal Support to client model
-        Model.clientModel.service.set_nodal_support(clientObject)
+        model.clientModel.service.set_nodal_support(clientObject)
diff --git a/RFEM/TypesForSolids/solidContact.py b/RFEM/TypesForSolids/solidContact.py
index 92aed1d8..ece207bf 100644
--- a/RFEM/TypesForSolids/solidContact.py
+++ b/RFEM/TypesForSolids/solidContact.py
@@ -4,10 +4,11 @@ class SolidContact():
     def __init__(self,
                  no: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Solid Contact
-        clientObject = Model.clientModel.factory.create('ns0:solid_contacts')
+        clientObject = model.clientModel.factory.create('ns0:solid_contacts')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -24,4 +25,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Solid Contact to client model
-        Model.clientModel.service.set_solid_contacts(clientObject)
+        model.clientModel.service.set_solid_contacts(clientObject)
diff --git a/RFEM/TypesForSolids/solidGas.py b/RFEM/TypesForSolids/solidGas.py
index 317c7f80..86715fbb 100644
--- a/RFEM/TypesForSolids/solidGas.py
+++ b/RFEM/TypesForSolids/solidGas.py
@@ -4,10 +4,11 @@ class SolidGas():
     def __init__(self,
                  no: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Solid Gas
-        clientObject = Model.clientModel.factory.create('ns0:solid_gas')
+        clientObject = model.clientModel.factory.create('ns0:solid_gas')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -24,4 +25,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Solid Gas to client model
-        Model.clientModel.service.set_solid_gas(clientObject)
+        model.clientModel.service.set_solid_gas(clientObject)
diff --git a/RFEM/TypesForSolids/solidMeshRefinement.py b/RFEM/TypesForSolids/solidMeshRefinement.py
index ac85ce00..f580c9cc 100644
--- a/RFEM/TypesForSolids/solidMeshRefinement.py
+++ b/RFEM/TypesForSolids/solidMeshRefinement.py
@@ -4,10 +4,11 @@ class SolidMeshRefinement():
     def __init__(self,
                  no: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Solid Mesh Refinement
-        clientObject = Model.clientModel.factory.create('ns0:solid_mesh_refinement')
+        clientObject = model.clientModel.factory.create('ns0:solid_mesh_refinement')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -24,4 +25,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Solid Mesh Refinement to client model
-        Model.clientModel.service.set_solid_mesh_refinement(clientObject)
+        model.clientModel.service.set_solid_mesh_refinement(clientObject)
diff --git a/RFEM/TypesForSpecialObjects/surfaceContactType.py b/RFEM/TypesForSpecialObjects/surfaceContactType.py
index ffcc74ef..f8d6889b 100644
--- a/RFEM/TypesForSpecialObjects/surfaceContactType.py
+++ b/RFEM/TypesForSpecialObjects/surfaceContactType.py
@@ -4,10 +4,11 @@ class SurfaceContactType():
     def __init__(self,
                  no: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Surface Contact Type
-        clientObject = Model.clientModel.factory.create('ns0:surfaces_contact_type')
+        clientObject = model.clientModel.factory.create('ns0:surfaces_contact_type')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -24,4 +25,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Surface Contact Type to client model
-        Model.clientModel.service.set_surfaces_contact_type(clientObject)
+        model.clientModel.service.set_surfaces_contact_type(clientObject)
diff --git a/RFEM/TypesForSteelDesign/steelBoundaryConditions.py b/RFEM/TypesForSteelDesign/steelBoundaryConditions.py
index bb86c457..4a7b12d8 100644
--- a/RFEM/TypesForSteelDesign/steelBoundaryConditions.py
+++ b/RFEM/TypesForSteelDesign/steelBoundaryConditions.py
@@ -21,7 +21,8 @@ def __init__(self,
                     ["End", False, False, False, False, False, False, False, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ""]
                                       ],
                 comment: str = '',
-                params: dict = {}):
+                params: dict = {},
+                model = Model):
 
         """
         Args:
@@ -92,7 +93,7 @@ def __init__(self,
         """
 
         # Client Model | Types For Steel Design Boundary Conditions
-        clientObject = Model.clientModel.factory.create('ns0:steel_boundary_conditions')
+        clientObject = model.clientModel.factory.create('ns0:steel_boundary_conditions')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -117,10 +118,10 @@ def __init__(self,
         clientObject.member_sets = ConvertToDlString(member_sets)
 
         # Boundary Conditions Nodal Supports
-        clientObject.nodal_supports = Model.clientModel.factory.create('ns0:steel_boundary_conditions.nodal_supports')
+        clientObject.nodal_supports = model.clientModel.factory.create('ns0:steel_boundary_conditions.nodal_supports')
 
         for i,j in enumerate(nodal_supports):
-            mlvlp = Model.clientModel.factory.create('ns0:steel_boundary_conditions_nodal_supports')
+            mlvlp = model.clientModel.factory.create('ns0:steel_boundary_conditions_nodal_supports')
             mlvlp.no = i
             mlvlp.node_seq_no = nodal_supports[i][0]
             mlvlp.support_type = nodal_supports[i][1].name
@@ -151,10 +152,10 @@ def __init__(self,
             clientObject.nodal_supports.steel_boundary_conditions_nodal_supports.append(mlvlp)
 
         # Boundary Conditions Member Hinges
-        clientObject.member_hinges = Model.clientModel.factory.create('ns0:steel_boundary_conditions.member_hinges')
+        clientObject.member_hinges = model.clientModel.factory.create('ns0:steel_boundary_conditions.member_hinges')
 
         for i,j in enumerate(member_hinges):
-            mlvlp = Model.clientModel.factory.create('ns0:steel_boundary_conditions_member_hinges')
+            mlvlp = model.clientModel.factory.create('ns0:steel_boundary_conditions_member_hinges')
             mlvlp.no = i
             mlvlp.node_seq_no = member_hinges[i][0]
             mlvlp.release_in_x = member_hinges[i][1]
@@ -189,5 +190,4 @@ def __init__(self,
             clientObject[key] = params[key]
 
         # Add Steel Boundary Conditions to client model
-        Model.clientModel.service.set_steel_boundary_conditions(clientObject)
-
+        model.clientModel.service.set_steel_boundary_conditions(clientObject)
diff --git a/RFEM/TypesForSteelDesign/steelEffectiveLengths.py b/RFEM/TypesForSteelDesign/steelEffectiveLengths.py
index ec588f8c..3ab8ab17 100644
--- a/RFEM/TypesForSteelDesign/steelEffectiveLengths.py
+++ b/RFEM/TypesForSteelDesign/steelEffectiveLengths.py
@@ -30,7 +30,8 @@ def __init__(self,
                  import_from_stability_analysis_enabled: bool = False,
                  determination_of_mcr = SteelEffectiveLengthsDeterminationMcrEurope.DETERMINATION_EUROPE_EIGENVALUE,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
         """
         Args:
             no (int): Effective Length Tag
@@ -89,7 +90,7 @@ def __init__(self,
         """
 
         # Client Model | Types For Steel Design Effective Lengths
-        clientObject = Model.clientModel.factory.create('ns0:steel_effective_lengths')
+        clientObject = model.clientModel.factory.create('ns0:steel_effective_lengths')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -129,10 +130,10 @@ def __init__(self,
             clientObject.name = user_defined_name[1]
 
         # Effective Lengths Nodal Supports
-        clientObject.nodal_supports = Model.clientModel.factory.create('ns0:steel_effective_lengths.nodal_supports')
+        clientObject.nodal_supports = model.clientModel.factory.create('ns0:steel_effective_lengths.nodal_supports')
 
         for i,j in enumerate(nodal_supports):
-            mlvlp = Model.clientModel.factory.create('ns0:steel_effective_lengths_nodal_supports')
+            mlvlp = model.clientModel.factory.create('ns0:steel_effective_lengths_nodal_supports')
             mlvlp.no = i
             mlvlp.support_type = nodal_supports[i][0].name
             mlvlp.support_in_z = nodal_supports[i][1]
@@ -151,10 +152,10 @@ def __init__(self,
             clientObject.nodal_supports.steel_effective_lengths_nodal_supports.append(mlvlp)
 
         # Effective Lengths Factors
-        clientObject.factors = Model.clientModel.factory.create('ns0:steel_effective_lengths.factors')
+        clientObject.factors = model.clientModel.factory.create('ns0:steel_effective_lengths.factors')
 
         for i,j in enumerate(factors):
-            mlvlp_f = Model.clientModel.factory.create('ns0:steel_effective_lengths_factors')
+            mlvlp_f = model.clientModel.factory.create('ns0:steel_effective_lengths_factors')
             mlvlp_f.no = i
             mlvlp_f.flexural_buckling_u= factors[i][0]
             mlvlp_f.flexural_buckling_v= factors[i][1]
@@ -194,4 +195,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Steel Effective Lengths to client model
-        Model.clientModel.service.set_steel_effective_lengths(clientObject)
+        model.clientModel.service.set_steel_effective_lengths(clientObject)
diff --git a/RFEM/TypesForSurfaces/surfaceEccentricity.py b/RFEM/TypesForSurfaces/surfaceEccentricity.py
index e564b056..2009703b 100644
--- a/RFEM/TypesForSurfaces/surfaceEccentricity.py
+++ b/RFEM/TypesForSurfaces/surfaceEccentricity.py
@@ -4,10 +4,11 @@ class SurfaceEccentricity():
     def __init__(self,
                  no: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Surface Eccentricity
-        clientObject = Model.clientModel.factory.create('ns0:surface_eccentricity')
+        clientObject = model.clientModel.factory.create('ns0:surface_eccentricity')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -24,4 +25,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Surface Eccentricity to client model
-        Model.clientModel.service.set_surface_eccentricity(clientObject)
+        model.clientModel.service.set_surface_eccentricity(clientObject)
diff --git a/RFEM/TypesForSurfaces/surfaceMeshRefinements.py b/RFEM/TypesForSurfaces/surfaceMeshRefinements.py
index c1d460f6..4013bf90 100644
--- a/RFEM/TypesForSurfaces/surfaceMeshRefinements.py
+++ b/RFEM/TypesForSurfaces/surfaceMeshRefinements.py
@@ -4,10 +4,11 @@ class SurfaceMeshRefinement():
     def __init__(self,
                  no: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Surface Mesh Refinement
-        clientObject = Model.clientModel.factory.create('ns0:surface_mesh_refinement')
+        clientObject = model.clientModel.factory.create('ns0:surface_mesh_refinement')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -24,4 +25,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Surface Mesh Refinement to client model
-        Model.clientModel.service.set_surface_mesh_refinement(clientObject)
+        model.clientModel.service.set_surface_mesh_refinement(clientObject)
diff --git a/RFEM/TypesForSurfaces/surfaceStiffnessModification.py b/RFEM/TypesForSurfaces/surfaceStiffnessModification.py
index 199a7b4d..cf51c7e4 100644
--- a/RFEM/TypesForSurfaces/surfaceStiffnessModification.py
+++ b/RFEM/TypesForSurfaces/surfaceStiffnessModification.py
@@ -4,10 +4,11 @@ class SurfaceStiffnessModification():
     def __init__(self,
                  no: int = 1,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Surface Stifness Modification
-        clientObject = Model.clientModel.factory.create('ns0:surface_stiffness_modification')
+        clientObject = model.clientModel.factory.create('ns0:surface_stiffness_modification')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -24,4 +25,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Surface Stifness Modification to client model
-        Model.clientModel.service.set_surface_stiffness_modification(clientObject)
+        model.clientModel.service.set_surface_stiffness_modification(clientObject)
diff --git a/RFEM/TypesForSurfaces/surfaceSupport.py b/RFEM/TypesForSurfaces/surfaceSupport.py
index ab090d64..1703f4ad 100644
--- a/RFEM/TypesForSurfaces/surfaceSupport.py
+++ b/RFEM/TypesForSurfaces/surfaceSupport.py
@@ -10,10 +10,11 @@ def __init__(self,
                  c_2_x: float = 0.0,
                  c_2_y: float = 0.0,
                  comment: str = '',
-                 params: dict = None):
+                 params: dict = None,
+                 model = Model):
 
         # Client model | Surface Support
-        clientObject = Model.clientModel.factory.create('ns0:surface_support')
+        clientObject = model.clientModel.factory.create('ns0:surface_support')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -40,4 +41,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Surface Support to client model
-        Model.clientModel.service.set_surface_support(clientObject)
+        model.clientModel.service.set_surface_support(clientObject)
diff --git a/RFEM/TypesforConcreteDesign/ConcreteDurability.py b/RFEM/TypesforConcreteDesign/ConcreteDurability.py
index 63a3dec8..5b495eeb 100644
--- a/RFEM/TypesforConcreteDesign/ConcreteDurability.py
+++ b/RFEM/TypesforConcreteDesign/ConcreteDurability.py
@@ -9,15 +9,16 @@ def __init__(self,
                 member_sets_no: str = "1",
                 surfaces_no: str = "1",
                 exposure_classes_reinforcement = [True, False, False, False],
-                exposure_classes_reinforcement_types = [],
+                exposure_classes_reinforcement_types: list = None,
                 exposure_classes_concrete = [False, False, False],
-                exposure_classes_concrete_types = [],
+                exposure_classes_concrete_types: list = None,
                 structural_class = [DurabilityStructuralClassType.STANDARD, False, False, False, False],
                 stainless_steel_reduction = [False],
                 additional_protection_reduction = [False],
                 allowance_deviation = [DurabilityAllowanceDeviationType.STANDARD, False],
                 comment: str = '',
-                params: dict = None):
+                params: dict = None,
+                model = Model):
         """
         Args:
             no (int): Concrete Durability Tag
@@ -38,7 +39,7 @@ def __init__(self,
         """
 
         # Client model | Concrete Durabilities
-        clientObject = Model.clientModel.factory.create('ns0:concrete_durability')
+        clientObject = model.clientModel.factory.create('ns0:concrete_durability')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -163,12 +164,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Global Parameter to client model
-        Model.clientModel.service.set_concrete_durability(clientObject)
-
-
-
-
-
-
-
-
+        model.clientModel.service.set_concrete_durability(clientObject)
diff --git a/RFEM/TypesforConcreteDesign/ConcreteEffectiveLength.py b/RFEM/TypesforConcreteDesign/ConcreteEffectiveLength.py
index 6da38398..28a0a37e 100644
--- a/RFEM/TypesforConcreteDesign/ConcreteEffectiveLength.py
+++ b/RFEM/TypesforConcreteDesign/ConcreteEffectiveLength.py
@@ -19,7 +19,8 @@ def __init__(self,
                     RestraintTypeAboutZ.SUPPORT_STATUS_NO, RestraintTypeWarping.SUPPORT_STATUS_NO, "2"]],
                 factors = [[1, 1]],
                 comment: str = '',
-                params: dict = None):
+                params: dict = None,
+                model = Model):
         """
         Args:
             no (int): Effective Length Tag
@@ -42,7 +43,7 @@ def __init__(self,
         """
 
         # Client model | Concrete Durabilities
-        clientObject = Model.clientModel.factory.create('ns0:concrete_effective_lengths')
+        clientObject = model.clientModel.factory.create('ns0:concrete_effective_lengths')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -77,18 +78,18 @@ def __init__(self,
         clientObject.structure_type_about_axis_z = flexural_buckling_about_z[1].name
 
         # Factors
-        clientObject.factors = Model.clientModel.factory.create('ns0:concrete_effective_lengths.factors')
+        clientObject.factors = model.clientModel.factory.create('ns0:concrete_effective_lengths.factors')
         for i in range(len(factors)):
-            mlvlp = Model.clientModel.factory.create('ns0:concrete_effective_lengths_factors')
+            mlvlp = model.clientModel.factory.create('ns0:concrete_effective_lengths_factors')
             mlvlp.no = i+1
             mlvlp.flexural_buckling_y = factors[i][0]
             mlvlp.flexural_buckling_z = factors[i][1]
             clientObject.factors.concrete_effective_lengths_factors.append(mlvlp)
 
         # Nodal Supports
-        clientObject.nodal_supports = Model.clientModel.factory.create('ns0:concrete_effective_lengths.nodal_supports')
+        clientObject.nodal_supports = model.clientModel.factory.create('ns0:concrete_effective_lengths.nodal_supports')
         for i in range(len(nodal_supports)):
-            mlvlp = Model.clientModel.factory.create('ns0:concrete_effective_lengths_nodal_supports')
+            mlvlp = model.clientModel.factory.create('ns0:concrete_effective_lengths_nodal_supports')
             mlvlp.no = i+1
             mlvlp.support_type = nodal_supports[i][0].name
             mlvlp.support_in_z = nodal_supports[i][1]
@@ -114,7 +115,7 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Global Parameter to client model
-        Model.clientModel.service.set_concrete_effective_lengths(clientObject)
+        model.clientModel.service.set_concrete_effective_lengths(clientObject)
 
 
 
diff --git a/RFEM/TypesforConcreteDesign/ConcreteReinforcementDirections.py b/RFEM/TypesforConcreteDesign/ConcreteReinforcementDirections.py
index 8f0ad088..ca68bbc9 100644
--- a/RFEM/TypesforConcreteDesign/ConcreteReinforcementDirections.py
+++ b/RFEM/TypesforConcreteDesign/ConcreteReinforcementDirections.py
@@ -8,9 +8,10 @@ def __init__(self,
                 name: str = "RD 1",
                 surfaces = "1",
                 reinforcement_direction_type = ReinforcementDirectionType.REINFORCEMENT_DIRECTION_TYPE_FIRST_REINFORCEMENT_IN_X,
-                rotation_parameters = [],
+                rotation_parameters: list = None,
                 comment: str = '',
-                params: dict = None):
+                params: dict = None,
+                model = Model):
         """
         Args:
             no (int): Reinforcement Direction Tag
@@ -23,7 +24,7 @@ def __init__(self,
         """
 
         # Client model | Concrete Durabilities
-        clientObject = Model.clientModel.factory.create('ns0:reinforcement_direction')
+        clientObject = model.clientModel.factory.create('ns0:reinforcement_direction')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -54,7 +55,7 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Global Parameter to client model
-        Model.clientModel.service.set_reinforcement_direction(clientObject)
+        model.clientModel.service.set_reinforcement_direction(clientObject)
 
 
 
diff --git a/RFEM/TypesforConcreteDesign/ConcreteSurfaceReinforcements.py b/RFEM/TypesforConcreteDesign/ConcreteSurfaceReinforcements.py
index 880b50a4..ea7bada5 100644
--- a/RFEM/TypesforConcreteDesign/ConcreteSurfaceReinforcements.py
+++ b/RFEM/TypesforConcreteDesign/ConcreteSurfaceReinforcements.py
@@ -14,10 +14,11 @@ def __init__(self,
                 cover_offset = [True, True, 0, 0],
                 reinforcement_direction = SurfaceReinforcementDirectionType.REINFORCEMENT_DIRECTION_TYPE_IN_DESIGN_REINFORCEMENT_DIRECTION,
                 reinforcement_direction_parameters = [SurfaceReinforcementDesignDirection.DESIGN_REINFORCEMENT_DIRECTION_A_S_1],
-                reinforcement_location = [],
-                reinforcement_acting_region = [],
+                reinforcement_location: list = None,
+                reinforcement_acting_region: list = None,
                 comment: str = '',
-                params: dict = None):
+                params: dict = None,
+                model = Model):
         """
         Args:
             no (int): Surface Reinforcement Tag
@@ -48,7 +49,7 @@ def __init__(self,
         """
 
         # Client model | Concrete Durabilities
-        clientObject = Model.clientModel.factory.create('ns0:surface_reinforcement')
+        clientObject = model.clientModel.factory.create('ns0:surface_reinforcement')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -147,9 +148,9 @@ def __init__(self,
             clientObject.location_center_y = reinforcement_location[1]
             clientObject.location_radius = reinforcement_location[2]
         elif location_type.name == "LOCATION_TYPE_FREE_POLYGON":
-            clientObject.polygon_points = Model.clientModel.factory.create('ns0:surface_reinforcement.polygon_points')
+            clientObject.polygon_points = model.clientModel.factory.create('ns0:surface_reinforcement.polygon_points')
             for i in range(len(reinforcement_location)):
-                mlvlp = Model.clientModel.factory.create('ns0:surface_reinforcement_polygon_points')
+                mlvlp = model.clientModel.factory.create('ns0:surface_reinforcement_polygon_points')
                 mlvlp.no = i+1
                 mlvlp.first_coordinate = reinforcement_location[i][0]
                 mlvlp.second_coordinate = reinforcement_location[i][1]
@@ -170,12 +171,4 @@ def __init__(self,
                 clientObject[key] = params[key]
 
         # Add Global Parameter to client model
-        Model.clientModel.service.set_surface_reinforcement(clientObject)
-
-
-
-
-
-
-
-
+        model.clientModel.service.set_surface_reinforcement(clientObject)
diff --git a/RFEM/baseSettings.py b/RFEM/baseSettings.py
index fe8f9f77..dcef48ac 100644
--- a/RFEM/baseSettings.py
+++ b/RFEM/baseSettings.py
@@ -8,7 +8,8 @@ def __init__(self,
                 local_axes_orientation = LocalAxesOrientationType.E_LOCAL_AXES_ORIENTATION_ZDOWN,
                 tolerances = [0.0005, 0.0005, 0.0005, 0.0005],
                 member_representatives: bool = False,
-                member_set_representatives: bool = False):
+                member_set_representatives: bool = False,
+                model = Model):
         """
         Args:
             gravitational_acceleration (int): Gravitational Acceleration (m/sn2)
@@ -21,7 +22,7 @@ def __init__(self,
         tolerances = [tolerance_for_nodes, tolerance_for_lines, tolerance_for_surfaces_and_planes, tolerance_for_directions]
         """
         # Client model | Load Case
-        clientObject = Model.clientModel.factory.create('ns0:model_settings_and_options_type')
+        clientObject = model.clientModel.factory.create('ns0:model_settings_and_options_type')
 
         # Clears object atributes | Sets all atributes to None
         clearAtributes(clientObject)
@@ -51,4 +52,4 @@ def __init__(self,
         clientObject.member_set_representatives_active = member_set_representatives
 
         # Add Base Data Settings to client model
-        Model.clientModel.service.set_model_settings_and_options(clientObject)
+        model.clientModel.service.set_model_settings_and_options(clientObject)
diff --git a/RFEM/globalParameter.py b/RFEM/globalParameter.py
index 98ec3762..9617e887 100644
--- a/RFEM/globalParameter.py
+++ b/RFEM/globalParameter.py
@@ -12,7 +12,8 @@ def AddParameter(
                      definition_type = GlobalParameterDefinitionType.DEFINITION_TYPE_VALUE,
                      definition_parameter: list = None,
                      comment: str = '',
-                     params: dict = None):
+                     params: dict = None,
+                     model = Model):
         '''
         for definition_type = GlobalParameterDefinitionType.DEFINITION_TYPE_FORMULA:
             definition_parameter = [formula]
@@ -31,7 +32,7 @@ def AddParameter(
         '''
 
         # Client model | Global Parameter
-        clientObject = Model.clientModel.factory.create('ns0:global_parameter')
+        clientObject = model.clientModel.factory.create('ns0:global_parameter')
 
         # Clears object attributes | Sets all attributes to None
         clearAtributes(clientObject)
@@ -57,7 +58,7 @@ def AddParameter(
             clientObject.formula = definition_parameter[0]
 
         elif definition_type.name == 'DEFINITION_TYPE_OPTIMIZATION' or definition_type.name == 'DEFINITION_TYPE_OPTIMIZATION_ASCENDING' or definition_type.name == 'DEFINITION_TYPE_OPTIMIZATION_DESCENDING':
-            SetAddonStatus(Model.clientModel, AddOn.cost_estimation_active)
+            SetAddonStatus(model.clientModel, AddOn.cost_estimation_active)
             if len(definition_parameter) != 4:
                 raise Exception('WARNING: The definition parameter needs to be of length 4. Kindly check list inputs for completeness and correctness.')
             clientObject.value = definition_parameter[0]
@@ -79,4 +80,4 @@ def AddParameter(
                 clientObject[key] = params[key]
 
         # Add Global Parameter to client model
-        Model.clientModel.service.set_global_parameter(clientObject)
+        model.clientModel.service.set_global_parameter(clientObject)
diff --git a/RFEM/initModel.py b/RFEM/initModel.py
index e1592380..5c07825b 100644
--- a/RFEM/initModel.py
+++ b/RFEM/initModel.py
@@ -121,10 +121,10 @@
     sys.exit()
 
 # Persistent connection
-# Without next 4 lines the connection lasts only 1 request,
-# the message: 'Application is locked by external connection'
-# is blinking whole time and the execution is unnecessarily long.
-# This solution works with unit-tests.
+# Next 4 lines enables Client to work within 1 session which is much faster to execute.
+# Without it the session lasts only one request which results in poor performance.
+# Assigning session to application Client (here client) instead of model Client
+# results also in poor performace.
 session = requests.Session()
 adapter = requests.adapters.HTTPAdapter(pool_connections=1, pool_maxsize=1)
 session.mount('http://', adapter)
@@ -132,31 +132,61 @@
 
 class Model():
     clientModel = None
+    clientModelLst = []
+    activeSession = False
+
     def __init__(self,
                  new_model: bool=True,
                  model_name: str="TestModel",
                  delete: bool=False,
                  delete_all: bool=False):
+        """
+        Class object representing individual model in RFEM.
+        Class enables to edit multiple models in one session through holding
+        one transport session active by not setting 'trans' into Client.
+
+        Args:
+            new_model (bool, optional): Set to True if new model is requested.
+            model_name (str, optional): Defaults to "TestModel".
+            delete (bool, optional):  Delete results
+            delete_all (bool, optional): Delete all objects in Model.
+        """
 
         cModel = None
         modelLs = client.service.get_model_list()
 
         if new_model:
             if modelLs and model_name in modelLs.name:
-                new = client.service.open_model(model_name) + 'wsdl'
-                cModel = Client(new, transport=trans)
+                modelIndex = 0
+                for i,j in enumerate(modelLs.name):
+                    if modelLs.name[i] == model_name:
+                        modelIndex = i
+                new = client.service.get_model(modelIndex) + 'wsdl'
+                # Set transport parameter if it is the first model
+                if Model.activeSession:
+                    cModel = Client(new)
+                else:
+                    cModel = Client(new, transport=trans)
                 cModel.service.delete_all_results()
                 cModel.service.delete_all()
             else:
                 new = client.service.new_model(model_name) + 'wsdl'
-                cModel = Client(new, transport=trans)
+                if Model.activeSession:
+                    cModel = Client(new)
+                else:
+                    cModel = Client(new, transport=trans)
+                if not modelLs:
+                    Model.activeSession = True
         else:
             modelIndex = 0
             for i,j in enumerate(modelLs.name):
                 if modelLs.name[i] == model_name:
                     modelIndex = i
             new = client.service.get_model(modelIndex) + 'wsdl'
-            cModel = Client(new, transport=trans)
+            if Model.activeSession:
+                cModel = Client(new)
+            else:
+                cModel = Client(new, transport=trans)
             if delete:
                 print('Deleting results...')
                 cModel.service.delete_all_results()
@@ -164,14 +194,28 @@ def __init__(self,
                 print('Delete all...')
                 cModel.service.delete_all()
 
+        # when using multiple intances/model
+        self.clientModel = cModel
+        if not modelLs or not model_name in modelLs.name:
+            Model.clientModelLst.append(cModel)
+        # when using only one instace/model
         Model.clientModel = cModel
 
+
+    def __delete__(self, index):
+        if len(self.clientModelLst) == 1:
+            self.clientModelLst.clear()
+            self.clientModel = None
+        else:
+            self.clientModelLst.pop(index)
+            self.clientModel = self.clientModelLst[-1]
+
 def clearAtributes(obj):
     '''
     Clears object atributes.
     Sets all atributes to None.
 
-    Params:
+    Args:
         obj: object to clear
     '''
 
@@ -181,6 +225,22 @@ def clearAtributes(obj):
         obj[i[0]] = None
     return obj
 
+def closeModel(index_or_name, save_changes = False):
+    """
+    Close any model with index or name. Be sure to close the first created
+    model last (2,1, and then 0). It carries whole session.
+    """
+    if isinstance(index_or_name, int):
+        client.service.close_model(index_or_name, save_changes)
+        Model.__delete__(Model, index_or_name)
+    elif isinstance(index_or_name, str):
+        modelLs = client.service.get_model_list()
+        for i,j in enumerate(modelLs.name):
+            if modelLs.name[i] == index_or_name:
+                client.service.close_model(i, save_changes)
+    else:
+        assert True, 'Parameter index_or_name must be int or string.'
+
 def insertSpaces(lst: list):
     '''
     Add spaces between list of numbers.
@@ -188,17 +248,17 @@ def insertSpaces(lst: list):
     '''
     return ' '.join(str(item) for item in lst)
 
-def Calculate_all(generateXmlSolverInput: bool = False):
+def Calculate_all(generateXmlSolverInput: bool = False, model = Model):
     '''
     Calculates model.
     CAUTION: Don't use it in unit tests!
     It works when executing tests individualy but when running all of them
     it causes RFEM to stuck and generates failures, which are hard to investigate.
 
-    Params:
+    Args:
     - generateXmlSolverInput: generate XML solver input
     '''
-    Model.clientModel.service.calculate_all(generateXmlSolverInput)
+    model.clientModel.service.calculate_all(generateXmlSolverInput)
 
 def ConvertToDlString(s):
     '''
@@ -210,7 +270,7 @@ def ConvertToDlString(s):
     '1-3'       -> '1 2 3'
     '1,3,5-9'   -> '1 3 5 6 7 8 9'
 
-    Params:
+    Args:
         RSTAB / RFEM common string
 
     Returns a WS conform string.
@@ -379,7 +439,7 @@ def SetAddonStatus(modelClient, addOn = AddOn.stress_analysis_active, status = T
 
         modelClient.service.set_addon_statuses(addonLst)
 
-def CalculateSelectedCases(loadCases: list = None, designSituations: list = None, loadCombinations: list = None):
+def CalculateSelectedCases(loadCases: list = None, designSituations: list = None, loadCombinations: list = None, model = Model):
     '''
     This method calculate just selected objects - load cases, desingSituations, loadCombinations
     Args:
@@ -387,10 +447,10 @@ def CalculateSelectedCases(loadCases: list = None, designSituations: list = None
         designSituations (list, optional): [description]. Defaults to None.
         loadCombinations (list, optional): [description]. Defaults to None.
     '''
-    specificObjectsToCalculate = Model.clientModel.factory.create('ns0:array_of_calculate_specific_objects_elements')
+    specificObjectsToCalculate = model.clientModel.factory.create('ns0:array_of_calculate_specific_objects_elements')
     if loadCases is not None:
         for loadCase in loadCases:
-            specificObjectsToCalculateLC = Model.clientModel.factory.create('ns0:array_of_calculate_specific_objects_elements.element')
+            specificObjectsToCalculateLC = model.clientModel.factory.create('ns0:array_of_calculate_specific_objects_elements.element')
             specificObjectsToCalculateLC.no = loadCase
             specificObjectsToCalculateLC.parent_no = 0
             specificObjectsToCalculateLC.type = ObjectTypes.E_OBJECT_TYPE_LOAD_CASE.name
@@ -398,7 +458,7 @@ def CalculateSelectedCases(loadCases: list = None, designSituations: list = None
 
     if designSituations is not None:
         for designSituation in designSituations:
-            specificObjectsToCalculateDS = Model.clientModel.factory.create('ns0:array_of_calculate_specific_objects_elements.element')
+            specificObjectsToCalculateDS = model.clientModel.factory.create('ns0:array_of_calculate_specific_objects_elements.element')
             specificObjectsToCalculateDS.no = designSituation
             specificObjectsToCalculateDS.parent_no = 0
             specificObjectsToCalculateDS.type = ObjectTypes.E_OBJECT_TYPE_DESIGN_SITUATION.name
@@ -406,15 +466,15 @@ def CalculateSelectedCases(loadCases: list = None, designSituations: list = None
 
     if loadCombinations is not None:
         for loadCombination in loadCombinations:
-            specificObjectsToCalculateLC = Model.clientModel.factory.create('ns0:array_of_calculate_specific_objects_elements.element')
+            specificObjectsToCalculateLC = model.clientModel.factory.create('ns0:array_of_calculate_specific_objects_elements.element')
             specificObjectsToCalculateLC.no = loadCombination
             specificObjectsToCalculateLC.parent_no = 0
             specificObjectsToCalculateLC.type = ObjectTypes.E_OBJECT_TYPE_LOAD_CASE.name
             specificObjectsToCalculate.element.append(specificObjectsToCalculateLC)
 
-    Model.clientModel.service.calculate_specific_objects(specificObjectsToCalculate)
+    model.clientModel.service.calculate_specific_objects(specificObjectsToCalculate)
 
-def FirstFreeIdNumber(memType = ObjectTypes.E_OBJECT_TYPE_MEMBER, parent_no: int = 0):
+def FirstFreeIdNumber(memType = ObjectTypes.E_OBJECT_TYPE_MEMBER, parent_no: int = 0, model = Model):
     '''
     This method returns the next available Id Number for the selected object type
     Args:
@@ -424,9 +484,9 @@ def FirstFreeIdNumber(memType = ObjectTypes.E_OBJECT_TYPE_MEMBER, parent_no: int
             (1) A geometric object has, in general, a parent_no = 0
             (2) The parent_no parameter becomes significant for example with loads
     '''
-    return Model.clientModel.service.get_first_free_number(memType.name, parent_no)
+    return model.clientModel.service.get_first_free_number(memType.name, parent_no)
 
-def SetModelType(model_type = ModelType.E_MODEL_TYPE_3D):
+def SetModelType(model_type = ModelType.E_MODEL_TYPE_3D, model = Model):
     '''
     This method sets the model type. The model type is E_MODEL_TYPE_3D by default.
 
@@ -442,12 +502,12 @@ def SetModelType(model_type = ModelType.E_MODEL_TYPE_3D):
             ModelType.E_MODEL_TYPE_3D
     '''
 
-    Model.clientModel.service.set_model_type(model_type.name)
+    model.clientModel.service.set_model_type(model_type.name)
 
-def GetModelType():
+def GetModelType(model = Model):
 
     '''
     The method returns a string of the current model type.
     '''
 
-    return Model.clientModel.service.get_model_type()
+    return model.clientModel.service.get_model_type()


Test patch:
diff --git a/UnitTests/test_Export.py b/UnitTests/test_Export.py
index aa2f889b..8c4dbaf9 100644
--- a/UnitTests/test_Export.py
+++ b/UnitTests/test_Export.py
@@ -16,7 +16,7 @@
 if Model.clientModel is None:
     Model()
 
-pytestmark = pytest.mark.skipif(CheckIfMethodOrTypeExists(Model.clientModel,'export_to_ifc', True), reason="export_to_ifc not in RFEM GM yet")
+pytest.mark.xfail(reason="Calculate_all() performs incosistently.", strict=False)
 def test_export():
 
     Model.clientModel.service.delete_all()
diff --git a/UnitTests/test_multipleModels.py b/UnitTests/test_multipleModels.py
new file mode 100644
index 00000000..1e591d0b
--- /dev/null
+++ b/UnitTests/test_multipleModels.py
@@ -0,0 +1,58 @@
+import sys
+import os
+PROJECT_ROOT = os.path.abspath(os.path.join(
+                  os.path.dirname(__file__),
+                  os.pardir)
+)
+sys.path.append(PROJECT_ROOT)
+from RFEM.BasicObjects.material import Material
+from RFEM.initModel import Model, closeModel
+
+if Model.clientModel is None:
+        Model()
+
+def test_multiple_models_with_parameter():
+
+    model1 = Model(True, 'TestModel5')
+    Material(1,'S235', model = model1)
+
+    model2 = Model(True, 'TestModel6')
+    Material(2,'S235', model = model1)
+    Material(3,'S275', model = model2)
+    Material(4,'S235', model = model1)
+    Material(5,'S275', model = model2)
+
+    assert model1.clientModel.service.get_material(1).name == "S235 | CYS EN 1993-1-1:2009-03"
+    assert model1.clientModel.service.get_material(2).name == "S235 | CYS EN 1993-1-1:2009-03"
+    assert model1.clientModel.service.get_material(4).name == "S235 | CYS EN 1993-1-1:2009-03"
+
+    assert model2.clientModel.service.get_material(3).name == "S275 | CYS EN 1993-1-1:2009-03"
+    assert model2.clientModel.service.get_material(5).name == "S275 | CYS EN 1993-1-1:2009-03"
+
+    closeModel(2)
+    closeModel(1)
+
+def test_multiple_models_calling_class():
+
+    model1 = Model(True, 'TestModel5')
+    Material(1,'S235')
+    Material(2,'S235')
+
+    model2 = Model(True, 'TestModel6')
+    Material(3,'S275')
+
+    Model(False, 'TestModel5')
+    Material(4,'S235')
+
+    Model(False, 'TestModel6')
+    Material(5,'S275')
+
+    assert model1.clientModel.service.get_material(1).name == "S235 | CYS EN 1993-1-1:2009-03"
+    assert model1.clientModel.service.get_material(2).name == "S235 | CYS EN 1993-1-1:2009-03"
+    assert model1.clientModel.service.get_material(4).name == "S235 | CYS EN 1993-1-1:2009-03"
+
+    assert model2.clientModel.service.get_material(3).name == "S275 | CYS EN 1993-1-1:2009-03"
+    assert model2.clientModel.service.get_material(5).name == "S275 | CYS EN 1993-1-1:2009-03"
+
+    closeModel(2)
+    closeModel(1)
diff --git a/UnitTests/test_zCalculate.py b/UnitTests/test_zCalculate.py
index c68b0bd9..01f70f42 100644
--- a/UnitTests/test_zCalculate.py
+++ b/UnitTests/test_zCalculate.py
@@ -57,7 +57,7 @@ def test_optimization_settings():
     OptimizationSettings(True, 11, OptimizeOnType.E_OPTIMIZE_ON_TYPE_MIN_COST,
                          Optimizer.E_OPTIMIZER_TYPE_PERCENTS_OF_RANDOM_MUTATIONS,
                          0.3)
-    opt_sett = OptimizationSettings.get_optimization_settings()
+    opt_sett = OptimizationSettings.get()
     assert opt_sett.general_optimization_active
     assert opt_sett.general_keep_best_number_model_mutations == 11
     assert opt_sett.general_optimize_on == OptimizeOnType.E_OPTIMIZE_ON_TYPE_MIN_COST.name
@@ -65,4 +65,4 @@ def test_optimization_settings():
     assert opt_sett.general_number_random_mutations == 0.3
 
     opt_sett.general_keep_best_number_model_mutations = 15
-    OptimizationSettings.set_optimization_settings(opt_sett)
+    OptimizationSettings.set(opt_sett)