diff --git a/Ccs/s2k_partypes.py b/Ccs/s2k_partypes.py
index 4329205317e0479ad1c0b6e93a7493273f58150f..93ae90525ae4fdc313fda0837033fd3d0d535714 100644
--- a/Ccs/s2k_partypes.py
+++ b/Ccs/s2k_partypes.py
@@ -1,26 +1,5 @@
 # SCOS 2000 PTC/PFC parameter format translation table
 
-ptt_legacy = {
-    1: {0: 'bit1'},
-    2: {1: 'bit1', 2: 'bit2', 3: 'bit3', 4: 'bit4', 5: 'bit5', 6: 'bit6', 7: 'bit7', 8: 'B', 9: 'bit9', 10: 'bit10',
-        11: 'bit11', 12: 'bit12', 13: 'bit13', 14: 'bit14', 15: 'bit15', 16: 'H', 17: 'bit17', 18: 'bit18',
-        19: 'bit19', 20: 'bit20', 21: 'bit21', 22: 'bit22', 23: 'bit23', 24: 'I24', 25: 'bit25', 26: 'bit26',
-        27: 'bit27', 28: 'bit28', 29: 'bit29', 30: 'bit30', 31: 'bit31', 32: 'I'},
-    3: {0: 'bit4', 1: 'bit5', 2: 'bit6', 3: 'bit7', 4: 'B', 5: 'bit9', 6: 'bit10', 7: 'bit11', 8: 'bit12',
-        9: 'bit13', 10: 'bit14', 11: 'bit15', 12: 'H', 13: 'I24', 14: 'I'},
-    4: {0: 'sbit4', 1: 'sbit5', 2: 'sbit6', 3: 'sbit7', 4: 'b', 5: 'sbit9', 6: 'sbit10', 7: 'sbit11', 8: 'sbit12',
-        9: 'sbit13', 10: 'sbit14', 11: 'sbit15', 12: 'h', 13: 'i24', 14: 'i'},
-    5: {1: 'f', 2: 'd'},
-    6: {1: 'bit1', 2: 'bit2', 3: 'bit3', 4: 'bit4', 5: 'bit5', 6: 'bit6', 7: 'bit7', 8: 'B', 9: 'bit9', 10: 'bit10',
-        11: 'bit11', 12: 'bit12', 13: 'bit13', 14: 'bit14', 15: 'bit15', 16: 'H', 17: 'bit17', 18: 'bit18',
-        19: 'bit19', 20: 'bit20', 21: 'bit21', 22: 'bit22', 23: 'bit23', 24: 'I24', 25: 'bit25', 26: 'bit26',
-        27: 'bit27', 28: 'bit28', 29: 'bit29', 30: 'bit30', 31: 'bit31', 32: 'I'},
-    7: {0: 'vOCT', 382: '382s'},
-    8: {0: 'vASCII', 382: '382s'},
-    9: {17: 'CUC917'},
-    11: {0: 'deduced'}
-}
-
 ptt = {
     1: {0: 'uint1'},
     2: {1: 'uint1', 2: 'uint2', 3: 'uint3', 4: 'uint4', 5: 'uint5', 6: 'uint6', 7: 'uint7', 8: 'B', 9: 'uint9', 10: 'uint10',
@@ -49,4 +28,40 @@ ptype_parameters = ()
 
 ptype_values = {}
 
-# from packet_config_SMILE import *
\ No newline at end of file
+DEFAULT_FORMATS = {
+    1: {0: 'uint1'},
+    2: {8: 'B', 16: 'H', 24: 'I24', 32: 'I'},
+    3: {0: 'uint4', 1: 'uint5', 2: 'uint6', 3: 'uint7', 4: 'B', 5: 'uint9', 6: 'uint10', 7: 'uint11', 8: 'uint12',
+        9: 'uint13', 10: 'uint14', 11: 'uint15', 12: 'H', 13: 'I24', 14: 'I'},
+    4: {0: 'int4', 1: 'int5', 2: 'int6', 3: 'int7', 4: 'b', 5: 'int9', 6: 'int10', 7: 'int11', 8: 'int12',
+        9: 'int13', 10: 'int14', 11: 'int15', 12: 'h', 13: 'i24', 14: 'i'},
+    5: {1: 'f', 2: 'd'},
+    6: {8: 'B', 16: 'H', 24: 'I24', 32: 'I'},
+    7: {0: 'vOCT'},
+    8: {0: 'vASCII'},
+    9: {17: 'CUC917', 18: 'CUC918'},
+    11: {0: 'deduced'},
+    'SPARE': {8: '1x', 16: '2x', 24: '3x', 32: '4x'},
+    'SPARE_visible': {8: 'B', 16: 'H', 24: 'I24', 32: 'I'},
+    'PAD': {8: '1x', 16: '2x', 24: '3x', 32: '4x'}
+}
+
+
+class ParameterTypeLookupTable:
+
+    def __call__(self, a, b):
+        if a in DEFAULT_FORMATS:
+            if b in DEFAULT_FORMATS[a]:
+                return DEFAULT_FORMATS[a][b]
+            else:
+                if a in [2, 6]:
+                    return 'uint{}'.format(b)
+                elif a in [7, 8]:
+                    return '{}s'.format(b)
+                else:
+                    raise NotImplementedError('(PTC, PFC) = ({}, {})'.format(a, b))
+        else:
+            raise NotImplementedError('PTC = {}'.format(a))
+
+
+# ptt = ParameterTypeLookupTable()