diff --git a/src/isolator/hei_isolator.cpp b/src/isolator/hei_isolator.cpp
index b09f16a..0b3f88f 100644
--- a/src/isolator/hei_isolator.cpp
+++ b/src/isolator/hei_isolator.cpp
@@ -14,6 +14,8 @@
     // BEGIN temporary code
     HEI_INF( "Isolator::initialize(%p,%lu,%d)", i_buffer, i_bufferSize,
              i_forceInit );
+
+    Flyweight<HardwareRegister>::getSingleton().get( HardwareRegister {} );
     // END temporary code
 
     return rc;
diff --git a/src/register/hei_hardware_register.cpp b/src/register/hei_hardware_register.cpp
index 58106bf..e007eca 100755
--- a/src/register/hei_hardware_register.cpp
+++ b/src/register/hei_hardware_register.cpp
@@ -183,11 +183,11 @@
 
 #endif // __HEI_READ_ONLY
 
-#if 0
 //------------------------------------------------------------------------------
 
 bool HardwareRegister::operator == ( const HardwareRegister & i_rightRegister ) const
 {
+#if 0
     if( iv_scomAddress == i_rightRegister.GetAddress() )
     {
         return ( iv_chipType == i_rightRegister.getChipType() );
@@ -196,12 +196,14 @@
     {
         return false ;
     }
-
+#endif
+    return false;
 }
 
 //-----------------------------------------------------------------------------
 bool HardwareRegister::operator < ( const HardwareRegister & i_rightRegister  ) const
 {
+#if 0
     if( iv_scomAddress == i_rightRegister.GetAddress() )
     {
         return ( iv_chipType < i_rightRegister.getChipType() );
@@ -210,9 +212,10 @@
     {
         return( iv_scomAddress  < i_rightRegister.GetAddress() );
     }
-
-
+#endif
+    return false;
 }
+#if 0
 //-----------------------------------------------------------------------------
 bool HardwareRegister::operator >= ( const HardwareRegister & i_rightRegister  ) const
 {
diff --git a/src/register/hei_hardware_register.hpp b/src/register/hei_hardware_register.hpp
index 7588a6c..255cf5a 100755
--- a/src/register/hei_hardware_register.hpp
+++ b/src/register/hei_hardware_register.hpp
@@ -79,15 +79,12 @@
         iv_scomAddress( 0 ),
         iv_operationType( ACCESS_NONE )
     {}
+#endif
 
-    /**
-     * @brief     Returns the pointer to bit string
-     * @param     i_type               attention type
-     * @return    BitString *   pointer to bit string
-     */
+    /** Function overloaded from parent Register class. */
+    virtual const BitString * getBitString() const { return nullptr; }
 
-    virtual const BitString * GetBitString(ATTENTION_TYPE i_type =
-                                                  INVALID_ATTENTION_TYPE) const;
+#if 0
     /**
      * @brief     Updates bit string contents associated with register
      * @param     i_bs               poiner to bit string
@@ -153,6 +150,7 @@
     * @return   Refer to function description
     */
    uint64_t GetAddress( ) const {return iv_scomAddress ;};
+#endif
    /**
     * @brief     compares two ScomRegisterAccess register for equality
     * @param     i_rightRegister   register to be compared against
@@ -165,6 +163,7 @@
     * @return    Returns false if i_rightRegisters is less and true otherwise
     */
    bool operator < ( const HardwareRegister & i_rightRegister  ) const ;
+#if 0
    /**
     * @brief     defines >= operation for ScomRegisterAccess
     * @param     i_rightRegister   register to be compared against
diff --git a/src/register/hei_register.hpp b/src/register/hei_register.hpp
index c352d92..3e2fb8d 100755
--- a/src/register/hei_register.hpp
+++ b/src/register/hei_register.hpp
@@ -1,6 +1,5 @@
 #pragma once
 
-#include <stdio.h>
 #include <hei_includes.hpp>
 #include <util/hei_bit_string.hpp>
 
@@ -8,7 +7,7 @@
 {
 
 /**
-@brief Description:  The Register class.
+@brief An abstract class for register objects.
 
 Purpose:  Register is an abstract base class for real and virtual registers.
 A few examples of these registers are; HardwareRegister, ConstantRegister,
@@ -30,22 +29,8 @@
 {
   public:
 
-    /**
-    @brief Default constructor
-    */
-    Register() = default;
-
-    /**
-    @brief Delete copy, assignment, and move operators.  Deleting
-           copy causes the compiler to delete move.
-    */
-    Register(const Register&) = delete;
-    Register& operator=(const Register&) = delete;
-
-    /**
-    @brief Default destructor
-    */
-    virtual ~Register() = default;
+    /** @brief Pure virtual destructor. */
+    virtual ~Register() = 0;
 
     /**
     @brief      Provides access to the BitString that manages
@@ -56,4 +41,7 @@
 
 };
 
+// Pure virtual destructor must be defined.
+inline Register::~Register() {}
+
 }//end namespace libhei
