diff --git a/README.md b/README.md
index 7eb2158cd05d3e937cdac4762d12f9c67931b712..3a565ea29602a6465dbaaa8e95c7ebfbbe1bbc35 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,4 @@
+[PACKAGE]: ../../raw/master/mkp/inv_opengear_base-0.0.3-20240510.mkp "inv_opengear_base-0.0.3-20240510.mkp"
 # Hardware inventory
 
 This plugin adds the serial number, model, manufacturer and firmware version of opengear console servers to the inventory.
diff --git a/doc/.gitkeep b/img/.gitkeep
similarity index 100%
rename from doc/.gitkeep
rename to img/.gitkeep
diff --git a/doc/sample.png b/img/sample.png
similarity index 100%
rename from doc/sample.png
rename to img/sample.png
diff --git a/inv_opengear_base.mkp b/inv_opengear_base.mkp
deleted file mode 100644
index aa8471c184112a93a9f1e79573c2b6b0b866d2e0..0000000000000000000000000000000000000000
Binary files a/inv_opengear_base.mkp and /dev/null differ
diff --git a/inv_opengear_base-0.0.2-20230614.mkp b/mkp/inv_opengear_base-0.0.2-20230614.mkp
similarity index 100%
rename from inv_opengear_base-0.0.2-20230614.mkp
rename to mkp/inv_opengear_base-0.0.2-20230614.mkp
diff --git a/mkp/inv_opengear_base-0.0.3-20240510.mkp b/mkp/inv_opengear_base-0.0.3-20240510.mkp
new file mode 100644
index 0000000000000000000000000000000000000000..f9a9ca9a4a4f4c6c26d65893bead8fabdc504857
Binary files /dev/null and b/mkp/inv_opengear_base-0.0.3-20240510.mkp differ
diff --git a/agent_based/inv_opengear_base.py b/source/agent_based/inv_opengear_base.py
similarity index 86%
rename from agent_based/inv_opengear_base.py
rename to source/agent_based/inv_opengear_base.py
index 7ecc64de4850d9f6901c07c4a197298fbaa0cf5c..49b662b7e1ff3bc6a65fe8356e4e19f2da312032 100644
--- a/agent_based/inv_opengear_base.py
+++ b/source/agent_based/inv_opengear_base.py
@@ -28,16 +28,16 @@
 # ]
 #
 
-from typing import List, Optional
+from typing import List
 
 from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import (
-    StringTable,
     InventoryResult,
+    StringTable,
 )
 from cmk.base.plugins.agent_based.agent_based_api.v1 import (
     Attributes,
-    register,
     SNMPTree,
+    register,
     startswith,
 )
 
@@ -78,23 +78,30 @@ _opengear_models = {
 }
 
 
-def parse_inv_opengear_base(string_table: List[StringTable]) -> Optional[List]:
-    inv_data, ogSerialPortCTS, sysObjectID = string_table
+def parse_inv_opengear_base(string_table: List[StringTable]) -> List | None:
+    try:
+        inv_data, ogSerialPortCTS, sysObjectID = string_table
+    except ValueError:
+        return
 
     try:
         firmware_version, serial_number = inv_data[0]
-    except IndexError:
+    except (IndexError, ValueError):
+        return
+
+    try:
+        sysObjectID = sysObjectID[0][0]
+    except (IndexError, ValueError):
         return
 
     if serial_number == 'N/A':
         serial_number = ''
     number_of_lines = len(ogSerialPortCTS)
-    sysObjectID = sysObjectID[0][0]
     model_name = _opengear_models.get((sysObjectID, number_of_lines), '')
 
     section = []
 
-    invPath = ['hardware', 'system']
+    inv_path = ['hardware', 'system']
 
     for key, value in [
         ('serial', serial_number),
@@ -102,16 +109,16 @@ def parse_inv_opengear_base(string_table: List[StringTable]) -> Optional[List]:
         ('model', model_name),
     ]:
         if not value == '':
-            section.append((invPath, key, value))
+            section.append((inv_path, key, value))
 
-    invPath = ['software', 'firmware']
+    inv_path = ['software', 'firmware']
 
     for key, value in [
         ('vendor', 'opengear'),
         ('version', firmware_version.rstrip(' ()')),
     ]:
         if not value == '':
-            section.append((invPath, key, value))
+            section.append((inv_path, key, value))
 
     return section
 
@@ -137,7 +144,7 @@ register.snmp_section(
         SNMPTree(
             base='.1.3.6.1.4.1.25049.17.2.1',  # OG-STATUSv2-MIB:orgSerialÜprtEntry
             oids=[
-                '19',  # ogSerialPortCTS. ogSerialPortIndex don't exist so we use CTS to get the number of lines
+                '19',  # ogSerialPortCTS. ogSerialPortIndex don't exist, so we use CTS to get the number of lines
             ]
         ),
         SNMPTree(
@@ -147,12 +154,11 @@ register.snmp_section(
             ]
         ),
     ],
-    detect=startswith('.1.3.6.1.2.1.1.2.0', '.1.3.6.1.4.1.25049'),  # sysObjectID == opengear
+    detect=startswith('.1.3.6.1.2.1.1.2.0', '.1.3.6.1.4.1.25049'),
 )
 
 
-def parse_inv_opengear_base_om(string_table: StringTable) -> Optional[List]:
-
+def parse_inv_opengear_base_om(string_table: StringTable) -> List | None:
     try:
         host_name, serial_number, firmware_version, vendor, model_name, number_of_lines = string_table[0]
     except IndexError:
@@ -160,7 +166,7 @@ def parse_inv_opengear_base_om(string_table: StringTable) -> Optional[List]:
 
     section = []
 
-    invPath = ['hardware', 'system']
+    inv_path = ['hardware', 'system']
 
     for key, value in [
         ('serial', serial_number),
@@ -169,16 +175,16 @@ def parse_inv_opengear_base_om(string_table: StringTable) -> Optional[List]:
         ('host_name', host_name),
     ]:
         if not value == '':
-            section.append((invPath, key, value))
+            section.append((inv_path, key, value))
 
-    invPath = ['software', 'firmware']
+    inv_path = ['software', 'firmware']
 
     for key, value in [
         ('vendor', 'opengear'),
         ('version', firmware_version.rstrip(' ()')),
     ]:
         if not value == '':
-            section.append((invPath, key, value))
+            section.append((inv_path, key, value))
 
     return section
 
@@ -198,7 +204,7 @@ register.snmp_section(
             '2.1',  # ogOmSerialPortCount
         ]
     ),
-    detect=startswith('.1.3.6.1.2.1.1.2.0', '.1.3.6.1.4.1.25049.1.101'),  # sysObjectID == OG-PRODUCTS-MIB::ogOperationsManager
+    detect=startswith('.1.3.6.1.2.1.1.2.0', '.1.3.6.1.4.1.25049'),
 )
 
 register.inventory_plugin(
diff --git a/packages/inv_opengear_base b/source/packages/inv_opengear_base
similarity index 87%
rename from packages/inv_opengear_base
rename to source/packages/inv_opengear_base
index 52a4b2d693edff5ef91e461fb576a59ed322280d..a357d3b6effec6d7d90327c3235849736b28a46d 100644
--- a/packages/inv_opengear_base
+++ b/source/packages/inv_opengear_base
@@ -14,7 +14,7 @@
  'files': {'agent_based': ['inv_opengear_base.py']},
  'name': 'inv_opengear_base',
  'title': 'opengear base inventory',
- 'version': '0.0.2-20230614',
+ 'version': '0.0.3-20240510',
  'version.min_required': '2.0.0b1',
- 'version.packaged': '2.2.0p2',
- 'version.usable_until': '2.2.0b1'}
+ 'version.packaged': '2.2.0p24',
+ 'version.usable_until': '2.3.0b1'}