diff --git a/src/calng/calcat_utils.py b/src/calng/calcat_utils.py
index ce9d981159d6d2024b74f268a4ceddd8429a58e6..3f5753fb2f3ebf6890f83ea31955ccfd58d11145 100644
--- a/src/calng/calcat_utils.py
+++ b/src/calng/calcat_utils.py
@@ -308,7 +308,9 @@ class BaseCalcatFriend:
         """Helper to update information about found constants on device"""
         self.device.set(f"{self.status_prefix}.{constant.name}.{key}", value)
 
-    @functools.cached_property
+    # Python 3.6 does not have functools.cached_property or even functools.cache
+    @property
+    @functools.lru_cache()
     def detector_id(self):
         detector_name = self._get_param("detectorName")
         resp = Detector.get_by_identifier(self.client, detector_name)
@@ -317,7 +319,8 @@ class BaseCalcatFriend:
         self._set_param("detectorId", str(res))
         return res
 
-    @functools.cached_property
+    @property
+    @functools.lru_cache()
     def detector_type_id(self):
         detector_type = self._get_param("detectorType")
         resp = DetectorType.get_by_name(self.client, detector_type)
@@ -328,7 +331,8 @@ class BaseCalcatFriend:
         self._set_param("detectorTypeId", str(res))
         return res
 
-    @functools.cached_property
+    @property
+    @functools.lru_cache()
     def pdus(self):
         resp = PhysicalDetectorUnit.get_all_by_detector(
             self.client, self.detector_id, self._get_param("deviceMappingSnapshotAt")
@@ -339,11 +343,13 @@ class BaseCalcatFriend:
                 del pdu[irrelevant_key]
         return resp["data"]
 
-    @functools.cached_property
+    @property
+    @functools.lru_cache()
     def _karabo_da_to_float_uuid(self):
         return {pdu["karabo_da"]: pdu["float_uuid"] for pdu in self.pdus}
 
-    @functools.cached_property
+    @property
+    @functools.lru_cache()
     def _karabo_da_to_id(self):
         return {pdu["karabo_da"]: pdu["id"] for pdu in self.pdus}