diff --git a/src/util/hei_bit_string.cpp b/src/util/hei_bit_string.cpp
old mode 100755
new mode 100644
index dc72a5b..b1780ca
--- a/src/util/hei_bit_string.cpp
+++ b/src/util/hei_bit_string.cpp
@@ -30,7 +30,7 @@
 
     // Get the relative address of this byte and the relative starting position
     // within the byte.
-    uint64_t relPos = 0;
+    uint64_t relPos  = 0;
     uint8_t* relAddr = getRelativePosition(relPos, i_pos);
 
     // Get the length of the target bit field within this byte and the length of
@@ -74,7 +74,7 @@
 
     // Get the relative address of this byte and the relative starting position
     // within the byte.
-    uint64_t relPos = 0;
+    uint64_t relPos  = 0;
     uint8_t* relAddr = getRelativePosition(relPos, i_pos);
 
     // Get the length of the target bit field within this byte and the length of
@@ -101,9 +101,11 @@
     // Get the bit fields on either side of the target bit field.
     uint64_t bf_l_shift = UINT8_BIT_LEN - bf_l_len;
     uint64_t bf_r_shift = UINT8_BIT_LEN - bf_r_len;
+
     uint8_t bf_l = *relAddr;
     bf_l >>= bf_l_shift;
     bf_l <<= bf_l_shift;
+
     uint8_t bf_r = *relAddr;
     bf_r <<= bf_r_shift;
     bf_r >>= bf_r_shift;
@@ -176,7 +178,7 @@
     // the data in the correct direction to prevent overlapping.
     uint64_t sRelOffset = 0, dRelOffset = 0;
     uint8_t* sRelAddr = i_sStr.getRelativePosition(sRelOffset, i_sPos);
-    uint8_t* dRelAddr =        getRelativePosition(dRelOffset, i_dPos);
+    uint8_t* dRelAddr = getRelativePosition(dRelOffset, i_dPos);
 
     // Copy the data.
     if ((dRelAddr == sRelAddr) && (dRelOffset == sRelOffset))
@@ -203,7 +205,7 @@
         // Start with the last chunk and work backwards.
         for (int32_t pos = lastPos; 0 <= pos; pos -= UINT64_BIT_LEN)
         {
-            uint64_t len = std::min(actLen - pos, UINT64_BIT_LEN);
+            uint64_t len   = std::min(actLen - pos, UINT64_BIT_LEN);
             uint64_t value = i_sStr.getFieldRight(i_sPos + pos, len);
             setFieldRight(i_dPos + pos, len, value);
         }
@@ -221,7 +223,7 @@
     {
         uint64_t len = std::min(actLen - pos, UINT64_BIT_LEN);
 
-        uint64_t dVal =        getFieldRight(pos, len);
+        uint64_t dVal = getFieldRight(pos, len);
         uint64_t sVal = i_mask.getFieldRight(pos, len);
 
         setFieldRight(pos, len, dVal & ~sVal);
@@ -311,7 +313,7 @@
     {
         uint64_t len = std::min(actLen - pos, UINT64_BIT_LEN);
 
-        uint64_t dVal =      getFieldRight(pos, len);
+        uint64_t dVal = getFieldRight(pos, len);
         uint64_t sVal = i_bs.getFieldRight(pos, len);
 
         bsb.setFieldRight(pos, len, dVal & sVal);
@@ -333,7 +335,7 @@
     {
         uint64_t len = std::min(actLen - pos, UINT64_BIT_LEN);
 
-        uint64_t dVal =      getFieldRight(pos, len);
+        uint64_t dVal = getFieldRight(pos, len);
         uint64_t sVal = i_bs.getFieldRight(pos, len);
 
         bsb.setFieldRight(pos, len, dVal | sVal);
@@ -381,7 +383,7 @@
 //------------------------------------------------------------------------------
 
 uint8_t* BitString::getRelativePosition(uint64_t& o_relPos,
-                                        uint64_t  i_absPos) const
+                                        uint64_t i_absPos) const
 {
     HEI_ASSERT(nullptr != getBufAddr()); // must to have a valid address
     HEI_ASSERT(i_absPos < getBitLen());  // must be a valid position
diff --git a/src/util/hei_bit_string.hpp b/src/util/hei_bit_string.hpp
old mode 100755
new mode 100644
index 80f13af..4b63906
--- a/src/util/hei_bit_string.hpp
+++ b/src/util/hei_bit_string.hpp
@@ -402,10 +402,10 @@
      */
     uint8_t* getRelativePosition(uint64_t& o_relPos, uint64_t i_absPos) const;
 
-  private: // instance variables
-    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
+  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
 };
 
 //##############################################################################
