diff --git a/src/chip_data/hei_chip_data_stream.hpp b/src/chip_data/hei_chip_data_stream.hpp
index 1ca28af..cb3ed7d 100644
--- a/src/chip_data/hei_chip_data_stream.hpp
+++ b/src/chip_data/hei_chip_data_stream.hpp
@@ -71,7 +71,8 @@
         HEI_ASSERT((iv_currentIndex + i_size) <= iv_bufferSize);
 
         // Copy the buffer.
-        memcpy(o_buf, (char*)iv_buffer + iv_currentIndex, i_size);
+        memcpy(o_buf, static_cast<const char*>(iv_buffer) + iv_currentIndex,
+               i_size);
 
         // Increment the curent index for the next piece of data.
         iv_currentIndex += i_size;
diff --git a/src/hei_chip.hpp b/src/hei_chip.hpp
index cc8995f..3ef83aa 100644
--- a/src/hei_chip.hpp
+++ b/src/hei_chip.hpp
@@ -66,14 +66,14 @@
      * purpose is to eventually get passed back to the user application with
      * information associated with each chip.
      */
-    const void* iv_chip;
+    const void* iv_chip = nullptr;
 
     /**
      * When doing analysis on a chip, the isolator will need to know the chip
      * type in order to look up the correct information from the Chip Data
      * Files.
      */
-    ChipType_t iv_type;
+    ChipType_t iv_type = 0;
 
 }; // end class Chip
 
diff --git a/src/hei_signature.hpp b/src/hei_signature.hpp
index 92aaa3f..dbf63a8 100644
--- a/src/hei_signature.hpp
+++ b/src/hei_signature.hpp
@@ -50,11 +50,13 @@
     Signature& operator=(const Signature&) = default;
 
   private:
-    Chip iv_chip;                ///< Chip containing this register.
-    NodeId_t iv_id;              ///< Node ID.
-    Instance_t iv_instance;      ///< Instance of this register.
-    BitPosition_t iv_bit;        ///< Target bit within this register.
-    AttentionType_t iv_attnType; ///< Attention type reported by this bit.
+    Chip iv_chip;               ///< Chip containing this register.
+    NodeId_t iv_id         = 0; ///< Node ID.
+    Instance_t iv_instance = 0; ///< Instance of this register.
+    BitPosition_t iv_bit   = 0; ///< Target bit within this register.
+
+    /** Attention type reported by this bit. */
+    AttentionType_t iv_attnType = ATTN_TYPE_CHECKSTOP;
 
   public: // Member functions
     /** @return The chip containing this register. */
diff --git a/src/register/hei_hardware_register.cpp b/src/register/hei_hardware_register.cpp
index 78e92a9..b6a2d12 100644
--- a/src/register/hei_hardware_register.cpp
+++ b/src/register/hei_hardware_register.cpp
@@ -147,9 +147,9 @@
 void HardwareRegister::Cache::flush()
 {
     // Delete all of the BitStrings.
-    for (auto& chipPair : iv_cache)
+    for (const auto& chipPair : iv_cache)
     {
-        for (auto& hwRegPair : chipPair.second)
+        for (const auto& hwRegPair : chipPair.second)
         {
             delete hwRegPair.second;
         }
diff --git a/src/register/hei_hardware_register.hpp b/src/register/hei_hardware_register.hpp
index 5147edf..be9fdc1 100644
--- a/src/register/hei_hardware_register.hpp
+++ b/src/register/hei_hardware_register.hpp
@@ -105,9 +105,6 @@
     /** @return The address of this register. */
     virtual RegisterAddress_t getAddress() const = 0;
 
-    /** @return The size (in bytes) of this register. */
-    virtual size_t getSize() const = 0;
-
   public: // Operators
     /** @brief Equals operator. */
     bool operator==(const HardwareRegister& i_r) const
@@ -165,7 +162,7 @@
 
   public:
     /** Function overloaded from parent Register class. */
-    const BitString* getBitString(const Chip& i_chip) const;
+    const BitString* getBitString(const Chip& i_chip) const override;
 
     /**
      * @brief  Reads a register from hardware via the user interface APIs.
diff --git a/src/register/hei_scom_register.hpp b/src/register/hei_scom_register.hpp
index 040bd4f..da0eee9 100644
--- a/src/register/hei_scom_register.hpp
+++ b/src/register/hei_scom_register.hpp
@@ -41,19 +41,19 @@
 
   public: // Accessor functions
     /** Function overloaded from parent HardwareRegister class. */
-    RegisterType_t getType() const
+    RegisterType_t getType() const override
     {
         return REG_TYPE_SCOM;
     }
 
     /** Function overloaded from parent HardwareRegister class. */
-    RegisterAddress_t getAddress() const
+    RegisterAddress_t getAddress() const override
     {
         return static_cast<RegisterAddress_t>(iv_address);
     }
 
     /** Function overloaded from parent HardwareRegister class. */
-    size_t getSize() const
+    size_t getSize() const override
     {
         return 8;
     }
@@ -106,19 +106,19 @@
 
   public: // Accessor functions
     /** Function overloaded from parent HardwareRegister class. */
-    RegisterType_t getType() const
+    RegisterType_t getType() const override
     {
         return REG_TYPE_ID_SCOM;
     }
 
     /** Function overloaded from parent HardwareRegister class. */
-    RegisterAddress_t getAddress() const
+    RegisterAddress_t getAddress() const override
     {
         return static_cast<RegisterAddress_t>(iv_address);
     }
 
     /** Function overloaded from parent HardwareRegister class. */
-    size_t getSize() const
+    size_t getSize() const override
     {
         return 8; // See note in class documentation.
     }
diff --git a/src/util/hei_bit_string.cpp b/src/util/hei_bit_string.cpp
index 88eb7bb..066cde9 100644
--- a/src/util/hei_bit_string.cpp
+++ b/src/util/hei_bit_string.cpp
@@ -422,7 +422,7 @@
 
     o_relPos = (i_absPos + iv_offset) % UINT8_BIT_LEN;
 
-    return ((uint8_t*)iv_bufAddr + ((i_absPos + iv_offset) / UINT8_BIT_LEN));
+    return (iv_bufAddr + ((i_absPos + iv_offset) / UINT8_BIT_LEN));
 }
 
 //##############################################################################
@@ -439,7 +439,7 @@
 
 BitStringBuffer::~BitStringBuffer()
 {
-    delete[](uint8_t*) getBufAddr();
+    delete[] getBufAddr();
 }
 
 //------------------------------------------------------------------------------
@@ -472,7 +472,7 @@
 {
     // The initBuffer() function will deallocate the buffer as well, however we
     // also need to deallocate the buffer here before we set the length.
-    delete[](uint8_t*) getBufAddr();
+    delete[] getBufAddr();
     setBufAddr(nullptr);
 
     setBitLen(i_bs.getBitLen());
@@ -493,7 +493,7 @@
     {
         // The initBuffer() function will deallocate the buffer as well, however
         // we also need to deallocate the buffer here before we set the length.
-        delete[](uint8_t*) getBufAddr();
+        delete[] getBufAddr();
         setBufAddr(nullptr);
 
         setBitLen(i_bsb.getBitLen());
@@ -512,7 +512,7 @@
 void BitStringBuffer::initBuffer()
 {
     // Deallocate the current buffer.
-    delete[](uint8_t*) getBufAddr();
+    delete[] getBufAddr();
 
     // create new buffer, initialized to 0's
     setBufAddr(new uint8_t[getMinBytes(getBitLen())]());
diff --git a/src/util/hei_bit_string.hpp b/src/util/hei_bit_string.hpp
index 59369b7..5a1ad0f 100644
--- a/src/util/hei_bit_string.hpp
+++ b/src/util/hei_bit_string.hpp
@@ -75,7 +75,8 @@
      *        to allocate sufficient memory space for this bit string.
      */
     BitString(uint64_t i_bitLen, void* i_bufAddr, uint64_t i_offset = 0) :
-        iv_bitLen(i_bitLen), iv_bufAddr(i_bufAddr), iv_offset(i_offset)
+        iv_bitLen(i_bitLen), iv_bufAddr(static_cast<uint8_t*>(i_bufAddr)),
+        iv_offset(i_offset)
     {}
 
     /** @brief Destructor */
@@ -89,7 +90,7 @@
 
     /** @return The address of the bit string buffer. Note that this may
      *          return nullptr. */
-    void* getBufAddr() const
+    uint8_t* getBufAddr() const
     {
         return iv_bufAddr;
     }
@@ -391,7 +392,7 @@
      */
     void setBufAddr(void* i_newBufAddr)
     {
-        iv_bufAddr = i_newBufAddr;
+        iv_bufAddr = static_cast<uint8_t*>(i_newBufAddr);
     }
 
     /** @param i_newBitLen The new bit length of this bit string buffer. */
@@ -414,9 +415,9 @@
     uint8_t* getRelativePosition(uint64_t& o_relPos, uint64_t i_absPos) const;
 
   private:
-    uint64_t iv_bitLen; ///< The bit length of this buffer.
-    void* iv_bufAddr;   ///< The beginning address of this buffer.
-    uint64_t iv_offset; ///< Start position offset
+    uint64_t iv_bitLen;  ///< The bit length of this buffer.
+    uint8_t* iv_bufAddr; ///< The beginning address of this buffer.
+    uint64_t iv_offset;  ///< Start position offset
 };
 
 //##############################################################################
