diff --git a/classes_uml_ohmpi.dot.png b/classes_uml_ohmpi.dot.png
deleted file mode 100644
index 9e0047178835183d2c6a681214e35d1dbc0054c9..0000000000000000000000000000000000000000
Binary files a/classes_uml_ohmpi.dot.png and /dev/null differ
diff --git a/classes_uml_ohmpi.dot b/uml_diagrams/classes_uml_ohmpi.dot
similarity index 83%
rename from classes_uml_ohmpi.dot
rename to uml_diagrams/classes_uml_ohmpi.dot
index 763231188bf4bd259386a97f97b928074d742967..b310aa483ca5a3145dea234295d9cd678aa27938 100644
--- a/classes_uml_ohmpi.dot
+++ b/uml_diagrams/classes_uml_ohmpi.dot
@@ -4,23 +4,23 @@ rankdir=BT
 "0" [label="{CompressedSizedTimedRotatingFileHandler|maxBytes : int\lstream\lzip_mode : int\l|doRollover()\lfind_last_rotated_file()\lshouldRollover(record)\l}", shape="record"];
 "1" [label="{Ctl|board_name : str\lbus : I2C\lmax_cpu_temp : float\l|}", shape="record"];
 "2" [label="{Ctl|bus : NoneType\l|}", shape="record"];
-"3" [label="{CtlAbstract|board_name\lbus : NoneType\lcpu_temperature\lexec_logger : NoneType, RootLogger\lmax_cpu_temp\lsoh_logger : NoneType, RootLogger\l|}", shape="record"];
+"3" [label="{CtlAbstract|board_name\lbus : NoneType\lcpu_temperature\lexec_logger : NoneType, RootLogger\lmax_cpu_temp\lsoh_logger : RootLogger, NoneType\l|}", shape="record"];
 "4" [label="{MQTTHandler|auth : NoneType\lclient_id : str\lhostname\lkeepalive : int\lport : int\lprotocol\lqos : int\lretain : bool\ltls : NoneType\ltopic\ltransport : str\lwill : NoneType\l|emit(record)\l}", shape="record"];
 "5" [label="{Mux|\l|reset()\lswitch_one()\ltest()\l}", shape="record"];
 "6" [label="{Mux|addresses : dict\l|reset()\lswitch_one(elec, role, state)\l}", shape="record"];
-"7" [label="{MuxAbstract|addresses\lbarrier\lboard_id\lboard_name\lcabling : dict\lctl\lexec_logger : NoneType, RootLogger\lsoh_logger : NoneType, RootLogger\l|reset()\lswitch(elec_dict, state)\lswitch_one(elec, role, state)\ltest(elec_dict, activation_time)\l}", shape="record"];
+"7" [label="{MuxAbstract|addresses\lbarrier\lboard_id\lboard_name\lcabling : dict\lctl\lexec_logger : RootLogger, NoneType\lsoh_logger : RootLogger, NoneType\l|reset()\lswitch(elec_dict, state)\lswitch_one(elec, role, state)\ltest(elec_dict, activation_time)\l}", shape="record"];
 "8" [label="{MyServer|\l|do_POST()\l}", shape="record"];
-"9" [label="{OhmPi|cmd_id : NoneType\lcontroller : NoneType\ldata_logger : RootLogger, NoneType\lexec_logger : NoneType, RootLogger\lid : str\lmqtt : bool\lnb_samples : int\lon_pi : bool, NoneType\lsequence\lsequence : NoneType, ndarray\lsettings : dict\lsoh_logger : NoneType, RootLogger\lstatus : str\lthread : Thread, NoneType\l|append_and_save(filename, last_measurement, cmd_id)\lget_data(survey_names, cmd_id)\lget_deprecated_methods(cls)\linterrupt(cmd_id)\lload_sequence(filename, cmd_id)\lquit(cmd_id)\lremove_data(cmd_id)\lreset_mux(cmd_id)\lrestart(cmd_id)\lrs_check(tx_volt, cmd_id)\lrun_measurement(quad, nb_stack, injection_duration, autogain, strategy, tx_volt, best_tx_injtime, cmd_id)\lrun_multiple_sequences(cmd_id, sequence_delay, nb_meas)\lrun_sequence(cmd_id)\lrun_sequence_async(cmd_id)\lset_sequence(sequence, cmd_id)\lswitch_mux_off(quadrupole, cmd_id)\lswitch_mux_on(quadrupole, cmd_id)\ltest_mux(activation_time, mux_id, cmd_id)\lupdate_settings(settings, cmd_id)\l}", shape="record"];
-"10" [label="{OhmPiHardware|ctl\ldata_logger : NoneType, RootLogger\lexec_logger : NoneType, RootLogger\lmux_barrier : Barrier\lmux_boards\lpulses\lpwr\lreadings : ndarray\lrx\lsoh_logger : NoneType, RootLogger\lsp\ltx\ltx_sync : Event\l|reset_mux()\lswitch_mux(electrodes, roles, state)\ltest_mux(channel, activation_time)\lvab_square_wave(vab, cycle_length, sampling_rate, cycles, polarity, append)\l}", shape="record"];
+"9" [label="{OhmPi|cmd_id : NoneType\lcontroller : NoneType\ldata_logger : RootLogger, NoneType\lexec_logger : NoneType, RootLogger\lid : str\lmqtt : bool\lnb_samples : int\lon_pi : bool, NoneType\lsequence\lsequence : ndarray, NoneType\lsettings : dict\lsoh_logger : RootLogger, NoneType\lstatus : str\lthread : NoneType, Thread\l|append_and_save(filename, last_measurement, cmd_id)\lget_data(survey_names, cmd_id)\lget_deprecated_methods(cls)\linterrupt(cmd_id)\lload_sequence(filename, cmd_id)\lquit(cmd_id)\lremove_data(cmd_id)\lreset_mux(cmd_id)\lrestart(cmd_id)\lrs_check(tx_volt, cmd_id)\lrun_measurement(quad, nb_stack, injection_duration, autogain, strategy, tx_volt, best_tx_injtime, cmd_id)\lrun_multiple_sequences(cmd_id, sequence_delay, nb_meas)\lrun_sequence(cmd_id)\lrun_sequence_async(cmd_id)\lset_sequence(sequence, cmd_id)\lswitch_mux_off(quadrupole, cmd_id)\lswitch_mux_on(quadrupole, cmd_id)\ltest_mux(activation_time, mux_id, cmd_id)\lupdate_settings(settings, cmd_id)\l}", shape="record"];
+"10" [label="{OhmPiHardware|ctl\ldata_logger : NoneType, RootLogger\lexec_logger : RootLogger, NoneType\lmux_barrier : Barrier\lmux_boards\lpulses\lpwr\lreadings : ndarray\lrx\lsoh_logger : RootLogger, NoneType\lsp\ltx\ltx_sync : Event\l|reset_mux()\lswitch_mux(electrodes, roles, state)\ltest_mux(channel, activation_time)\lvab_square_wave(vab, cycle_length, sampling_rate, cycles, polarity, append)\l}", shape="record"];
 "11" [label="{Pwr|current\lvoltage\lvoltage_adjustable : bool\l|turn_off()\lturn_on()\l}", shape="record"];
-"12" [label="{PwrAbstract|board_name\lcurrent\lexec_logger : NoneType, RootLogger\lsoh_logger : NoneType, RootLogger\lvoltage\lvoltage_adjustable\l|turn_off()\lturn_on()\l}", shape="record"];
+"12" [label="{PwrAbstract|board_name\lcurrent\lexec_logger : RootLogger, NoneType\lsoh_logger : NoneType, RootLogger\lvoltage\lvoltage_adjustable\l|turn_off()\lturn_on()\l}", shape="record"];
 "13" [label="{Rx|adc_gain\ladc_gain : float\lvoltage\l|adc_gain_auto()\l}", shape="record"];
 "14" [label="{Rx|adc_gain\ladc_gain\lctl\lvoltage\l|adc_gain_auto()\l}", shape="record"];
 "15" [label="{Rx|adc_gain\ladc_gain\lctl\lvoltage\l|adc_gain_auto()\l}", shape="record"];
-"16" [label="{RxAbstract|adc_gain\lboard_name\lctl\lexec_logger : NoneType, RootLogger\lsampling_rate\lsoh_logger : NoneType, RootLogger\lvoltage\l|adc_gain_auto()\l}", shape="record"];
-"17" [label="{Tx|adc_gain\ladc_gain : float, int\lctl\lcurrent\lcurrent_adjustable : bool\lmcp_board : MCP23008\lpin0 : DigitalInOut\lpin1 : DigitalInOut\lpin4 : DigitalInOut\lpolarity\lpolarity : int\lpwr : NoneType\ltx_bat\lvoltage_adjustable : bool\l|adc_gain_auto()\lcurrent_pulse()\linject(polarity, inj_time)\lturn_off()\lturn_on()\lvoltage_pulse(voltage, length, polarity)\l}", shape="record"];
+"16" [label="{RxAbstract|adc_gain\lboard_name\lctl\lexec_logger : RootLogger, NoneType\lsampling_rate\lsoh_logger : NoneType, RootLogger\lvoltage\l|adc_gain_auto()\l}", shape="record"];
+"17" [label="{Tx|adc_gain\ladc_gain : int, float\lctl\lcurrent\lcurrent_adjustable : bool\lmcp_board : MCP23008\lpin0 : DigitalInOut\lpin1 : DigitalInOut\lpin4 : DigitalInOut\lpolarity\lpolarity : int\lpwr : NoneType\ltx_bat\lvoltage_adjustable : bool\l|adc_gain_auto()\lcurrent_pulse()\linject(polarity, inj_time)\lturn_off()\lturn_on()\lvoltage_pulse(voltage, length, polarity)\l}", shape="record"];
 "18" [label="{Tx|adc_gain\ladc_gain : float\lcurrent\lpolarity : int\ltx_bat\lvoltage\l|adc_gain_auto()\lcurrent_pulse()\linject(state)\lvoltage_pulse(voltage, length, polarity)\l}", shape="record"];
-"19" [label="{Tx|DPS\ladc_gain\ladc_gain : int, float\lctl\lcurrent\lmcp_board : MCP23008\lpin0 : DigitalInOut\lpin1 : DigitalInOut\lpin2 : DigitalInOut\lpin3 : DigitalInOut\lpin4 : DigitalInOut\lpolarity\lpolarity : NoneType, int\ltx_bat\lvoltage\lvoltage\l|adc_gain_auto()\lcurrent_pulse()\linject(polarity, inj_time)\lturn_off()\lturn_on()\lvoltage_pulse(voltage, length, polarity)\l}", shape="record"];
+"19" [label="{Tx|DPS\ladc_gain\ladc_gain : float, int\lctl\lcurrent\lmcp_board : MCP23008\lpin0 : DigitalInOut\lpin1 : DigitalInOut\lpin2 : DigitalInOut\lpin3 : DigitalInOut\lpin4 : DigitalInOut\lpolarity\lpolarity : NoneType, int\ltx_bat\lvoltage\lvoltage\l|adc_gain_auto()\lcurrent_pulse()\linject(polarity, inj_time)\lturn_off()\lturn_on()\lvoltage_pulse(voltage, length, polarity)\l}", shape="record"];
 "20" [label="{TxAbstract|adc_gain\lboard_name\lctl\lexec_logger : RootLogger, NoneType\linj_time\linj_time\lpolarity\lpwr\lsoh_logger : NoneType, RootLogger\ltx_bat\l|adc_gain_auto()\lcurrent_pulse()\linject(polarity, inj_time)\lvoltage_pulse(voltage, length, polarity)\l}", shape="record"];
 "1" -> "3" [arrowhead="empty", arrowtail="none"];
 "2" -> "3" [arrowhead="empty", arrowtail="none"];
diff --git a/uml_diagrams/classes_uml_ohmpi.dot.png b/uml_diagrams/classes_uml_ohmpi.dot.png
new file mode 100644
index 0000000000000000000000000000000000000000..754776015e66c92c98bd3716813dbbd7027ab732
Binary files /dev/null and b/uml_diagrams/classes_uml_ohmpi.dot.png differ
diff --git a/packages_uml_ohmpi.dot b/uml_diagrams/packages_uml_ohmpi.dot
similarity index 100%
rename from packages_uml_ohmpi.dot
rename to uml_diagrams/packages_uml_ohmpi.dot
diff --git a/packages_uml_ohmpi.dot.png b/uml_diagrams/packages_uml_ohmpi.dot.png
similarity index 100%
rename from packages_uml_ohmpi.dot.png
rename to uml_diagrams/packages_uml_ohmpi.dot.png
diff --git a/uml_diagrams/uml_diagrams.txt b/uml_diagrams/uml_diagrams.txt
deleted file mode 100644
index 52db49b76313fc7222b3ac33460575062367e0ab..0000000000000000000000000000000000000000
--- a/uml_diagrams/uml_diagrams.txt
+++ /dev/null
@@ -1 +0,0 @@
-OhmPi
diff --git a/uml_diagrams/update_uml_in_docs.py b/uml_diagrams/update_uml_in_docs.py
deleted file mode 100644
index 6db432164ed0d52f5633510b3d9bbc780d17a162..0000000000000000000000000000000000000000
--- a/uml_diagrams/update_uml_in_docs.py
+++ /dev/null
@@ -1,44 +0,0 @@
-import subprocess
-import os
-
-uml_diagrams = []
-s = None
-os.chdir('..')
-with open('./uml_diagrams/uml_diagrams.txt', 'r') as f:
-    while not (s == ''):
-        s = f.readline().strip('\n')
-        if not (s == '' or s == ' '):
-            uml_diagrams.append(s)
-print(uml_diagrams)
-
-if len(uml_diagrams) > 0:
-    print('Updating UML diagrams...')
-    for d in uml_diagrams:
-        cmd = f'pyreverse {d} -p ./uml_diagrams/uml_{d}'
-        print(cmd)
-        out = subprocess.check_output(cmd, shell=True)
-        print(out.decode('ascii'))
-
-os.chdir('./uml_diagrams')
-
-if len(uml_diagrams) > 0:
-    print('Converting dot files...')
-    for d in sorted(uml_diagrams):
-        if os.path.exists(f'./classes_uml_{d}.dot'):
-            cmd = f'dot -Tpng classes_uml_{d}.dot -O classes_uml_{d}.png'
-            print(cmd)
-            out = subprocess.check_output(cmd, shell=True)
-            print(out.decode('ascii'))
-
-    for d in sorted(uml_diagrams):
-        if os.path.exists(f'./packages_uml_{d}.dot'):
-            cmd = f'mvdot -Tpng packages_uml_{d}.dot -O packages_uml_{d}.png'
-            print(cmd)
-            out = subprocess.check_output(cmd, shell=True)
-            print(out.decode('ascii'))
-
-
-else:
-    print('No files to update! Please add packages or modules in the '
-          '"uml_diagrams.txt" file.')
-
diff --git a/update_uml.sh b/update_uml.sh
index a4de1c33621d974bd92f51c8e4b7e13f0df87537..29d13a3db445e5d2774174677a60e5bc2e6350f4 100644
--- a/update_uml.sh
+++ b/update_uml.sh
@@ -1,3 +1,9 @@
 pyreverse ohmpi -p uml_ohmpi
 dot -Tpng classes_uml_ohmpi.dot -O
 dot -Tpng packages_uml_ohmpi.dot -O
+mv classes_uml_ohmpi.dot uml_diagrams/
+mv classes_uml_ohmpi.dot.png uml_diagrams/
+mv packages_uml_ohmpi.dot uml_diagrams/
+mv packages_uml_ohmpi.dot.png uml_diagrams/
+
+