diff --git a/tangostationcontrol/tangostationcontrol/toolkit/archiver.py b/tangostationcontrol/tangostationcontrol/toolkit/archiver.py
index 49cd0d91bbdb9acc946f75dc92801a3b8c47d438..2c002f1cf866c98738c13203fbf8e0cd864edabd 100644
--- a/tangostationcontrol/tangostationcontrol/toolkit/archiver.py
+++ b/tangostationcontrol/tangostationcontrol/toolkit/archiver.py
@@ -429,12 +429,8 @@ class Archiver():
         """
         es = DeviceProxy(es_name or self.get_next_subscriber())
         attribute_list = es.AttributeStartedList or []
-        attributes_started = []
         pattern = re.compile(regex)
-        for a in attribute_list:
-            if pattern.search(a):
-                attributes_started.append(a)
-        return attributes_started
+        return [a for a in attribute_list if pattern.search(a)]
    
     def get_attribute_subscriber(self, attribute_name:str):
         """
@@ -491,18 +487,18 @@ class Archiver():
         # Get the list of attributes info
         attributes_info = DeviceProxy(device_name).attribute_list_query()
         # Filter the archived attributes
-        for i in range(len(attributes_info)):
-            if attributes_info[i].name.lower() in attributes_started:
-                attr_dict = {'attribute': attributes_info[i].name.lower(), 
-                            'polling_period': AttributeProxy(device_name+'/'+attributes_info[i].name).get_poll_period(),
-                            'data_type': str(attributes_info[i].data_type).split('.')[-1],
-                            'dim_x': attributes_info[i].max_dim_x, 
-                            'dim_y': attributes_info[i].max_dim_y}
+        for attribute_info in attributes_info:
+            if attribute_info.name.lower() in attributes_started:
+                attr_dict = {'attribute': attribute_info.name.lower(), 
+                            'polling_period': AttributeProxy(device_name+'/'+attribute_info.name).get_poll_period(),
+                            'data_type': attribute_info.data_type,
+                            'dim_x': attribute_info.max_dim_x, 
+                            'dim_y': attribute_info.max_dim_y}
                 load_list.append(attr_dict)
         # Compute the total load
         polling_load = 0
         for a in load_list:
-            polling_period = float(a['polling_period']/1000)        # in seconds
+            polling_period = a['polling_period']/1000        # in seconds
             n_bytes = get_size_from_datatype(a['data_type'])
             x = int(a['dim_x']) or 1
             y = int(a['dim_y']) or 1
diff --git a/tangostationcontrol/tangostationcontrol/toolkit/archiver_util.py b/tangostationcontrol/tangostationcontrol/toolkit/archiver_util.py
index 932b9682826835bdb3a58dd7a2c93e8ff82a323c..2929dca36608552955953f2947c36c137948b7c9 100644
--- a/tangostationcontrol/tangostationcontrol/toolkit/archiver_util.py
+++ b/tangostationcontrol/tangostationcontrol/toolkit/archiver_util.py
@@ -4,7 +4,7 @@
    Utility functions for the Archiver functionality.
 """
 
-from tango import DeviceProxy
+from tango import DeviceProxy, CmdArgType
 import re
 
 def get_db_config(device_name:str) -> dict:
@@ -105,26 +105,28 @@ def retrieve_attributes_from_wildcards(device_name: str, matching_list: list):
                 matched_list.append(a)
     return matched_list
 
-def get_bytesize_dict() -> dict:
+def DATATYPES_SIZE_DICT() -> dict:
     """
     Return a dictionary whose keys are the Tango datatypes mapping, and the values are the relative byte size
     See reference https://tango-controls.readthedocs.io/en/latest/development/advanced/reference.html#tango-data-type
     and https://www.tutorialspoint.com/cplusplus/cpp_data_types.htm
     TODO: manage String attributes
     """
-    datatypes_dict = {'1_Boolean':1, '2_Short':2, '3_Long':8, '4_Float':4, '5_Double':8,'6_UShort':2,'7_ULong':8,'8_String':20,
-        '9_CharArray':None, '10_ShortArray':None, '11_LongArray': None,'12_FloatArray':None ,'13_DoubleArray':None ,'14_UShortArray':None,
-        '15_ULongArray': None, '16_StringArray': None,'17_LongStringArray': None,'18_DoubleStringArray':None,
-        '19_State':3,'20_ConstDevString':None,'21_BooleanArray':None,'22_UChar':1,'23_Long64':8,'24_ULong64':8,'25_Long64Array':None,
-        '26_ULong64Array':None, '27_Int':4,'28_Encoded':None, '29_Enum':None, '30_PipeBlob':None,'31_StateArray':None}
+    datatypes_dict = {CmdArgType.DevBoolean:1, CmdArgType.DevShort:2, CmdArgType.DevLong:8, CmdArgType.DevFloat:4, CmdArgType.DevDouble:8, 
+        CmdArgType.DevUShort:2, CmdArgType.DevULong:8, CmdArgType.DevString:20, CmdArgType.DevVarCharArray:None, CmdArgType.DevVarShortArray:None, 
+        CmdArgType.DevVarLongArray: None,CmdArgType.DevVarFloatArray:None, CmdArgType.DevVarDoubleArray:None, CmdArgType.DevVarUShortArray:None,
+        CmdArgType.DevVarULongArray: None, CmdArgType.DevVarStringArray: None, CmdArgType.DevVarLongStringArray: None, CmdArgType.DevVarDoubleStringArray:None,
+        CmdArgType.DevState:3, CmdArgType.ConstDevString:None, CmdArgType.DevVarBooleanArray:None, CmdArgType.DevUChar:1, CmdArgType.DevLong64:8,
+        CmdArgType.DevULong64:8,CmdArgType.DevVarLong64Array:None,CmdArgType.DevVarULong64Array:None, CmdArgType.DevInt:4,CmdArgType.DevEncoded:None, 
+        CmdArgType.DevEnum:None, CmdArgType.DevPipeBlob:None}
     return datatypes_dict
 
-def get_size_from_datatype(datatype:str) -> int:
+def get_size_from_datatype(datatype:int) -> int:
     """
     Return the number of bytes for a given Tango datatype
     """
-    datatypes_dict = get_bytesize_dict()
+    datatypes_dict = DATATYPES_SIZE_DICT()
     try :
-        return [v for k,v in datatypes_dict.items() if k.startswith(f"{datatype}_")][0]
+        return datatypes_dict[datatype]
     except IndexError:
         return 1