diff --git a/src/chip_data/hei_chip_data.cpp b/src/chip_data/hei_chip_data.cpp
index 83c7a3d..87044db 100644
--- a/src/chip_data/hei_chip_data.cpp
+++ b/src/chip_data/hei_chip_data.cpp
@@ -182,9 +182,9 @@
         for (unsigned int j = 0; j < numChildNodes; j++)
         {
             BitPosition_t bit;
-            NodeId_t nodeId;
-            Instance_t nodeInst;
-            io_stream >> bit >> nodeId >> nodeInst;
+            NodeId_t childId;
+            Instance_t childInst;
+            io_stream >> bit >> childId >> childInst;
         }
     }
 }
diff --git a/src/register/hei_operator_register.hpp b/src/register/hei_operator_register.hpp
index ce9a869..6bfaca9 100644
--- a/src/register/hei_operator_register.hpp
+++ b/src/register/hei_operator_register.hpp
@@ -49,10 +49,7 @@
 
   public:
     /** @brief Overloaded from parent class. */
-    virtual const BitString* getBitString(const Chip& i_chip) const = 0;
-
-    /** @brief Overloaded from parent class. */
-    size_t getSize() const
+    size_t getSize() const override
     {
         return (BitString::getMinBytes(iv_result.getBitLen()));
     }
@@ -89,7 +86,7 @@
     NotRegister& operator=(const NotRegister& r) = default;
 
     /** @brief Overloaded from parent class. */
-    const BitString* getBitString(const Chip& i_chip) const
+    const BitString* getBitString(const Chip& i_chip) const override
     {
         const auto* bs = iv_child->getBitString(i_chip);
 
@@ -143,7 +140,7 @@
     LeftShiftRegister& operator=(const LeftShiftRegister& r) = default;
 
     /** @brief Overloaded from parent class. */
-    const BitString* getBitString(const Chip& i_chip) const
+    const BitString* getBitString(const Chip& i_chip) const override
     {
         const auto* bs = iv_child->getBitString(i_chip);
 
@@ -200,7 +197,7 @@
     RightShiftRegister& operator=(const RightShiftRegister& r) = default;
 
     /** @brief Overloaded from parent class. */
-    const BitString* getBitString(const Chip& i_chip) const
+    const BitString* getBitString(const Chip& i_chip) const override
     {
         const auto* bs = iv_child->getBitString(i_chip);
 
@@ -259,7 +256,7 @@
     AndRegister& operator=(const AndRegister& r) = default;
 
     /** @brief Overloaded from parent class. */
-    const BitString* getBitString(const Chip& i_chip) const
+    const BitString* getBitString(const Chip& i_chip) const override
     {
         const auto* l_bs = iv_left->getBitString(i_chip);
         const auto* r_bs = iv_right->getBitString(i_chip);
@@ -319,7 +316,7 @@
     OrRegister& operator=(const OrRegister& r) = default;
 
     /** @brief Overloaded from parent class. */
-    const BitString* getBitString(const Chip& i_chip) const
+    const BitString* getBitString(const Chip& i_chip) const override
     {
         const auto* l_bs = iv_left->getBitString(i_chip);
         const auto* r_bs = iv_right->getBitString(i_chip);
@@ -376,7 +373,7 @@
     ConstantRegister& operator=(const ConstantRegister& r) = default;
 
     /** @brief Overloaded from parent class. */
-    const BitString* getBitString(const Chip& i_chip) const
+    const BitString* getBitString(const Chip& i_chip) const override
     {
         return &iv_result;
     }
diff --git a/src/util/hei_bit_string.hpp b/src/util/hei_bit_string.hpp
index 0bb4d8c..669e755 100644
--- a/src/util/hei_bit_string.hpp
+++ b/src/util/hei_bit_string.hpp
@@ -433,7 +433,7 @@
     ~BitStringBuffer();
 
     /** @brief Copy constructor from BitString */
-    BitStringBuffer(const BitString& i_bs);
+    explicit BitStringBuffer(const BitString& i_bs);
 
     /** @brief Copy constructor from BitStringBuffer */
     BitStringBuffer(const BitStringBuffer& i_bsb);
