diff --git a/tools/fan_rpm_loop_unittest.sh b/tools/fan_rpm_loop_unittest.sh
index d4a001e..7ecde8b 100755
--- a/tools/fan_rpm_loop_unittest.sh
+++ b/tools/fan_rpm_loop_unittest.sh
@@ -1,47 +1,47 @@
 #!/bin/bash
 
-SourceModule() {
-  # shellcheck source=tools/fan_rpm_loop_test.sh
-  . fan_rpm_loop_test.sh
+function SourceModule() {
+    # shellcheck source=tools/fan_rpm_loop_test.sh
+    . fan_rpm_loop_test.sh
 }
 
-SetupShims() {
-  MkDir()      { echo "MkDir      $*"; }
-  Mv()         { echo "Mv         $*"; }
-  Sleep()      { echo "Sleep      $*"; }
-  SystemCtl()  { echo "SystemCtl  $*"; }
-  CommandRpm() { echo "CommandRpm $*"; }
+function SetupShims() {
+    function MkDir() { echo "MkDir      $*"; }
+    function Mv() { echo "Mv         $*"; }
+    function Sleep() { echo "Sleep      $*"; }
+    function SystemCtl() { echo "SystemCtl  $*"; }
+    function CommandRpm() { echo "CommandRpm $*"; }
 }
 
-TestRunRpmStepsWorks() {
-  RunRpmSteps 1000 5000 3 30 || return
-  RunRpmSteps 5000 1000 3 30 || return
-  RunRpmSteps 1000 5000 1 30 || return
-  RunRpmSteps 5000 1000 1 30 || return
+function TestRunRpmStepsWorks() {
+    RunRpmSteps 1000 5000 3 30 || return
+    RunRpmSteps 5000 1000 3 30 || return
+    RunRpmSteps 1000 5000 1 30 || return
+    RunRpmSteps 5000 1000 1 30 || return
 }
 
-TestMainRejectsLowMinAndMax() {
-  if main 0 0; then
-    echo "main 0 0 not rejected?"
-    return 1
-  fi
-  if main 1 0; then
-    echo "main 1 0 not rejected?"
-    return 1
-  fi
+function TestMainRejectsLowMinAndMax() {
+    if main 0 0; then
+        echo "main 0 0 not rejected?"
+        return 1
+    fi
+    if main 1 0; then
+        echo "main 1 0 not rejected?"
+        return 1
+    fi
 }
 
-TestMainWorks() {
-  main 1000 5005 || return
+function TestMainWorks() {
+    main 1000 5005 || return
 }
 
-main() {
-  SourceModule                || return
-  SetupShims                  || return
-  TestRunRpmStepsWorks        || return
-  TestMainRejectsLowMinAndMax || return
-  TestMainWorks               || return
-  echo "All tests completed."
+function main() {
+    SourceModule                || return
+    SetupShims                  || return
+    TestRunRpmStepsWorks        || return
+    TestMainRejectsLowMinAndMax || return
+    TestMainWorks               || return
+    echo "All tests completed."
 }
 
 return 0 2>/dev/null
