diff --git a/src/csn1.cpp b/src/csn1.cpp
index b0ed73d..1859beb 100644
--- a/src/csn1.cpp
+++ b/src/csn1.cpp
@@ -206,6 +206,12 @@
           LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8);
           /* end add the bit value to protocol tree */
         }
+        else if(pDescr->may_be_null)
+        {
+           pui8  = pui8DATA(data, pDescr->offset);
+           *pui8 = 0;
+           LOGPC(DCSN1, LOGL_NOTICE, "%s = NULL | ", pDescr->sz);
+        }
         else
         {
           return ProcessError(readIndex,"csnStreamDecoder", CSN_ERROR_NEED_MORE_BITS_TO_UNPACK, pDescr);
@@ -254,14 +260,33 @@
           {
             return ProcessError(readIndex,"csnStreamDecoder", CSN_ERROR_GENERAL, pDescr);
           }
+          remaining_bits_len -= no_of_bits;
+          bit_offset += no_of_bits;
+        }
+        else if(pDescr->may_be_null)
+        {
+          if (no_of_bits <= 8)
+          {
+            pui8      = pui8DATA(data, pDescr->offset);
+            *pui8     = 0;
+          }
+          else if (no_of_bits <= 16)
+          {
+            pui16      = pui16DATA(data, pDescr->offset);
+            *pui16     = 0;
+          }
+          else if (no_of_bits <= 32)
+          {
+            pui32      = pui32DATA(data, pDescr->offset);
+            *pui32     = 0;
+          }
+          LOGPC(DCSN1, LOGL_NOTICE, "%s = NULL | ", pDescr->sz);
         }
         else
         {
           return ProcessError(readIndex,"csnStreamDecoder", CSN_ERROR_NEED_MORE_BITS_TO_UNPACK, pDescr);
         }
 
-        remaining_bits_len -= no_of_bits;
-        bit_offset += no_of_bits;
         pDescr++;
         break;
       }
@@ -548,20 +573,23 @@
       {
         StreamSerializeFcn_t serialize = pDescr->serialize.fcn;
         csnStream_t          arT       = *ar;
+        guint8 length_len              = pDescr->i;
         gint16               Status    = -1;
 
-        LOGPC(DCSN1, LOGL_NOTICE, "%s length = %d | ", pDescr->sz , (int)bitvec_read_field(vector, readIndex, 7));
-        arT.direction = 1;
-        bit_offset += 7;
-        remaining_bits_len -= 7;
+        guint8 length = bitvec_read_field(vector, readIndex, length_len);
 
-        csnStreamInit(&arT, bit_offset, remaining_bits_len);
+        LOGPC(DCSN1, LOGL_NOTICE, "%s length = %d | ", pDescr->sz , (int)length);
+        arT.direction = 1;
+        bit_offset += length_len;
+        remaining_bits_len -= length_len;
+
+        csnStreamInit(&arT, bit_offset, length);
         Status = serialize(&arT, vector, readIndex, pvDATA(data, pDescr->offset));
 
         if (Status >= 0)
         {
-          remaining_bits_len = arT.remaining_bits_len;
-          bit_offset         = arT.bit_offset;
+          remaining_bits_len -= length;
+          bit_offset         += length;
           pDescr++;
         }
         else
@@ -958,18 +986,12 @@
         pui8  = pui8DATA(data, pDescr->offset);
 
         /* this if-statement represents the M_NEXT_EXIST_OR_NULL description element */
-        if ((pDescr->descr.ptr != NULL) && (remaining_bits_len == 0))
+        if ((pDescr->may_be_null) && (remaining_bits_len == 0))
         { /* no more bits to decode is fine here - end of message detected and allowed */
 
           /* Skip i entries + this entry */
           pDescr += pDescr->i + 1;
 
-          /* pDescr now must be pointing to a CSN_END entry, if not this is an error */
-          if ( pDescr->type != CSN_END )
-          { /* Substract one more bit from remaining_bits_len to make the "not enough bits" error to be triggered */
-            remaining_bits_len--;
-          }
-
           /* Set the data member to "not exist" */
           *pui8 = 0;
           break;
@@ -1147,6 +1169,38 @@
         break;
       }
 
+      case CSN_PADDING_BITS:
+      { /* Padding from here and to the end of message */
+        LOGPC(DCSN1, LOGL_NOTICE, "%s = ", pDescr->sz);
+        if (remaining_bits_len > 0)
+        {
+          while (remaining_bits_len > 0)
+          {
+            guint8 bits_to_handle = remaining_bits_len%8;
+            if (bits_to_handle > 0)
+            {
+              LOGPC(DCSN1, LOGL_NOTICE, "%u|", bitvec_read_field(vector, readIndex, bits_to_handle));
+              remaining_bits_len -= bits_to_handle;
+              bit_offset += bits_to_handle;
+            }
+            else if (bits_to_handle == 0)
+            {
+              LOGPC(DCSN1, LOGL_NOTICE, "%u|", bitvec_read_field(vector, readIndex, 8));
+              remaining_bits_len -= 8;
+              bit_offset += 8;
+            }
+          }
+        }
+        if (remaining_bits_len < 0)
+        {
+          return ProcessError(readIndex,"csnStreamDissector", CSN_ERROR_NEED_MORE_BITS_TO_UNPACK, pDescr);
+        }
+
+        /* Padding was successfully extracted or it was empty */
+        pDescr++;
+        break;
+      }
+
       case CSN_VARIABLE_ARRAY:
       { /* {int type; int i; void* descr; int offset; const char* sz; } CSN_DESCR;
          * {CSN_VARIABLE_ARRAY, _OFFSET, (void*)offsetof(_STRUCT, _ElementCountField), offsetof(_STRUCT, _MEMBER), #_MEMBER}
@@ -1434,6 +1488,10 @@
           LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8);
           /* end add the bit value to protocol tree */
         }
+        else if(pDescr->may_be_null)
+        {
+           LOGPC(DCSN1, LOGL_NOTICE, "%s = NULL | ", pDescr->sz);
+        }
         else
         {
           return ProcessError(writeIndex,"csnStreamEncoder", CSN_ERROR_NEED_MORE_BITS_TO_UNPACK, pDescr);
@@ -1479,14 +1537,19 @@
           {
             return ProcessError(writeIndex,"csnStreamEncoder", CSN_ERROR_GENERAL, pDescr);
           }
+
+          remaining_bits_len -= no_of_bits;
+          bit_offset += no_of_bits;
+        }
+        else if(pDescr->may_be_null)
+        {
+          LOGPC(DCSN1, LOGL_NOTICE, "%s = NULL | ", pDescr->sz);
         }
         else
         {
           return ProcessError(writeIndex,"csnStreamEncoder", CSN_ERROR_NEED_MORE_BITS_TO_UNPACK, pDescr);
         }
 
-        remaining_bits_len -= no_of_bits;
-        bit_offset += no_of_bits;
         pDescr++;
         break;
       }
@@ -1766,19 +1829,20 @@
       {
         StreamSerializeFcn_t serialize = pDescr->serialize.fcn;
         csnStream_t          arT       = *ar;
+        guint8 length_len              = pDescr->i;
         gint16               Status = -1;
         unsigned lengthIndex;
 
         // store writeIndex for length value (7 bit)
-	lengthIndex = writeIndex;
-        writeIndex += 7;
-        bit_offset += 7;
-        remaining_bits_len -= 7;
+        lengthIndex = writeIndex;
+        writeIndex += length_len;
+        bit_offset += length_len;
+        remaining_bits_len -= length_len;
         arT.direction = 0;
         csnStreamInit(&arT, bit_offset, remaining_bits_len);
         Status = serialize(&arT, vector, writeIndex, pvDATA(data, pDescr->offset));
-	
-        bitvec_write_field(vector, lengthIndex, writeIndex-lengthIndex-7, 7);
+
+        bitvec_write_field(vector, lengthIndex, writeIndex-lengthIndex-length_len, length_len);
         LOGPC(DCSN1, LOGL_NOTICE, "%s length = %u | ", pDescr->sz , (unsigned)(writeIndex-lengthIndex));
 
         if (Status >= 0)
@@ -2179,18 +2243,12 @@
         pui8  = pui8DATA(data, pDescr->offset);
 
         /* this if-statement represents the M_NEXT_EXIST_OR_NULL description element */
-        if ((pDescr->descr.ptr != NULL) && (remaining_bits_len == 0))
+        if ((pDescr->may_be_null) && (remaining_bits_len == 0))
         { /* no more bits to decode is fine here - end of message detected and allowed */
 
           /* Skip i entries + this entry */
           pDescr += pDescr->i + 1;
 
-          /* pDescr now must be pointing to a CSN_END entry, if not this is an error */
-          if ( pDescr->type != CSN_END )
-          { /* Substract one more bit from remaining_bits_len to make the "not enough bits" error to be triggered */
-            remaining_bits_len--;
-          }
-
           break;
         }
 
@@ -2365,6 +2423,42 @@
         break;
       }
 
+      case CSN_PADDING_BITS:
+      { /* Padding from here and to the end of message */
+        LOGPC(DCSN1, LOGL_NOTICE, "%s = ", pDescr->sz);
+        guint8 filler = 0x2b;
+        if (remaining_bits_len > 0)
+        {
+          while (remaining_bits_len > 0)
+          {
+            guint8 bits_to_handle = remaining_bits_len%8;
+            if (bits_to_handle > 0)
+            {
+              guint8 fl = filler&(0xff>>(8-bits_to_handle));
+              bitvec_write_field(vector, writeIndex, fl, bits_to_handle);
+              LOGPC(DCSN1, LOGL_NOTICE, "%u|", fl);
+              remaining_bits_len -= bits_to_handle;
+              bit_offset += bits_to_handle;
+            }
+            else if (bits_to_handle == 0)
+            {
+              bitvec_write_field(vector, writeIndex, filler, 8);
+              LOGPC(DCSN1, LOGL_NOTICE, "%u|", filler);
+              remaining_bits_len -= 8;
+              bit_offset += 8;
+            }
+          }
+        }
+        if (remaining_bits_len < 0)
+        {
+          return ProcessError(writeIndex,"csnStreamDissector", CSN_ERROR_NEED_MORE_BITS_TO_UNPACK, pDescr);
+        }
+
+        /* Padding was successfully extracted or it was empty */
+        pDescr++;
+        break;
+      }
+
       case CSN_VARIABLE_ARRAY:
       { /* {int type; int i; void* descr; int offset; const char* sz; } CSN_DESCR;
          * {CSN_VARIABLE_ARRAY, _OFFSET, (void*)offsetof(_STRUCT, _ElementCountField), offsetof(_STRUCT, _MEMBER), #_MEMBER}
@@ -2555,6 +2649,7 @@
         }
         bitvec_write_field(vector, writeIndex, !Tag, 1);
         bit_offset++;
+        remaining_bits_len--;
         Tag = STANDARD_TAG; /* in case it was set to "reversed" */
         pDescr++;
         break;
diff --git a/src/csn1.h b/src/csn1.h
index 2d84f7e..96f7558 100644
--- a/src/csn1.h
+++ b/src/csn1.h
@@ -49,6 +49,7 @@
 #define  CSN_ERROR_                         -10
 
 #define FALSE (0)
+#define TRUE  (1)
 typedef signed int gint32;
 typedef signed short gint16;
 typedef int gint;
@@ -99,6 +100,7 @@
   CSN_VARIABLE_BITMAP_1,     /* <bitmap: bit**> i.e. to the end of message (R99) */
   CSN_LEFT_ALIGNED_VAR_BMP,  /* As variable bitmap but the result is left aligned (R99) */
   CSN_LEFT_ALIGNED_VAR_BMP_1,/* As above only size is to the end of message (R99) */
+  CSN_PADDING_BITS,          /* Padding bits fill to the end of the buffer */
   CSN_VARIABLE_ARRAY,        /* Array with length specified in parameter: <N: bit(4)> <list: octet(N + offset)> */
   CSN_VARIABLE_TARRAY,       /* Type Array with length specified in parameter: <N: bit(x)> <Type>*N */
   CSN_VARIABLE_TARRAY_OFFSET,/* As above but with offset. The offset is stored as third parameter of CSN_DESCR (descr.value) */
@@ -127,7 +129,7 @@
  *
  * i:
  *       Depending on the contents of the type parameter,  the parameter "i" may have following meaning:
- *       - specifies the number of bits for the CSN_UINT type
+ *       - specifies the number of bits for the CSN_UINT or CSN_UINT_OR_NULL types
  *       - the offset for an array size by which the size is incremented
  *          for the CSN_VAR_ARRAY type
  *       - the length of each element of an array for the CSN_REC_ARRAY type
@@ -142,6 +144,7 @@
  *          CSN_VAR_BITMAP, CSN_LEFT_VAR_BMP, and CSN_LEFT_BMP_1 types
  *       - the offset to param1 for the CSN_CALLBACK type
  *       - ERRORCODE  used by the CSN_ERROR type
+ *       - the bit-length of the LENGTH field in a CSN_SERIALISE type
  *
  * descr
  *       This parameter has different meaning depending on the value of the type parameter:
@@ -167,6 +170,10 @@
  *         - an offset to the variable Exist for CSN_NEXT_EXIST and CSN_NEXT_EXIST_LH types
  *         - an offset to param2 in the CSN_CALLBACK  type
  *
+ * may_be_null
+ *         TRUE: if dissection may be attempted at an offset beyond the length of existing data bits
+ *         FALSE: othewise
+ *
  * sz
  *    - is the name of the parameter within the descr where their unpacked or packed value shall be stored or fetched.
  *      This paramater is pointed out by the offset parameter in the same CSN_DESCR variable as the sz.
@@ -188,6 +195,7 @@
     guint32   value;
   } descr;
   unsigned      offset;
+  gboolean    may_be_null;
   const char* sz;
   union
   {
@@ -232,7 +240,7 @@
         CSN_DESCR CSNDESCR_##_STRUCT[] = {
 
 #define  CSN_DESCR_END(_STRUCT)\
-        {CSN_END, 0, {0}, 0, "", {(StreamSerializeFcn_t)0}} };
+        {CSN_END, 0, {0}, 0, FALSE, "", {(StreamSerializeFcn_t)0}} };
 
 /******************************************************************************
  * CSN_ERROR(Par1, Par2, Par3)
@@ -243,7 +251,7 @@
  *      Par3: Error code
  *****************************************************************************/
 #define CSN_ERROR(_STRUCT, _Text, _ERRCODE)\
-        {CSN_TRAP_ERROR, _ERRCODE, {(void*)_Text}, 0, _Text, {(StreamSerializeFcn_t)0}}
+        {CSN_TRAP_ERROR, _ERRCODE, {(void*)_Text}, 0, FALSE, _Text, {(StreamSerializeFcn_t)0}}
 
 /******************************************************************************
  * M_BIT(Par1, Par2)
@@ -252,7 +260,17 @@
  *      Par2: C structure element name
  *****************************************************************************/
 #define M_BIT(_STRUCT, _MEMBER)\
-        {CSN_BIT, 0, {0}, offsetof(_STRUCT, _MEMBER), #_MEMBER, {(StreamSerializeFcn_t)0}}
+        {CSN_BIT, 0, {0}, offsetof(_STRUCT, _MEMBER), FALSE, #_MEMBER, {(StreamSerializeFcn_t)0}}
+
+/******************************************************************************
+ * M_BIT_OR_NULL(Par1, Par2)
+ * Similar to the M_BIT except that not only bit 0 or 1 but also the
+ * end of the message may be encountered when looking for the next element in
+ * the message.
+ * Covers the case {null | 0 | 1}
+ *****************************************************************************/
+ #define M_BIT_OR_NULL(_STRUCT, _MEMBER)\
+         {CSN_BIT, 0, {0}, offsetof(_STRUCT, _MEMBER), TRUE, #_MEMBER, {(StreamSerializeFcn_t)0}}
 
 /******************************************************************************
  * M_NEXT_EXIST(Par1, Par2, Par3)
@@ -264,7 +282,7 @@
  *            element(s) does not exist
  *****************************************************************************/
 #define M_NEXT_EXIST(_STRUCT, _MEMBER, _NoOfExisting)\
-        {CSN_NEXT_EXIST, _NoOfExisting, {0}, offsetof(_STRUCT, _MEMBER), #_MEMBER, {(StreamSerializeFcn_t)0}}
+        {CSN_NEXT_EXIST, _NoOfExisting, {0}, offsetof(_STRUCT, _MEMBER), FALSE, #_MEMBER, {(StreamSerializeFcn_t)0}}
 
 /******************************************************************************
  * M_NEXT_EXIST_LH(Par1, Par2, Par3)
@@ -274,7 +292,7 @@
  * pattern 0x2B is performed on the read bit before the decision is made.
  *****************************************************************************/
 #define M_NEXT_EXIST_LH(_STRUCT, _MEMBER, _NoOfExisting)\
-        {CSN_NEXT_EXIST_LH, _NoOfExisting, {0}, offsetof(_STRUCT, _MEMBER), #_MEMBER, {(StreamSerializeFcn_t)0}}
+        {CSN_NEXT_EXIST_LH, _NoOfExisting, {0}, offsetof(_STRUCT, _MEMBER), FALSE, #_MEMBER, {(StreamSerializeFcn_t)0}}
 
 /******************************************************************************
  * M_NEXT_EXIST_OR_NULL(Par1, Par2, Par3)
@@ -284,7 +302,7 @@
  * Covers the case {null | 0 | 1 < IE >} 
  *****************************************************************************/
 #define M_NEXT_EXIST_OR_NULL(_STRUCT, _MEMBER, _NoOfExisting)\
-        {CSN_NEXT_EXIST, _NoOfExisting, {(void*)1}, offsetof(_STRUCT, _MEMBER), #_MEMBER, {(StreamSerializeFcn_t)0}}
+        {CSN_NEXT_EXIST, _NoOfExisting, {(void*)1}, offsetof(_STRUCT, _MEMBER), TRUE, #_MEMBER, {(StreamSerializeFcn_t)0}}
 
 /******************************************************************************
  * M_NEXT_EXIST_OR_NULL_LH(Par1, Par2, Par3)
@@ -294,7 +312,7 @@
  * Covers the case {null | L | H < IE >} 
  *****************************************************************************/
 #define M_NEXT_EXIST_OR_NULL_LH(_STRUCT, _MEMBER, _NoOfExisting)\
-        {CSN_NEXT_EXIST_LH, _NoOfExisting, {(void*)1}, offsetof(_STRUCT, _MEMBER), #_MEMBER, {(StreamSerializeFcn_t)0}}
+        {CSN_NEXT_EXIST_LH, _NoOfExisting, {(void*)1}, offsetof(_STRUCT, _MEMBER), TRUE, #_MEMBER, {(StreamSerializeFcn_t)0}}
 
 /******************************************************************************
  * M_UINT(Par1, Par2, Par3)
@@ -304,7 +322,17 @@
  *      Par3: number of bits used to code the element (between 1 and 32)
  *****************************************************************************/
 #define M_UINT(_STRUCT, _MEMBER, _BITS)\
-        {CSN_UINT, _BITS, {(void*)1}, offsetof(_STRUCT, _MEMBER), #_MEMBER, {(StreamSerializeFcn_t)0}}
+        {CSN_UINT, _BITS, {(void*)1}, offsetof(_STRUCT, _MEMBER), FALSE, #_MEMBER, {(StreamSerializeFcn_t)0}}
+
+ /******************************************************************************
+ * M_UINT_OR_NULL(Par1, Par2, Par3)
+ * Similar to the M_UINT except that not only the request set of bits but also the
+ * end of the message may be encountered when looking for the next element in
+ * the message.
+ * Covers the case {null | 0 | 1 < IE >}
+ *****************************************************************************/
+ #define M_UINT_OR_NULL(_STRUCT, _MEMBER, _BITS)\
+         {CSN_UINT, _BITS, {0}, offsetof(_STRUCT, _MEMBER), TRUE, #_MEMBER, {(StreamSerializeFcn_t)0}}
 
 /******************************************************************************
  * M_UINT(Par1, Par2, Par3)
@@ -314,7 +342,7 @@
  * received CSN.1 message
  *****************************************************************************/
 #define M_UINT_LH(_STRUCT, _MEMBER, _BITS)\
-        {CSN_UINT_LH, _BITS, {(void*)1}, offsetof(_STRUCT, _MEMBER), #_MEMBER, {(StreamSerializeFcn_t)0}}
+        {CSN_UINT_LH, _BITS, {(void*)1}, offsetof(_STRUCT, _MEMBER), FALSE, #_MEMBER, {(StreamSerializeFcn_t)0}}
 
 /******************************************************************************
  * M_UINT_OFFSET(Par1, Par2, Par3, Par4)
@@ -325,7 +353,7 @@
  *      Par4: value added to the returned integer (offset)
  *****************************************************************************/
 #define M_UINT_OFFSET(_STRUCT, _MEMBER, _BITS, _OFFSET)\
-        {CSN_UINT_OFFSET, _BITS, {(void*)_OFFSET}, offsetof(_STRUCT, _MEMBER), #_MEMBER, {(StreamSerializeFcn_t)0}}
+        {CSN_UINT_OFFSET, _BITS, {(void*)_OFFSET}, offsetof(_STRUCT, _MEMBER), FALSE, #_MEMBER, {(StreamSerializeFcn_t)0}}
 
 /******************************************************************************
  * M_UINT_ARRAY(Par1, Par2, Par3, Par4)
@@ -336,7 +364,7 @@
  *      Par4: number of elements in the array (fixed integer value)
  *****************************************************************************/
 #define M_UINT_ARRAY(_STRUCT, _MEMBER, _BITS, _ElementCount)\
-        {CSN_UINT_ARRAY, _BITS, {(void*)_ElementCount}, offsetof(_STRUCT, _MEMBER), #_MEMBER, {(StreamSerializeFcn_t)0}}
+        {CSN_UINT_ARRAY, _BITS, {(void*)_ElementCount}, offsetof(_STRUCT, _MEMBER), FALSE, #_MEMBER, {(StreamSerializeFcn_t)0}}
 
 /******************************************************************************
  * M_VAR_UINT_ARRAY(Par1, Par2, Par3, Par4)
@@ -348,7 +376,7 @@
  *            structure member holding the length value
  *****************************************************************************/
 #define M_VAR_UINT_ARRAY(_STRUCT, _MEMBER, _BITS, _ElementCountField)\
-        {CSN_UINT_ARRAY, _BITS, {(void*)offsetof(_STRUCT, _ElementCountField)}, offsetof(_STRUCT, _MEMBER), #_MEMBER, {(StreamSerializeFcn_t)1}}
+        {CSN_UINT_ARRAY, _BITS, {(void*)offsetof(_STRUCT, _ElementCountField)}, offsetof(_STRUCT, _MEMBER), FALSE, #_MEMBER, {(StreamSerializeFcn_t)1}}
 
 /******************************************************************************
  * M_VAR_ARRAY(Par1, Par2, Par3, Par4)
@@ -359,7 +387,7 @@
  *      Par4: offset that is added to the Par3 to get the actual size of the array
  *****************************************************************************/
 #define M_VAR_ARRAY(_STRUCT, _MEMBER, _ElementCountField, _OFFSET)\
-        {CSN_VARIABLE_ARRAY, _OFFSET, {(void*)offsetof(_STRUCT, _ElementCountField)}, offsetof(_STRUCT, _MEMBER), #_MEMBER, {(StreamSerializeFcn_t)0}}
+        {CSN_VARIABLE_ARRAY, _OFFSET, {(void*)offsetof(_STRUCT, _ElementCountField)}, offsetof(_STRUCT, _MEMBER), FALSE, #_MEMBER, {(StreamSerializeFcn_t)0}}
 
 /******************************************************************************
  * M_VAR_TARRAY(Par1, Par2, Par3, Par4)
@@ -370,14 +398,14 @@
  *      Par4: name of the structure member holding the size of the array
  *****************************************************************************/
 #define M_VAR_TARRAY(_STRUCT, _MEMBER, _MEMBER_TYPE, _ElementCountField)\
-        {CSN_VARIABLE_TARRAY, offsetof(_STRUCT, _ElementCountField), {(void*)CSNDESCR_##_MEMBER_TYPE}, offsetof(_STRUCT, _MEMBER), #_MEMBER, {(StreamSerializeFcn_t)sizeof(_MEMBER_TYPE)}}
+        {CSN_VARIABLE_TARRAY, offsetof(_STRUCT, _ElementCountField), {(void*)CSNDESCR_##_MEMBER_TYPE}, offsetof(_STRUCT, _MEMBER), FALSE, #_MEMBER, {(StreamSerializeFcn_t)sizeof(_MEMBER_TYPE)}}
 
 /******************************************************************************
  * M_VAR_TARRAY_OFFSET(Par1, Par2, Par3, Par4)
  * Same as M_VAR_TARRAY with offset
  *****************************************************************************/
 #define M_VAR_TARRAY_OFFSET(_STRUCT, _MEMBER, _MEMBER_TYPE, _ElementCountField)\
-        {CSN_VARIABLE_TARRAY_OFFSET, offsetof(_STRUCT, _ElementCountField), {(void*)CSNDESCR_##_MEMBER_TYPE}, offsetof(_STRUCT, _MEMBER), #_MEMBER, {(StreamSerializeFcn_t)sizeof(_MEMBER_TYPE)}}
+        {CSN_VARIABLE_TARRAY_OFFSET, offsetof(_STRUCT, _ElementCountField), {(void*)CSNDESCR_##_MEMBER_TYPE}, offsetof(_STRUCT, _MEMBER), FALSE, #_MEMBER, {(StreamSerializeFcn_t)sizeof(_MEMBER_TYPE)}}
 
 /******************************************************************************
  * M_REC_ARRAY(Par1, Par2, Par3, Par4)
@@ -395,7 +423,7 @@
  *      Par4: length of each element in bits
  *****************************************************************************/
 #define M_REC_ARRAY(_STRUCT, _MEMBER, _ElementCountField, _BITS)\
-        {CSN_RECURSIVE_ARRAY, _BITS, {(void*)offsetof(_STRUCT, _ElementCountField)}, offsetof(_STRUCT, _MEMBER), #_MEMBER, {(StreamSerializeFcn_t)0}}
+        {CSN_RECURSIVE_ARRAY, _BITS, {(void*)offsetof(_STRUCT, _ElementCountField)}, offsetof(_STRUCT, _MEMBER), FALSE, #_MEMBER, {(StreamSerializeFcn_t)0}}
 
 /******************************************************************************
  * M_VAR_TYPE_ARRAY(Par1, Par2, Par3, Par4)
@@ -406,7 +434,7 @@
  *      Par4: number of elements in the array (fixed integer value)
  *****************************************************************************/
 #define M_TYPE_ARRAY(_STRUCT, _MEMBER, _MEMBER_TYPE, _ElementCount)\
-        {CSN_TYPE_ARRAY, _ElementCount, {(void*)CSNDESCR_##_MEMBER_TYPE}, offsetof(_STRUCT, _MEMBER), #_MEMBER, {(StreamSerializeFcn_t)sizeof(_MEMBER_TYPE)}}
+        {CSN_TYPE_ARRAY, _ElementCount, {(void*)CSNDESCR_##_MEMBER_TYPE}, offsetof(_STRUCT, _MEMBER), FALSE, #_MEMBER, {(StreamSerializeFcn_t)sizeof(_MEMBER_TYPE)}}
 
 /******************************************************************************
  * M_REC_TARRAY(Par1, Par2, Par3, Par4)
@@ -418,7 +446,7 @@
  *      Par4: will hold the number of element in the array after unpacking
  *****************************************************************************/
 #define M_REC_TARRAY(_STRUCT, _MEMBER, _MEMBER_TYPE, _ElementCountField)\
-        {CSN_RECURSIVE_TARRAY, offsetof(_STRUCT, _ElementCountField), {(void*)CSNDESCR_##_MEMBER_TYPE}, offsetof(_STRUCT, _MEMBER), #_MEMBER, {(StreamSerializeFcn_t)sizeof(_MEMBER_TYPE)}}
+        {CSN_RECURSIVE_TARRAY, offsetof(_STRUCT, _ElementCountField), {(void*)CSNDESCR_##_MEMBER_TYPE}, offsetof(_STRUCT, _MEMBER), FALSE, #_MEMBER, {(StreamSerializeFcn_t)sizeof(_MEMBER_TYPE)}}
 
 /******************************************************************************
  * M_REC_TARRAY1(Par1, Par2, Par3, Par4)
@@ -426,7 +454,7 @@
  * <list> ::= <type> {1 <type>} ** 0 ;
  *****************************************************************************/
 #define M_REC_TARRAY_1(_STRUCT, _MEMBER, _MEMBER_TYPE, _ElementCountField)\
-        {CSN_RECURSIVE_TARRAY_1, offsetof(_STRUCT, _ElementCountField), {(void*)CSNDESCR_##_MEMBER_TYPE}, offsetof(_STRUCT, _MEMBER), #_MEMBER, {(StreamSerializeFcn_t)sizeof(_MEMBER_TYPE)}}
+        {CSN_RECURSIVE_TARRAY_1, offsetof(_STRUCT, _ElementCountField), {(void*)CSNDESCR_##_MEMBER_TYPE}, offsetof(_STRUCT, _MEMBER), FALSE, #_MEMBER, {(StreamSerializeFcn_t)sizeof(_MEMBER_TYPE)}}
 
 /******************************************************************************
  * M_REC_TARRAY2(Par1, Par2, Par3, Par4)
@@ -434,7 +462,7 @@
  * <lists> ::= <type> { 0 <type> } ** 1 ;
  *****************************************************************************/
 #define M_REC_TARRAY_2(_STRUCT, _MEMBER, _MEMBER_TYPE, _ElementCountField)\
-        {CSN_RECURSIVE_TARRAY_2, offsetof(_STRUCT, _ElementCountField), {(void*)CSNDESCR_##_MEMBER_TYPE}, offsetof(_STRUCT, _MEMBER), #_MEMBER, {(StreamSerializeFcn_t)sizeof(_MEMBER_TYPE)}}
+        {CSN_RECURSIVE_TARRAY_2, offsetof(_STRUCT, _ElementCountField), {(void*)CSNDESCR_##_MEMBER_TYPE}, offsetof(_STRUCT, _MEMBER), FALSE, #_MEMBER, {(StreamSerializeFcn_t)sizeof(_MEMBER_TYPE)}}
 
 /******************************************************************************
  * M_TYPE(Par1, Par2, Par3)
@@ -445,7 +473,7 @@
  *      Par3: type of member
  *****************************************************************************/
 #define M_TYPE(_STRUCT, _MEMBER, _MEMBER_TYPE)\
-        {CSN_TYPE, 0, {(void*)CSNDESCR_##_MEMBER_TYPE}, offsetof(_STRUCT, _MEMBER), #_MEMBER, {(StreamSerializeFcn_t)0}}
+        {CSN_TYPE, 0, {(void*)CSNDESCR_##_MEMBER_TYPE}, offsetof(_STRUCT, _MEMBER), FALSE, #_MEMBER, {(StreamSerializeFcn_t)0}}
 
 /******************************************************************************
  * M_UNION(Par1, Par2)
@@ -458,14 +486,14 @@
  *      Par2: number of possible choice in the union
  *****************************************************************************/
 #define M_UNION(_STRUCT, _COUNT)\
-        {CSN_UNION, _COUNT, {0}, offsetof(_STRUCT, UnionType), "UnionType", {(StreamSerializeFcn_t)0}}
+        {CSN_UNION, _COUNT, {0}, offsetof(_STRUCT, UnionType), FALSE, "UnionType", {(StreamSerializeFcn_t)0}}
 
 /******************************************************************************
  * M_UNION_LH(Par1, Par2)
  * Same as M_UNION but masked with background value 0x2B
  *****************************************************************************/
 #define M_UNION_LH(_STRUCT, _COUNT)\
-        {CSN_UNION_LH, _COUNT, {0}, offsetof(_STRUCT, UnionType), "UnionType", {(StreamSerializeFcn_t)0}}
+        {CSN_UNION_LH, _COUNT, {0}, offsetof(_STRUCT, UnionType), FALSE, "UnionType", {(StreamSerializeFcn_t)0}}
 
 /******************************************************************************
  * M_CHOICE(Par1, Par2, Par3, Par4)
@@ -494,7 +522,7 @@
  *      Par4: number of possible choices in the union
  *****************************************************************************/
 #define M_CHOICE(_STRUCT, _MEMBER, _CHOICE, _ElementCount)\
-        {CSN_CHOICE, _ElementCount, {(void*)_CHOICE}, offsetof(_STRUCT, _MEMBER), #_CHOICE, {(StreamSerializeFcn_t)0}}
+        {CSN_CHOICE, _ElementCount, {(void*)_CHOICE}, offsetof(_STRUCT, _MEMBER), FALSE, #_CHOICE, {(StreamSerializeFcn_t)0}}
 
 /******************************************************************************
  * M_FIXED(Par1, Par2, Par3)
@@ -506,23 +534,23 @@
 *             the message the unpacking procedure is aborted
  *****************************************************************************/
 #define M_FIXED(_STRUCT, _BITS, _BITVALUE)\
-        {CSN_FIXED, _BITS, {0}, _BITVALUE, #_BITVALUE, {(StreamSerializeFcn_t)0}}
+        {CSN_FIXED, _BITS, {0}, _BITVALUE, FALSE, #_BITVALUE, {(StreamSerializeFcn_t)0}}
 
 /******************************************************************************
  * M_SERIALIZE(Par1, Par2, Par3)
  * Allows using a complete free format of data being encoded or decoded. 
- * When the M_SERIALIZE is uncounted during encoding or decoding of a message 
+ * When the M_SERIALIZE is encounted during encoding or decoding of a message
  * the CSNstream program passes the control over to the specified function 
  * together with all necessary parameters about the current position within 
  * the message being unpacked or packed.  When transferring of "serialized" 
  * data to or from the message is finished by the function the CSNstream gets 
  * back control over the data stream and continues to work with the message.
  *****************************************************************************/
-#define M_SERIALIZE(_STRUCT, _MEMBER, _SERIALIZEFCN)\
-        {CSN_SERIALIZE, 1, {0}, offsetof(_STRUCT, _MEMBER), #_MEMBER, {_SERIALIZEFCN}}
+#define M_SERIALIZE(_STRUCT, _MEMBER, _LENGTH_LEN, _SERIALIZEFCN)\
+        {CSN_SERIALIZE, _LENGTH_LEN, {0}, offsetof(_STRUCT, _MEMBER), FALSE, #_MEMBER, {_SERIALIZEFCN}}
 
 #define M_CALLBACK(_STRUCT, _CSNCALLBACKFCN, _PARAM1, _PARAM2)\
-        {CSN_CALLBACK, offsetof(_STRUCT, _PARAM1), {_CSNCALLBACKFCN}, offsetof(_STRUCT, _PARAM2), "CallBack_"#_CSNCALLBACKFCN, {(StreamSerializeFcn_t)0}}
+        {CSN_CALLBACK, offsetof(_STRUCT, _PARAM1), {_CSNCALLBACKFCN}, offsetof(_STRUCT, _PARAM2),  FALSE, "CallBack_"#_CSNCALLBACKFCN, {(StreamSerializeFcn_t)0}}
 
 /******************************************************************************
  * M_BITMAP(Par1, Par2, Par3)
@@ -533,38 +561,42 @@
  *      Par3: length of the bitmap expressed in bits
  *****************************************************************************/
 #define M_BITMAP(_STRUCT, _MEMBER, _BITS)\
-        {CSN_BITMAP, _BITS, {0}, offsetof(_STRUCT, _MEMBER), #_MEMBER, {(StreamSerializeFcn_t)0}}
+        {CSN_BITMAP, _BITS, {0}, offsetof(_STRUCT, _MEMBER),  FALSE, #_MEMBER, {(StreamSerializeFcn_t)0}}
 
 /* variable length, right aligned bitmap i.e. _ElementCountField = 11 => 00000111 11111111 */
 #define M_VAR_BITMAP(_STRUCT, _MEMBER, _ElementCountField, _OFFSET)\
-        {CSN_VARIABLE_BITMAP, _OFFSET, {(void*)offsetof(_STRUCT, _ElementCountField)}, offsetof(_STRUCT, _MEMBER), #_MEMBER, {(StreamSerializeFcn_t)0}}
+        {CSN_VARIABLE_BITMAP, _OFFSET, {(void*)offsetof(_STRUCT, _ElementCountField)}, offsetof(_STRUCT, _MEMBER), FALSE, #_MEMBER, {(StreamSerializeFcn_t)0}}
 
 /* variable length, right aligned bitmap filling the rest of message
  * - when unpacking the _ElementCountField will be set in runtime
  * - when packing _ElementCountField contains the size of bitmap
  */
 #define M_VAR_BITMAP_1(_STRUCT, _MEMBER, _ElementCountField, _OFFSET)\
-        {CSN_VARIABLE_BITMAP_1, _OFFSET, {(void*)offsetof(_STRUCT, _ElementCountField)}, offsetof(_STRUCT, _MEMBER), #_MEMBER, {(StreamSerializeFcn_t)0}}
+        {CSN_VARIABLE_BITMAP_1, _OFFSET, {(void*)offsetof(_STRUCT, _ElementCountField)}, offsetof(_STRUCT, _MEMBER), FALSE, #_MEMBER, {(StreamSerializeFcn_t)0}}
 
 /* variable length, left aligned bitmap i.e. _ElementCountField = 11 => 11111111 11100000 */
 #define M_LEFT_VAR_BMP(_STRUCT, _MEMBER, _ElementCountField, _OFFSET)\
-        {CSN_LEFT_ALIGNED_VAR_BMP, _OFFSET, {(void*)offsetof(_STRUCT, _ElementCountField)}, offsetof(_STRUCT, _MEMBER), #_MEMBER, {(StreamSerializeFcn_t)0}}
+        {CSN_LEFT_ALIGNED_VAR_BMP, _OFFSET, {(void*)offsetof(_STRUCT, _ElementCountField)}, offsetof(_STRUCT, _MEMBER), FALSE, #_MEMBER, {(StreamSerializeFcn_t)0}}
 
 /* variable length, left aligned bitmap filling the rest of message
  *- when unpacking the _ElementCountField will be set in runtime
  * - when packing _ElementCountField contains the size of bitmap
  */
 #define M_LEFT_VAR_BMP_1(_STRUCT, _MEMBER, _ElementCountField, _OFFSET)\
-        {CSN_LEFT_ALIGNED_VAR_BMP_1, _OFFSET, {(void*)offsetof(_STRUCT, _ElementCountField)}, offsetof(_STRUCT, _MEMBER), #_MEMBER, {(StreamSerializeFcn_t)0}}
+        {CSN_LEFT_ALIGNED_VAR_BMP_1, _OFFSET, {(void*)offsetof(_STRUCT, _ElementCountField)}, offsetof(_STRUCT, _MEMBER), FALSE, #_MEMBER, {(StreamSerializeFcn_t)0}}
+
+/* todo: dissect padding bits looking for unexpected extensions */
+#define M_PADDING_BITS(_STRUCT)\
+        {CSN_PADDING_BITS, 0, {0}, 0, TRUE, "Padding", {(StreamSerializeFcn_t)0}}
 
 #define M_NULL(_STRUCT, _MEMBER)\
-        {CSN_NULL, 0, {0}, offsetof(_STRUCT, _MEMBER), #_MEMBER, {(StreamSerializeFcn_t)0}}
+        {CSN_NULL, 0, {0}, offsetof(_STRUCT, _MEMBER), FALSE, #_MEMBER, {(StreamSerializeFcn_t)0}}
 
 #define M_THIS_EXIST(_STRUCT)\
-        {CSN_EXIST, 0, {0}, offsetof(_STRUCT, Exist), "Exist", {(StreamSerializeFcn_t)0}}
+        {CSN_EXIST, 0, {0}, offsetof(_STRUCT, Exist), FALSE, "Exist", {(StreamSerializeFcn_t)0}}
 
 #define M_THIS_EXIST_LH(_STRUCT)\
-        {CSN_EXIST_LH, 0, {0}, offsetof(_STRUCT, Exist), "Exist", {(StreamSerializeFcn_t)0}}
+        {CSN_EXIST_LH, 0, {0}, offsetof(_STRUCT, Exist), FALSE, "Exist", {(StreamSerializeFcn_t)0}}
 
 /* return value 0 if ok else discontionue the unpacking */
 typedef gint16 (*CsnCallBackFcn_t)(void* pv ,...);
diff --git a/src/gsm_rlcmac.cpp b/src/gsm_rlcmac.cpp
index e4afd7b..a39a5c0 100644
--- a/src/gsm_rlcmac.cpp
+++ b/src/gsm_rlcmac.cpp
@@ -166,22 +166,47 @@
   M_UINT       (Channel_Quality_Report_t,  Slot[7].I_LEVEL_TN,  4),
 CSN_DESCR_END  (Channel_Quality_Report_t)
 
-/*< EGPRS Ack/Nack Description >*/
+/*< EGPRS Ack/Nack Description struct >*/
 static const
-CSN_DESCR_BEGIN   (EGPRS_AckNack_t)
-  M_NEXT_EXIST    (EGPRS_AckNack_t, Exist_LENGTH, 1),
-  M_UINT          (EGPRS_AckNack_t,  LENGTH,  8),
+CSN_DESCR_BEGIN   (EGPRS_AckNack_Desc_t)
+  M_UINT          (EGPRS_AckNack_Desc_t,  FINAL_ACK_INDICATION,  1),
+  M_UINT          (EGPRS_AckNack_Desc_t,  BEGINNING_OF_WINDOW,  1),
+  M_UINT          (EGPRS_AckNack_Desc_t,  END_OF_WINDOW,  1),
+  M_UINT          (EGPRS_AckNack_Desc_t,  STARTING_SEQUENCE_NUMBER,  11),
 
-  M_UINT          (EGPRS_AckNack_t,  FINAL_ACK_INDICATION,  1),
-  M_UINT          (EGPRS_AckNack_t,  BEGINNING_OF_WINDOW,  1),
-  M_UINT          (EGPRS_AckNack_t,  END_OF_WINDOW,  1),
-  M_UINT          (EGPRS_AckNack_t,  STARTING_SEQUENCE_NUMBER,  11),
+  M_NEXT_EXIST    (EGPRS_AckNack_Desc_t,  Exist_CRBB, 3),
+  M_UINT          (EGPRS_AckNack_Desc_t,  CRBB_LENGTH,  7),
+  M_UINT          (EGPRS_AckNack_Desc_t,  CRBB_STARTING_COLOR_CODE,  1),
+  M_LEFT_VAR_BMP  (EGPRS_AckNack_Desc_t,  CRBB, CRBB_LENGTH, 0),
 
-  M_NEXT_EXIST    (EGPRS_AckNack_t, Exist_CRBB, 3),
-  M_UINT          (EGPRS_AckNack_t,  CRBB_LENGTH,  7),
-  M_UINT          (EGPRS_AckNack_t,  CRBB_STARTING_COLOR_CODE,  1),
-  M_LEFT_VAR_BMP  (EGPRS_AckNack_t, CRBB, CRBB_LENGTH, 0),
-CSN_DESCR_END     (EGPRS_AckNack_t)
+  M_LEFT_VAR_BMP_1(EGPRS_AckNack_Desc_t,  URBB, URBB_LENGTH, 0),
+CSN_DESCR_END     (EGPRS_AckNack_Desc_t)
+
+/*< EGPRS Ack/Nack Description IE >*/
+gint16 Egprs_Ack_Nack_Desc_w_len_Dissector(csnStream_t* ar, bitvec *vector, unsigned& readIndex, void* data)
+{
+  if (ar->direction == 0)
+  {
+    return csnStreamEncoder(ar, CSNDESCR(EGPRS_AckNack_Desc_t), vector, readIndex, data);
+  }
+  else
+  {
+    return csnStreamDecoder(ar, CSNDESCR(EGPRS_AckNack_Desc_t), vector, readIndex, data);
+  }
+}
+
+/* this intermediate structure is only required because M_SERIALIZE cannot be used as a member of M_UNION */
+static const
+CSN_DESCR_BEGIN(EGPRS_AckNack_w_len_t)
+  M_SERIALIZE  (EGPRS_AckNack_w_len_t, Desc, 8, Egprs_Ack_Nack_Desc_w_len_Dissector),
+CSN_DESCR_END  (EGPRS_AckNack_w_len_t)
+
+static const
+CSN_DESCR_BEGIN(EGPRS_AckNack_t)
+  M_UNION      (EGPRS_AckNack_t,  2),
+  M_TYPE       (EGPRS_AckNack_t, Desc, EGPRS_AckNack_Desc_t),
+  M_TYPE       (EGPRS_AckNack_t, Desc, EGPRS_AckNack_w_len_t),
+CSN_DESCR_END  (EGPRS_AckNack_t)
 
 /*<P1 Rest Octets>*/
 /*<P2 Rest Octets>*/
@@ -517,6 +542,7 @@
   M_UINT       (Packet_Polling_Request_t,  PAGE_MODE,  2),
   M_TYPE       (Packet_Polling_Request_t, ID, PacketPollingID_t),
   M_BIT        (Packet_Polling_Request_t,  TYPE_OF_ACK),
+  M_PADDING_BITS(Packet_Polling_Request_t),
 CSN_DESCR_END  (Packet_Polling_Request_t)
 
 static const
@@ -652,6 +678,7 @@
   M_BIT        (Packet_TBF_Release_t,  UPLINK_RELEASE),
   M_BIT        (Packet_TBF_Release_t,  DOWNLINK_RELEASE),
   M_UINT       (Packet_TBF_Release_t,  TBF_RELEASE_CAUSE,  4),
+  M_PADDING_BITS(Packet_TBF_Release_t ),
 CSN_DESCR_END  (Packet_TBF_Release_t)
 
 /*< Packet Control Acknowledgement message content >*/
@@ -684,6 +711,7 @@
   M_UINT               (Packet_Control_Acknowledgement_t,  CTRL_ACK,  2),
   M_NEXT_EXIST_OR_NULL (Packet_Control_Acknowledgement_t, Exist_AdditionsR5, 1),
   M_TYPE               (Packet_Control_Acknowledgement_t, AdditionsR5, Packet_Control_Acknowledgement_AdditionsR5_t),
+  M_PADDING_BITS       (Packet_Control_Acknowledgement_t),
 CSN_DESCR_END  (Packet_Control_Acknowledgement_t)
 
 /*< Packet Downlink Dummy Control Block message content >*/
@@ -694,6 +722,7 @@
 
   M_NEXT_EXIST (Packet_Downlink_Dummy_Control_Block_t, Exist_PERSISTENCE_LEVEL, 1),
   M_UINT_ARRAY (Packet_Downlink_Dummy_Control_Block_t, PERSISTENCE_LEVEL, 4, 4),
+  M_PADDING_BITS(Packet_Downlink_Dummy_Control_Block_t ),
 CSN_DESCR_END  (Packet_Downlink_Dummy_Control_Block_t)
 
 /*< Packet Uplink Dummy Control Block message content >*/
@@ -706,6 +735,7 @@
   M_UINT       (Packet_Uplink_Dummy_Control_Block_t,  MESSAGE_TYPE,  6),
   M_UINT       (Packet_Uplink_Dummy_Control_Block_t,  TLLI,  32),
 /*M_FIXED      (Packet_Uplink_Dummy_Control_Block_t, 1, 0),*/
+  M_PADDING_BITS(Packet_Uplink_Dummy_Control_Block_t),
 CSN_DESCR_END  (Packet_Uplink_Dummy_Control_Block_t)
 
 static const
@@ -728,7 +758,7 @@
 
 static const
 CSN_DESCR_BEGIN(Receive_N_PDU_Number_list_t)
-  M_SERIALIZE  (Receive_N_PDU_Number_list_t, IEI, Receive_N_PDU_Number_list_Dissector),
+  M_SERIALIZE  (Receive_N_PDU_Number_list_t, IEI, 7, Receive_N_PDU_Number_list_Dissector),
   M_VAR_TARRAY (Receive_N_PDU_Number_list_t, Receive_N_PDU_Number, Receive_N_PDU_Number_t, Count_Receive_N_PDU_Number),
 CSN_DESCR_END  (Receive_N_PDU_Number_list_t)
 
@@ -747,25 +777,25 @@
 
 static const
 CSN_DESCR_BEGIN       (Multislot_capability_t)
-  M_NEXT_EXIST        (Multislot_capability_t, Exist_HSCSD_multislot_class, 1),
+  M_NEXT_EXIST_OR_NULL(Multislot_capability_t, Exist_HSCSD_multislot_class, 1),
   M_UINT              (Multislot_capability_t,  HSCSD_multislot_class,  5),
 
-  M_NEXT_EXIST        (Multislot_capability_t, Exist_GPRS_multislot_class, 2),
+  M_NEXT_EXIST_OR_NULL(Multislot_capability_t, Exist_GPRS_multislot_class, 2),
   M_UINT              (Multislot_capability_t,  GPRS_multislot_class,  5),
   M_UINT              (Multislot_capability_t,  GPRS_Extended_Dynamic_Allocation_Capability,  1),
 
-  M_NEXT_EXIST        (Multislot_capability_t, Exist_SM, 2),
+  M_NEXT_EXIST_OR_NULL(Multislot_capability_t, Exist_SM, 2),
   M_UINT              (Multislot_capability_t,  SMS_VALUE,  4),
   M_UINT              (Multislot_capability_t,  SM_VALUE,  4),
 
-  M_NEXT_EXIST        (Multislot_capability_t, Exist_ECSD_multislot_class, 1),
+  M_NEXT_EXIST_OR_NULL(Multislot_capability_t, Exist_ECSD_multislot_class, 1),
   M_UINT              (Multislot_capability_t,  ECSD_multislot_class,  5),
 
-  M_NEXT_EXIST        (Multislot_capability_t, Exist_EGPRS_multislot_class, 2),
+  M_NEXT_EXIST_OR_NULL(Multislot_capability_t, Exist_EGPRS_multislot_class, 2),
   M_UINT              (Multislot_capability_t,  EGPRS_multislot_class,  5),
   M_UINT              (Multislot_capability_t,  EGPRS_Extended_Dynamic_Allocation_Capability,  1),
 
-  M_NEXT_EXIST        (Multislot_capability_t, Exist_DTM_GPRS_multislot_class, 3),
+  M_NEXT_EXIST_OR_NULL(Multislot_capability_t, Exist_DTM_GPRS_multislot_class, 3),
   M_UINT              (Multislot_capability_t,  DTM_GPRS_multislot_class,  2),
   M_UINT              (Multislot_capability_t,  Single_Slot_DTM,  1),
   M_TYPE              (Multislot_capability_t, DTM_EGPRS_Params, DTM_EGPRS_t),
@@ -775,54 +805,54 @@
 CSN_DESCR_BEGIN       (Content_t)
   M_UINT              (Content_t,  RF_Power_Capability,  3),
 
-  M_NEXT_EXIST        (Content_t, Exist_A5_bits, 1),
-  M_UINT              (Content_t,  A5_bits,  7),
+  M_NEXT_EXIST_OR_NULL(Content_t, Exist_A5_bits, 1),
+  M_UINT_OR_NULL      (Content_t,  A5_bits,  7),
 
-  M_UINT              (Content_t,  ES_IND,  1),
-  M_UINT              (Content_t,  PS,  1),
-  M_UINT              (Content_t,  VGCS,  1),
-  M_UINT              (Content_t,  VBS,  1),
+  M_UINT_OR_NULL      (Content_t,  ES_IND,  1),
+  M_UINT_OR_NULL      (Content_t,  PS,  1),
+  M_UINT_OR_NULL      (Content_t,  VGCS,  1),
+  M_UINT_OR_NULL      (Content_t,  VBS,  1),
 
   M_NEXT_EXIST_OR_NULL(Content_t, Exist_Multislot_capability, 1),
   M_TYPE              (Content_t, Multislot_capability, Multislot_capability_t),
 
-  M_NEXT_EXIST        (Content_t, Exist_Eight_PSK_Power_Capability, 1),
+  M_NEXT_EXIST_OR_NULL(Content_t,  Exist_Eight_PSK_Power_Capability, 1),
   M_UINT              (Content_t,  Eight_PSK_Power_Capability,  2),
 
-  M_UINT              (Content_t,  COMPACT_Interference_Measurement_Capability,  1),
-  M_UINT              (Content_t,  Revision_Level_Indicator,  1),
-  M_UINT              (Content_t,  UMTS_FDD_Radio_Access_Technology_Capability,  1),
-  M_UINT              (Content_t,  UMTS_384_TDD_Radio_Access_Technology_Capability,  1),
-  M_UINT              (Content_t,  CDMA2000_Radio_Access_Technology_Capability,  1),
+  M_UINT_OR_NULL      (Content_t,  COMPACT_Interference_Measurement_Capability,  1),
+  M_UINT_OR_NULL      (Content_t,  Revision_Level_Indicator,  1),
+  M_UINT_OR_NULL      (Content_t,  UMTS_FDD_Radio_Access_Technology_Capability,  1),
+  M_UINT_OR_NULL      (Content_t,  UMTS_384_TDD_Radio_Access_Technology_Capability,  1),
+  M_UINT_OR_NULL      (Content_t,  CDMA2000_Radio_Access_Technology_Capability,  1),
 
-  M_UINT              (Content_t,  UMTS_128_TDD_Radio_Access_Technology_Capability,  1),
-  M_UINT              (Content_t,  GERAN_Feature_Package_1,  1),
+  M_UINT_OR_NULL      (Content_t,  UMTS_128_TDD_Radio_Access_Technology_Capability,  1),
+  M_UINT_OR_NULL      (Content_t,  GERAN_Feature_Package_1,  1),
 
-  M_NEXT_EXIST        (Content_t, Exist_Extended_DTM_multislot_class, 2),
+  M_NEXT_EXIST_OR_NULL(Content_t,  Exist_Extended_DTM_multislot_class, 2),
   M_UINT              (Content_t,  Extended_DTM_GPRS_multislot_class,  2),
   M_UINT              (Content_t,  Extended_DTM_EGPRS_multislot_class,  2),
 
-  M_UINT              (Content_t,  Modulation_based_multislot_class_support,  1),
+  M_UINT_OR_NULL      (Content_t,  Modulation_based_multislot_class_support,  1),
 
-  M_NEXT_EXIST        (Content_t, Exist_HighMultislotCapability, 1),
+  M_NEXT_EXIST_OR_NULL(Content_t,  Exist_HighMultislotCapability, 1),
   M_UINT              (Content_t,  HighMultislotCapability,  2),
 
-  M_NEXT_EXIST        (Content_t, Exist_GERAN_lu_ModeCapability, 1),
+  M_NEXT_EXIST_OR_NULL(Content_t,  Exist_GERAN_lu_ModeCapability, 1),
   M_UINT              (Content_t,  GERAN_lu_ModeCapability,  4),
 
-  M_UINT              (Content_t,  GMSK_MultislotPowerProfile,  2),
-  M_UINT              (Content_t,  EightPSK_MultislotProfile,  2),
+  M_UINT_OR_NULL      (Content_t,  GMSK_MultislotPowerProfile,  2),
+  M_UINT_OR_NULL      (Content_t,  EightPSK_MultislotProfile,  2),
 
-  M_UINT              (Content_t,  MultipleTBF_Capability,  1),
-  M_UINT              (Content_t,  DownlinkAdvancedReceiverPerformance,  2),
-  M_UINT              (Content_t,  ExtendedRLC_MAC_ControlMessageSegmentionsCapability,  1),
-  M_UINT              (Content_t,  DTM_EnhancementsCapability,  1),
+  M_UINT_OR_NULL      (Content_t,  MultipleTBF_Capability,  1),
+  M_UINT_OR_NULL      (Content_t,  DownlinkAdvancedReceiverPerformance,  2),
+  M_UINT_OR_NULL      (Content_t,  ExtendedRLC_MAC_ControlMessageSegmentionsCapability,  1),
+  M_UINT_OR_NULL      (Content_t,  DTM_EnhancementsCapability,  1),
 
-  M_NEXT_EXIST        (Content_t, Exist_DTM_GPRS_HighMultislotClass, 2),
+  M_NEXT_EXIST_OR_NULL(Content_t, Exist_DTM_GPRS_HighMultislotClass, 2),
   M_UINT              (Content_t,  DTM_GPRS_HighMultislotClass,  3),
   M_TYPE              (Content_t, DTM_EGPRS_HighMultislotClass, DTM_EGPRS_HighMultislotClass_t),
 
-  M_UINT              (Content_t,  PS_HandoverCapability,  1),
+  M_UINT_OR_NULL      (Content_t,  PS_HandoverCapability,  1),
 CSN_DESCR_END         (Content_t)
 
 gint16 Content_Dissector(csnStream_t* ar, bitvec *vector, unsigned& readIndex, void* data)
@@ -864,12 +894,12 @@
 static const
 CSN_ChoiceElement_t MS_RA_capability_value_Choice[] =
 {
-  {4, AccTech_GSMP,     M_SERIALIZE (MS_RA_capability_value_t, u.Content, Content_Dissector)}, /* Long Form */
-  {4, AccTech_GSME,     M_SERIALIZE (MS_RA_capability_value_t, u.Content, Content_Dissector)}, /* Long Form */
-  {4, AccTech_GSM1800,  M_SERIALIZE (MS_RA_capability_value_t, u.Content, Content_Dissector)}, /* Long Form */
-  {4, AccTech_GSM1900,  M_SERIALIZE (MS_RA_capability_value_t, u.Content, Content_Dissector)}, /* Long Form */
-  {4, AccTech_GSM850,   M_SERIALIZE (MS_RA_capability_value_t, u.Content, Content_Dissector)}, /* Long Form */
-  {4, AccTech_GSMOther, M_SERIALIZE (MS_RA_capability_value_t, u.Additional_access_technologies, Additional_access_technologies_Dissector)}, /* Short Form */
+  {4, AccTech_GSMP,     M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
+  {4, AccTech_GSME,     M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
+  {4, AccTech_GSM1800,  M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
+  {4, AccTech_GSM1900,  M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
+  {4, AccTech_GSM850,   M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
+  {4, AccTech_GSMOther, M_SERIALIZE (MS_RA_capability_value_t, u.Additional_access_technologies, 7, Additional_access_technologies_Dissector)}, /* Short Form */
 };
 
 static const
@@ -883,7 +913,7 @@
 /*M_UINT        (MS_Radio_Access_capability_t,  IEI,  8),*/
 /*M_UINT        (MS_Radio_Access_capability_t,  Length,  8),*/
 
-  M_REC_TARRAY_1(MS_Radio_Access_capability_t, MS_RA_capability_value[0], MS_RA_capability_value_t, Count_MS_RA_capability_value),
+  M_REC_TARRAY_1(MS_Radio_Access_capability_t, MS_RA_capability_value, MS_RA_capability_value_t, Count_MS_RA_capability_value),
 CSN_DESCR_END   (MS_Radio_Access_capability_t)
 
 /*< MS Classmark 3 IE >*/
@@ -1111,6 +1141,7 @@
 
   M_NEXT_EXIST_OR_NULL(Packet_Resource_Request_t, Exist_AdditionsR99, 1),
   M_TYPE              (Packet_Resource_Request_t, AdditionsR99, PRR_AdditionsR99_t),
+  M_PADDING_BITS     (Packet_Resource_Request_t),
 CSN_DESCR_END         (Packet_Resource_Request_t)
 
 /*< Packet Mobile TBF Status message content > */
@@ -1128,6 +1159,7 @@
 
   M_NEXT_EXIST (Packet_Mobile_TBF_Status_t, Exist_STATUS_MESSAGE_TYPE, 1),
   M_UINT       (Packet_Mobile_TBF_Status_t,  STATUS_MESSAGE_TYPE,  6),
+  M_PADDING_BITS(Packet_Mobile_TBF_Status_t),
 CSN_DESCR_END  (Packet_Mobile_TBF_Status_t)
 
 /*< Packet PSI Status message content > */
@@ -1166,6 +1198,7 @@
   M_UINT       (Packet_PSI_Status_t,  PBCCH_CHANGE_MARK,  3),
   M_TYPE       (Packet_PSI_Status_t, PSI_Message_List, PSI_Message_List_t),
   M_TYPE       (Packet_PSI_Status_t, Unknown_PSI_Message_List, Unknown_PSI_Message_List_t),
+  M_PADDING_BITS(Packet_PSI_Status_t),
 CSN_DESCR_END  (Packet_PSI_Status_t)
 
 /* < Packet SI Status message content > */
@@ -1202,6 +1235,7 @@
   M_UINT       (Packet_SI_Status_t,  BCCH_CHANGE_MARK,  3),
   M_TYPE       (Packet_SI_Status_t, SI_Message_List, SI_Message_List_t),
   M_TYPE       (Packet_SI_Status_t, Unknown_SI_Message_List, Unknown_SI_Message_List_t),
+  M_PADDING_BITS(Packet_SI_Status_t),
 CSN_DESCR_END  (Packet_SI_Status_t)
 
 /* < Packet Downlink Ack/Nack message content > */
@@ -1227,6 +1261,7 @@
 
   M_NEXT_EXIST_OR_NULL(Packet_Downlink_Ack_Nack_t, Exist_AdditionsR99, 1),
   M_TYPE              (Packet_Downlink_Ack_Nack_t, AdditionsR99, PD_AckNack_AdditionsR99_t),
+  M_PADDING_BITS      (Packet_Downlink_Ack_Nack_t),
 CSN_DESCR_END         (Packet_Downlink_Ack_Nack_t)
 
 
@@ -1263,7 +1298,7 @@
 
   M_TYPE       (EGPRS_PD_AckNack_t, EGPRS_AckNack, EGPRS_AckNack_t),
 /*  M_CALLBACK   (EGPRS_PD_AckNack_t, (void*)24, EGPRS_AckNack, EGPRS_AckNack),  */
-  M_LEFT_VAR_BMP (EGPRS_PD_AckNack_t, EGPRS_AckNack.URBB, EGPRS_AckNack.URBB_LENGTH, 0),
+  M_PADDING_BITS(EGPRS_PD_AckNack_t),
 
 CSN_DESCR_END  (EGPRS_PD_AckNack_t)
 
@@ -1360,6 +1395,8 @@
 
   M_NEXT_EXIST_OR_NULL (Packet_Cell_Change_Failure_t, Exist_AdditionsR99, 1),
   M_TYPE               (Packet_Cell_Change_Failure_t, AdditionsR99, PCCF_AdditionsR99_t),
+
+  M_PADDING_BITS       (Packet_Cell_Change_Failure_t),
 CSN_DESCR_END          (Packet_Cell_Change_Failure_t)
 
 /*< Packet Uplink Ack/Nack message content > */
@@ -1452,7 +1489,6 @@
 
   M_TYPE       (PU_AckNack_EGPRS_00_t, EGPRS_AckNack, EGPRS_AckNack_t),
 /*  M_CALLBACK   (PU_AckNack_EGPRS_00_t, (void*)24, EGPRS_AckNack, EGPRS_AckNack),  */
-  M_LEFT_VAR_BMP (PU_AckNack_EGPRS_00_t, EGPRS_AckNack.URBB, EGPRS_AckNack.URBB_LENGTH, 0),
 CSN_DESCR_END  (PU_AckNack_EGPRS_00_t)
 
 static const
@@ -1475,6 +1511,7 @@
   M_UNION      (Packet_Uplink_Ack_Nack_t, 2),
   M_TYPE       (Packet_Uplink_Ack_Nack_t, u.PU_AckNack_GPRS_Struct, PU_AckNack_GPRS_t),
   M_TYPE       (Packet_Uplink_Ack_Nack_t, u.PU_AckNack_EGPRS_Struct, PU_AckNack_EGPRS_t),
+  M_PADDING_BITS(Packet_Uplink_Ack_Nack_t ),
 CSN_DESCR_END  (Packet_Uplink_Ack_Nack_t)
 
 /*< Packet Uplink Assignment message content > */
@@ -1813,6 +1850,8 @@
   M_UNION      (Packet_Uplink_Assignment_t, 2),
   M_TYPE       (Packet_Uplink_Assignment_t, u.PUA_GPRS_Struct, PUA_GPRS_t),
   M_TYPE       (Packet_Uplink_Assignment_t, u.PUA_EGPRS_Struct, PUA_EGPRS_t),
+
+  M_PADDING_BITS(Packet_Uplink_Assignment_t ),
 CSN_DESCR_END  (Packet_Uplink_Assignment_t)
 
 /*< Packet Downlink Assignment message content > */
@@ -1890,6 +1929,8 @@
 
   M_NEXT_EXIST_OR_NULL(Packet_Downlink_Assignment_t, Exist_AdditionsR99, 1),
   M_TYPE              (Packet_Downlink_Assignment_t, AdditionsR99, PDA_AdditionsR99_t),
+
+  M_PADDING_BITS    (Packet_Downlink_Assignment_t),
 CSN_DESCR_END         (Packet_Downlink_Assignment_t)
 
 typedef Packet_Downlink_Assignment_t pdlaCheck_t;
@@ -2034,6 +2075,7 @@
   M_UINT       (Packet_Paging_Request_t,  NLN,  2),
 
   M_REC_TARRAY (Packet_Paging_Request_t, Repeated_Page_info, Repeated_Page_info_t, Count_Repeated_Page_info),
+  M_PADDING_BITS(Packet_Paging_Request_t),
 CSN_DESCR_END  (Packet_Paging_Request_t)
 
 static const
@@ -2043,6 +2085,7 @@
 
   M_FIXED      (Packet_PDCH_Release_t, 1, 0x01),
   M_UINT       (Packet_PDCH_Release_t,  TIMESLOTS_AVAILABLE,  8),
+  M_PADDING_BITS(Packet_PDCH_Release_t),
 CSN_DESCR_END  (Packet_PDCH_Release_t)
 
 /*< Packet Power Control/Timing Advance message content >*/
@@ -2088,6 +2131,8 @@
   M_UNION      (Packet_Power_Control_Timing_Advance_t, 2),
   M_TYPE       (Packet_Power_Control_Timing_Advance_t, u.GlobalTimingAndPower, GlobalTimingAndPower_t),
   M_TYPE       (Packet_Power_Control_Timing_Advance_t, u.GlobalTimingOrPower, GlobalTimingOrPower_t),
+
+  M_PADDING_BITS(Packet_Power_Control_Timing_Advance_t),
 CSN_DESCR_END  (Packet_Power_Control_Timing_Advance_t)
 
 /*< Packet Queueing Notification message content > */
@@ -2100,6 +2145,7 @@
   M_TYPE       (Packet_Queueing_Notification_t, Packet_Request_Reference, Packet_Request_Reference_t),
 
   M_UINT       (Packet_Queueing_Notification_t,  TQI,  16),
+  M_PADDING_BITS(Packet_Queueing_Notification_t),
 CSN_DESCR_END  (Packet_Queueing_Notification_t)
 
 /* USED in Packet Timeslot Reconfigure message content
@@ -2220,6 +2266,8 @@
   M_UNION      (Packet_Timeslot_Reconfigure_t, 2),
   M_TYPE       (Packet_Timeslot_Reconfigure_t, u.PTR_GPRS_Struct, PTR_GPRS_t),
   M_TYPE       (Packet_Timeslot_Reconfigure_t, u.PTR_EGPRS_Struct, PTR_EGPRS_t),
+
+  M_PADDING_BITS(Packet_Timeslot_Reconfigure_t),
 CSN_DESCR_END  (Packet_Timeslot_Reconfigure_t)
 
 typedef Packet_Timeslot_Reconfigure_t PTRCheck_t;
@@ -2332,6 +2380,7 @@
   M_UINT       (Packet_PRACH_Parameters_t,  PAGE_MODE,  2),
 
   M_TYPE       (Packet_PRACH_Parameters_t, PRACH_Control, PRACH_Control_t),
+  M_PADDING_BITS(Packet_PRACH_Parameters_t),
 CSN_DESCR_END  (Packet_PRACH_Parameters_t)
 
 /* < Packet Access Reject message content > */
@@ -2364,6 +2413,7 @@
 
   M_TYPE       (Packet_Access_Reject_t, Reject, Reject_t),
   M_REC_TARRAY (Packet_Access_Reject_t, Reject[1], Reject_t, Count_Reject),
+  M_PADDING_BITS(Packet_Access_Reject_t),
 CSN_DESCR_END  (Packet_Access_Reject_t)
 
 /* < Packet Cell Change Order message content > */
@@ -3273,6 +3323,8 @@
   M_UNION      (Packet_Cell_Change_Order_t, 2),
   M_TYPE       (Packet_Cell_Change_Order_t, u.Target_Cell_GSM, Target_Cell_GSM_t),
   M_TYPE       (Packet_Cell_Change_Order_t, u.Target_Cell_3G, Target_Cell_3G_t),
+
+  M_PADDING_BITS(Packet_Cell_Change_Order_t),
 CSN_DESCR_END  (Packet_Cell_Change_Order_t)
 
 /*< Packet (Enhanced) Measurement Report message contents > */
@@ -3496,6 +3548,8 @@
 
   M_NEXT_EXIST_OR_NULL(Packet_Measurement_Report_t, Exist_AdditionsR99, 1),
   M_TYPE              (Packet_Measurement_Report_t, AdditionsR99, PMR_AdditionsR99_t),
+
+  M_PADDING_BITS      (Packet_Measurement_Report_t),
 CSN_DESCR_END         (Packet_Measurement_Report_t)
 
 static const
@@ -3546,6 +3600,8 @@
 
   M_NEXT_EXIST_OR_NULL(Packet_Enh_Measurement_Report_t, Exist_AdditionsR5, 1),
   M_TYPE              (Packet_Enh_Measurement_Report_t, AdditionsR5, PEMR_AdditionsR5_t),
+
+  M_PADDING_BITS(Packet_Enh_Measurement_Report_t),
 CSN_DESCR_END         (Packet_Enh_Measurement_Report_t)
 
 /*< Packet Measurement Order message contents >*/
@@ -3579,6 +3635,8 @@
 
   M_NEXT_EXIST_OR_NULL (Packet_Measurement_Order_t, Exist_AdditionsR98, 1),
   M_TYPE               (Packet_Measurement_Order_t, AdditionsR98, PMO_AdditionsR98_t),
+
+  M_PADDING_BITS       (Packet_Measurement_Order_t),
 CSN_DESCR_END          (Packet_Measurement_Order_t)
 
 static const
@@ -3724,6 +3782,8 @@
 
   M_NEXT_EXIST_OR_NULL(Packet_Cell_Change_Notification_t, Exist_AdditionsR6, 1),
   M_TYPE              (Packet_Cell_Change_Notification_t, AdditionsR6, PCCN_AdditionsR6_t),
+
+  M_PADDING_BITS(Packet_Cell_Change_Notification_t),
 CSN_DESCR_END  (Packet_Cell_Change_Notification_t)
 
 /*< Packet Cell Change Continue message contents > */
@@ -3738,6 +3798,8 @@
   M_UINT       (Packet_Cell_Change_Continue_t,  ARFCN, 10),
   M_UINT       (Packet_Cell_Change_Continue_t,  BSIC,  6),
   M_UINT       (Packet_Cell_Change_Continue_t,  CONTAINER_ID,  2),
+
+  M_PADDING_BITS(Packet_Cell_Change_Continue_t),
 CSN_DESCR_END  (Packet_Cell_Change_Continue_t)
 
 /*< Packet Neighbour Cell Data message contents > */
@@ -3777,6 +3839,7 @@
   M_UINT       (Packet_Neighbour_Cell_Data_t,  CONTAINER_INDEX,  5),
 
   M_TYPE       (Packet_Neighbour_Cell_Data_t, Container, PNCDContainer_t),
+  M_PADDING_BITS(Packet_Neighbour_Cell_Data_t),
 CSN_DESCR_END  (Packet_Neighbour_Cell_Data_t)
 
 /*< Packet Serving Cell Data message contents > */
@@ -3790,6 +3853,7 @@
   M_UINT       (Packet_Serving_Cell_Data_t,  spare,  4),
   M_UINT       (Packet_Serving_Cell_Data_t,  CONTAINER_INDEX,  5),
   M_UINT_ARRAY (Packet_Serving_Cell_Data_t, CONTAINER, 8, 19),/* 8*19 bits */
+  M_PADDING_BITS(Packet_Serving_Cell_Data_t),
 CSN_DESCR_END  (Packet_Serving_Cell_Data_t)
 
 
@@ -4033,6 +4097,8 @@
   M_TYPE       (Packet_Handover_Command_t, u.PS_HandoverTo_UTRAN_Payload, PS_HandoverTo_UTRAN_Payload_t),
   CSN_ERROR    (Packet_Handover_Command_t, "10 <extension> not implemented", CSN_ERROR_STREAM_NOT_SUPPORTED),
   CSN_ERROR    (Packet_Handover_Command_t, "11 <extension> not implemented", CSN_ERROR_STREAM_NOT_SUPPORTED),
+
+  M_PADDING_BITS(Packet_Handover_Command_t),
 CSN_DESCR_END  (Packet_Handover_Command_t)
 
 /*< End Packet Handover Command >*/
@@ -4047,6 +4113,7 @@
   M_TYPE       (Packet_PhysicalInformation_t, Global_TFI, Global_TFI_t),
 
   M_UINT       (Packet_PhysicalInformation_t,  TimingAdvance,  8),
+  M_PADDING_BITS(Packet_PhysicalInformation_t),
 CSN_DESCR_END  (Packet_PhysicalInformation_t)
 
 /*< End Packet Physical Information > */
@@ -4077,6 +4144,7 @@
 
   M_TYPE              (Additional_MS_Rad_Access_Cap_t,  ID, AdditionalMsRadAccessCapID_t),
   M_TYPE              (Additional_MS_Rad_Access_Cap_t,  MS_Radio_Access_capability, MS_Radio_Access_capability_t),
+  M_PADDING_BITS      (Additional_MS_Rad_Access_Cap_t),
 CSN_DESCR_END         (Additional_MS_Rad_Access_Cap_t)
 
 
@@ -4090,6 +4158,7 @@
   M_UINT              (Packet_Pause_t,  MESSAGE_TYPE,  2),
   M_UINT              (Packet_Pause_t,  TLLI, 32),
   M_BITMAP            (Packet_Pause_t,  RAI, 48),
+  M_PADDING_BITS      (Packet_Pause_t),
 CSN_DESCR_END         (Packet_Pause_t)
 
 
@@ -4135,6 +4204,8 @@
 
   M_NEXT_EXIST (PSI1_t, Exist_AdditionsR99, 1),
   M_TYPE       (PSI1_t,  AdditionsR99, PSI1_AdditionsR99_t),
+
+  M_PADDING_BITS(PSI1_t),
 CSN_DESCR_END  (PSI1_t)
 /*< End Packet System Information Type 1 message content >*/
 
@@ -4240,6 +4311,7 @@
   M_TYPE       (PSI2_t,  Cell_Allocation, Cell_Allocation_t),
   M_REC_TARRAY (PSI2_t, GPRS_MA[0], PSI2_MA_t, Count_GPRS_MA),
   M_REC_TARRAY (PSI2_t, PCCCH_Description[0], PCCCH_Description_t, Count_PCCCH_Description),
+  M_PADDING_BITS(PSI2_t),
 CSN_DESCR_END  (PSI2_t)
 /*< End Packet System Information Type 2 message content >*/
 
@@ -4364,6 +4436,8 @@
   
   M_NEXT_EXIST (PSI3_t, Exist_AdditionR98, 1),
   M_TYPE       (PSI3_t,  AdditionR98, PSI3_AdditionR98_t),
+
+  M_PADDING_BITS(PSI3_t),
 CSN_DESCR_END  (PSI3_t)
 /*< End Packet System Information Type 3 message content >*/
 
@@ -4472,6 +4546,8 @@
 
   M_NEXT_EXIST (PSI5_t, Exist_AdditionsR99, 1),
   M_TYPE       (PSI5_t,  AdditionsR99, PSI5_AdditionsR99),
+
+  M_PADDING_BITS(PSI5_t),
 CSN_DESCR_END  (PSI5_t)
 /*< End Packet System Information Type 5 message content >*/
 
@@ -4515,6 +4591,8 @@
 
   M_NEXT_EXIST (PSI13_t, Exist_AdditionsR99, 1),
   M_TYPE       (PSI13_t,  AdditionsR99, PSI13_AdditionR99),
+
+  M_PADDING_BITS(PSI13_t),
 CSN_DESCR_END  (PSI13_t)
 /*< End Packet System Information Type 13 message content >*/
 
@@ -4732,7 +4810,7 @@
     LOGPC(DRLCMACDATA, LOGL_NOTICE, "Payload Type: RESERVED (3)");
     return;
   }
-  data->NrOfBits = (23 - 1) * 8;
+  data->NrOfBits = 23 * 8;
   csnStreamInit(&ar, 0, data->NrOfBits);
   readIndex += 6;
   data->u.MESSAGE_TYPE = bitvec_read_field(vector, readIndex, 6);
@@ -5017,7 +5095,7 @@
 {
   csnStream_t      ar;
   unsigned writeIndex = 0;
-  data->NrOfBits = (23 - 1) * 8;
+  data->NrOfBits = 23 * 8;
   csnStreamInit(&ar, 0, data->NrOfBits);
   writeIndex = 0;
   switch (data->u.MESSAGE_TYPE)
diff --git a/src/gsm_rlcmac.h b/src/gsm_rlcmac.h
index afec146..017b311 100644
--- a/src/gsm_rlcmac.h
+++ b/src/gsm_rlcmac.h
@@ -454,9 +454,6 @@
 
 typedef struct
 {
-  gboolean Exist_LENGTH;
-  guint8   LENGTH;
-
   guint8   FINAL_ACK_INDICATION;
   guint8   BEGINNING_OF_WINDOW;
   guint8   END_OF_WINDOW;
@@ -469,8 +466,20 @@
 
   guint16  URBB_LENGTH;
   guint8   URBB[URBB_MAX_BITS/8];
+} EGPRS_AckNack_Desc_t;
+
+typedef struct
+{
+  guint8   UnionType;
+  EGPRS_AckNack_Desc_t Desc;
 } EGPRS_AckNack_t;
 
+typedef struct
+{
+  guint8   LENGTH;
+  EGPRS_AckNack_Desc_t Desc;
+} EGPRS_AckNack_w_len_t;
+
 
 /* <P1 Rest Octets>
  * <P2 Rest Octets>
