diff --git a/agent_based/checkpoint_powersupply.py b/agent_based/checkpoint_powersupply.py
index 5a65d5c26b01b6c344c544e3b359b20711aa12c0..fd3252a07c588bae28a4b4cf5da7919b39d2c0d4 100644
--- a/agent_based/checkpoint_powersupply.py
+++ b/agent_based/checkpoint_powersupply.py
@@ -12,6 +12,7 @@
 # 2020-06-08: changed snmp-scan function
 # 2021-08-10: rewritten for CMK 2.0
 #             added WATO
+# 2023-04-23: refactoring
 # 
 #
 # ToDo: remove VSX...
@@ -30,12 +31,6 @@
 # .1.3.6.1.4.1.2620.1.6.7.9.1.1.2.2.0 = STRING: Up
 
 #
-#
-# sample section
-# smart-1 5150
-# {'1': 'Present', '2': 'Present'}
-# 23800 appliance
-# {'1': 'Up', '2': 'Up'}
 
 from typing import Dict, Optional
 
@@ -59,12 +54,18 @@ from cmk.base.plugins.agent_based.agent_based_api.v1 import (
 
 
 def parse_checkpoint_powersupply(string_table: StringTable) -> Dict[str, str]:
-    powersupplys = {}
-    for psindex, psstatus in string_table:
-        if psindex.isdigit():
-            powersupplys.update({psindex: psstatus})
+    """
+    >>> print(parse_checkpoint_powersupply([['1', 'Up'], ['2', 'Up']]))
+    {'1': 'Up', '2': 'Up'}
+    >>> print(parse_checkpoint_powersupply([['1', 'Present'], ['2', 'Present']]))
+    {'1': 'Present', '2': 'Present'}
+    """
+    power_supplys = {}
+    for ps_index, ps_status in string_table:
+        if ps_index.isdigit():
+            power_supplys.update({ps_index: ps_status})
 
-    return powersupplys
+    return power_supplys
 
 
 def discovery_checkpoint_powersupply(section: Dict[str, str]) -> DiscoveryResult:
@@ -74,14 +75,14 @@ def discovery_checkpoint_powersupply(section: Dict[str, str]) -> DiscoveryResult
 
 def check_checkpoint_powersupply(item, params, section: Dict[str, str]) -> Optional[CheckResult]:
     try:
-        psstatus = section[item]
+        ps_status = section[item]
     except KeyError:
         return
 
-    if psstatus.lower() in ['up', 'present']:
-        yield Result(state=State.OK, summary=f'Status: {psstatus}')
+    if ps_status.lower() in ['up', 'present']:
+        yield Result(state=State.OK, summary=f'Status: {ps_status}')
     else:
-        yield Result(state=State(params['ps_not_up']), summary=f'Status: {psstatus}')
+        yield Result(state=State(params['ps_not_up']), summary=f'Status: {ps_status}')
 
 
 register.snmp_section(
diff --git a/checkpoint_powersupply.mkp b/checkpoint_powersupply.mkp
index c19b16f8fd251bf840ff1ac48959c090d01b69c8..fba787f008fc7b15b776c194a33d2a92720d899b 100644
Binary files a/checkpoint_powersupply.mkp and b/checkpoint_powersupply.mkp differ
diff --git a/gui/wato/checkpoint_powersupply.py b/gui/wato/checkpoint_powersupply.py
new file mode 100644
index 0000000000000000000000000000000000000000..2fc434326aca92d51e139429f9b3925a9eb42d18
--- /dev/null
+++ b/gui/wato/checkpoint_powersupply.py
@@ -0,0 +1,44 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+#
+# License: GNU General Public License v2
+#
+# Author: thl-cmk[at]outlook[dot]com
+# URL   : https://thl-cmk.hopto.org
+# Date  : 2021-08-10
+#
+# 2023-04-23: moved wato file to ~/local/lib/check_mk/gui/plugins/wato
+#             moved rule set from networking to hardware
+
+from cmk.gui.i18n import _
+from cmk.gui.valuespec import (
+    Dictionary,
+    TextAscii,
+    MonitoringState,
+)
+from cmk.gui.plugins.wato.utils import (
+    CheckParameterRulespecWithItem,
+    rulespec_registry,
+    RulespecGroupCheckParametersHardware,
+)
+
+
+def _parameter_valuespec_checkpoint_powersupply():
+    return Dictionary(elements=[
+        ('ps_not_up',
+         MonitoringState(
+             default_value=2,
+             title=_('State if power supply is not "UP" or "Present".'),
+         )),
+    ])
+
+
+rulespec_registry.register(
+    CheckParameterRulespecWithItem(
+        check_group_name='checkpoint_powersupply',
+        group=RulespecGroupCheckParametersHardware,
+        item_spec=lambda: TextAscii(title=_('Power Supply index'), ),
+        match_type='dict',
+        parameter_valuespec=_parameter_valuespec_checkpoint_powersupply,
+        title=lambda: _('Check Point Power Supply'),
+    ))
diff --git a/packages/checkpoint_powersupply b/packages/checkpoint_powersupply
index e2ab23900b992478c5e293013f477075ede23e25..6180734214523bf8b2d550f3b79941eb15d65c6a 100644
--- a/packages/checkpoint_powersupply
+++ b/packages/checkpoint_powersupply
@@ -5,12 +5,10 @@
                 'WATO\n',
  'download_url': 'https://thl-cmk.hopto.org',
  'files': {'agent_based': ['checkpoint_powersupply.py'],
-           'checkman': ['checkpoint_powersupply'],
-           'web': ['plugins/wato/checkpoint_powersupply.py']},
+           'gui': ['wato/checkpoint_powersupply.py']},
  'name': 'checkpoint_powersupply',
- 'num_files': 3,
  'title': 'Check Point power supply status',
- 'version': '20210810.v0.0.2',
- 'version.min_required': '2.0.0',
- 'version.packaged': '2021.09.20',
+ 'version': '1.0.1-20230423',
+ 'version.min_required': '2.1.0b1',
+ 'version.packaged': '2.1.0p21',
  'version.usable_until': None}
\ No newline at end of file