diff --git a/source/application/api/common/source/Classifier.cc b/source/application/api/common/source/Classifier.cc
index 8a335f7..9b14ffd 100644
--- a/source/application/api/common/source/Classifier.cc
+++ b/source/application/api/common/source/Classifier.cc
@@ -1,5 +1,5 @@
 /*
- * SPDX-FileCopyrightText: Copyright 2021-2022 Arm Limited and/or its affiliates <open-source-office@arm.com>
+ * SPDX-FileCopyrightText: Copyright 2021-2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
  * SPDX-License-Identifier: Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -91,7 +91,7 @@
             totalOutputSize *= outputTensor->dims->data[inputDim];
         }
 
-        /* Sanity checks. */
+        /* Health check */
         if (totalOutputSize < topNCount) {
             printf_err("Output vector is smaller than %" PRIu32 "\n", topNCount);
             return false;
diff --git a/source/application/api/use_case/asr/src/AsrClassifier.cc b/source/application/api/use_case/asr/src/AsrClassifier.cc
index a9ed678..3c9c32e 100644
--- a/source/application/api/use_case/asr/src/AsrClassifier.cc
+++ b/source/application/api/use_case/asr/src/AsrClassifier.cc
@@ -1,5 +1,5 @@
 /*
- * SPDX-FileCopyrightText: Copyright 2021 Arm Limited and/or its affiliates <open-source-office@arm.com>
+ * SPDX-FileCopyrightText: Copyright 2021,2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
  * SPDX-License-Identifier: Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -89,7 +89,7 @@
 
             constexpr uint32_t outColsIdx = Wav2LetterModel::ms_outputColsIdx;
 
-            /* Sanity checks. */
+            /* Health checks. */
             if (outputTensor == nullptr) {
                 printf_err("Output vector is null pointer.\n");
                 return false;
diff --git a/source/application/api/use_case/asr/src/Wav2LetterPostprocess.cc b/source/application/api/use_case/asr/src/Wav2LetterPostprocess.cc
index f74bda6..c2cc9fd 100644
--- a/source/application/api/use_case/asr/src/Wav2LetterPostprocess.cc
+++ b/source/application/api/use_case/asr/src/Wav2LetterPostprocess.cc
@@ -1,5 +1,5 @@
 /*
- * SPDX-FileCopyrightText: Copyright 2021-2022 Arm Limited and/or its affiliates <open-source-office@arm.com>
+ * SPDX-FileCopyrightText: Copyright 2021-2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
  * SPDX-License-Identifier: Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -53,7 +53,7 @@
         auto* ptrData = tflite::GetTensorData<uint8_t>(this->m_outputTensor);
         const uint32_t elemSz = AsrPostProcess::GetTensorElementSize(this->m_outputTensor);
 
-        /* Other sanity checks. */
+        /* Other health checks. */
         if (0 == elemSz) {
             printf_err("Tensor type not supported for post processing\n");
             return false;
diff --git a/source/application/api/use_case/kws/src/KwsClassifier.cc b/source/application/api/use_case/kws/src/KwsClassifier.cc
index 420c6de..e498f06 100644
--- a/source/application/api/use_case/kws/src/KwsClassifier.cc
+++ b/source/application/api/use_case/kws/src/KwsClassifier.cc
@@ -1,5 +1,5 @@
 /*
- * SPDX-FileCopyrightText: Copyright 2022 Arm Limited and/or its affiliates <open-source-office@arm.com>
+ * SPDX-FileCopyrightText: Copyright 2022-2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
  * SPDX-License-Identifier: Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -47,7 +47,7 @@
             totalOutputSize *= outputTensor->dims->data[inputDim];
         }
 
-        /* Sanity checks. */
+        /* Health check */
         if (totalOutputSize < topNCount) {
             printf_err("Output vector is smaller than %" PRIu32 "\n", topNCount);
             return false;
diff --git a/source/hal/source/components/lcd/source/glcd_mps3/glcd_mps3.c b/source/hal/source/components/lcd/source/glcd_mps3/glcd_mps3.c
index 1a10bad..cfbb386 100644
--- a/source/hal/source/components/lcd/source/glcd_mps3/glcd_mps3.c
+++ b/source/hal/source/components/lcd/source/glcd_mps3/glcd_mps3.c
@@ -1,5 +1,5 @@
 /*
- * SPDX-FileCopyrightText: Copyright 2022 Arm Limited and/or its affiliates <open-source-office@arm.com>
+ * SPDX-FileCopyrightText: Copyright 2022-2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
  * SPDX-License-Identifier: Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -203,7 +203,7 @@
 {
     unsigned int i, j, k, pixs;
 
-    /* Sanity check: out of bounds? */
+    /* Heatlh check: out of bounds? */
     if ((x + cw) > GLCD_WIDTH || (y + ch) > GLCD_HEIGHT) {
         return;
     }
diff --git a/source/hal/source/components/lcd/source/lcd_img.c b/source/hal/source/components/lcd/source/lcd_img.c
index d3ce260..752fe86 100644
--- a/source/hal/source/components/lcd/source/lcd_img.c
+++ b/source/hal/source/components/lcd/source/lcd_img.c
@@ -1,5 +1,5 @@
 /*
- * SPDX-FileCopyrightText: Copyright 2022 Arm Limited and/or its affiliates <open-source-office@arm.com>
+ * SPDX-FileCopyrightText: Copyright 2022-2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
  * SPDX-License-Identifier: Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -41,7 +41,7 @@
     const uint32_t pos_x, const uint32_t pos_y,
     const uint32_t downsample_factor)
 {
-    /* Sanity checks */
+    /* Health checks */
     assert(data);
     if ((pos_x + width/downsample_factor > GLCD_WIDTH) ||
             (pos_y + height/downsample_factor > GLCD_HEIGHT)) {
diff --git a/source/hal/source/platform/mps3/source/smm_mps3.h b/source/hal/source/platform/mps3/source/smm_mps3.h
index e455975..8354c9c 100644
--- a/source/hal/source/platform/mps3/source/smm_mps3.h
+++ b/source/hal/source/platform/mps3/source/smm_mps3.h
@@ -1,5 +1,5 @@
 /*
- * SPDX-FileCopyrightText: Copyright 2022 Arm Limited and/or its affiliates <open-source-office@arm.com>
+ * SPDX-FileCopyrightText: Copyright 2022-2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
  * SPDX-License-Identifier: Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -182,8 +182,8 @@
                                   */
   __IO uint32_t CR1;             /* Offset: 0x004 (R/W)  Control register 1
                                   *                         [31:4] : Reserved
-                                  *                            [3] : Slave-mode output disable
-                                  *                            [2] : Master or slave mode select
+                                  *                            [3] : Worker output disable
+                                  *                            [2] : Controller or worker mode select
                                   *                            [1] : Synchronous serial port enable
                                   *                            [0] : Loop back mode
                                   */
@@ -259,9 +259,9 @@
 #define SSP_CR1_LBM_Msk         (1UL<<SSP_CR1_LBM_Pos)
 #define SSP_CR1_SSE_Pos         1           /* Serial port enable. */
 #define SSP_CR1_SSE_Msk         (1UL<<SSP_CR1_SSE_Pos)
-#define SSP_CR1_MS_Pos          2           /* Master or Slave mode. */
+#define SSP_CR1_MS_Pos          2           /* Controller or worker mode. */
 #define SSP_CR1_MS_Msk          (1UL<<SSP_CR1_MS_Pos)
-#define SSP_CR1_SOD_Pos         3           /* Slave Output mode Disable. */
+#define SSP_CR1_SOD_Pos         3           /* Secondary Output mode Disable. */
 #define SSP_CR1_SOD_Msk         (1UL<<SSP_CR1_SOD_Pos)
 
 /* SSP_SR Status register. */
diff --git a/source/math/include/PlatformMath.hpp b/source/math/include/PlatformMath.hpp
index 26ebf37..ef02a22 100644
--- a/source/math/include/PlatformMath.hpp
+++ b/source/math/include/PlatformMath.hpp
@@ -1,5 +1,5 @@
 /*
- * SPDX-FileCopyrightText: Copyright 2021-2022 Arm Limited and/or its affiliates <open-source-office@arm.com>
+ * SPDX-FileCopyrightText: Copyright 2021-2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
  * SPDX-License-Identifier: Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -150,7 +150,7 @@
          *                       array.
          * @param[in]   srcLen   Number of elements in the array/vector.
          * @param[out]  ptrDst   Output buffer to be populated.
-         * @param[in]   dstLen   Output buffer len (for sanity check only).
+         * @param[in]   dstLen   Output buffer len (for health check only).
          * @return      true if successful, false otherwise.
          */
         static bool ComplexMagnitudeSquaredF32(float* ptrSrc,
