diff --git a/Packets/DefaultBundle/EthernetPacket.hh b/Packets/DefaultBundle/EthernetPacket.hh
index 04516dbcccf7072c685614535f8630d977623f88..78fd67168e32a36deb3d06b631cd8a115da0a514 100644
--- a/Packets/DefaultBundle/EthernetPacket.hh
+++ b/Packets/DefaultBundle/EthernetPacket.hh
@@ -70,9 +70,9 @@ namespace senf {
     {
 #       include SENF_FIXED_PARSER()
 
-        SENF_PARSE_FIELD( destination, Parse_MAC    );
-        SENF_PARSE_FIELD( source,      Parse_MAC    );
-        SENF_PARSE_FIELD( type,        Parse_UInt16 );
+        SENF_PARSER_FIELD( destination, Parse_MAC    );
+        SENF_PARSER_FIELD( source,      Parse_MAC    );
+        SENF_PARSER_FIELD( type,        Parse_UInt16 );
 
         SENF_PARSER_FINALIZE(Parse_Ethernet);
     };
@@ -137,11 +137,11 @@ namespace senf {
     {
 #       include SENF_FIXED_PARSER()
 
-        SENF_PARSE_BITFIELD( priority,  3, unsigned );
-        SENF_PARSE_BITFIELD( cfi,       1, bool     );
-        SENF_PARSE_BITFIELD( vlanId,   12, unsigned );
+        SENF_PARSER_BITFIELD( priority,  3, unsigned );
+        SENF_PARSER_BITFIELD( cfi,       1, bool     );
+        SENF_PARSER_BITFIELD( vlanId,   12, unsigned );
 
-        SENF_PARSE_FIELD( type, Parse_UInt16 );
+        SENF_PARSER_FIELD( type, Parse_UInt16 );
 
         SENF_PARSER_FINALIZE(Parse_EthVLan);
     };
diff --git a/Packets/DefaultBundle/IpV4Packet.hh b/Packets/DefaultBundle/IpV4Packet.hh
index f2939091a6b61f70cc15af5ccab0e1612f90817b..bbc884c2eb53eba012ab3e66313b8bffdfbb6713 100644
--- a/Packets/DefaultBundle/IpV4Packet.hh
+++ b/Packets/DefaultBundle/IpV4Packet.hh
@@ -69,23 +69,23 @@ namespace senf {
     {
 #       include SENF_FIXED_PARSER()
 
-        SENF_PARSE_BITFIELD( version,   4, unsigned );
-        SENF_PARSE_BITFIELD( ihl,       4, unsigned );
-
-        SENF_PARSE_FIELD( tos,         Parse_UInt8        );
-        SENF_PARSE_FIELD( length,      Parse_UInt16       );
-        SENF_PARSE_FIELD( identifier,  Parse_UInt16       );
-
-        SENF_PARSE_BITFIELD( reserved,  1, bool     );
-        SENF_PARSE_BITFIELD( df,        1, bool     );
-        SENF_PARSE_BITFIELD( mf,        1, bool     );
-        SENF_PARSE_BITFIELD( frag,     13, unsigned );
-
-        SENF_PARSE_FIELD( ttl,         Parse_UInt8        );
-        SENF_PARSE_FIELD( protocol,    Parse_UInt8        );
-        SENF_PARSE_FIELD( checksum,    Parse_UInt16       );
-        SENF_PARSE_FIELD( source,      Parse_INet4Address );
-        SENF_PARSE_FIELD( destination, Parse_INet4Address );
+        SENF_PARSER_BITFIELD( version,   4, unsigned );
+        SENF_PARSER_BITFIELD( ihl,       4, unsigned );
+
+        SENF_PARSER_FIELD( tos,         Parse_UInt8        );
+        SENF_PARSER_FIELD( length,      Parse_UInt16       );
+        SENF_PARSER_FIELD( identifier,  Parse_UInt16       );
+
+        SENF_PARSER_BITFIELD( reserved,  1, bool     );
+        SENF_PARSER_BITFIELD( df,        1, bool     );
+        SENF_PARSER_BITFIELD( mf,        1, bool     );
+        SENF_PARSER_BITFIELD( frag,     13, unsigned );
+
+        SENF_PARSER_FIELD( ttl,         Parse_UInt8        );
+        SENF_PARSER_FIELD( protocol,    Parse_UInt8        );
+        SENF_PARSER_FIELD( checksum,    Parse_UInt16       );
+        SENF_PARSER_FIELD( source,      Parse_INet4Address );
+        SENF_PARSER_FIELD( destination, Parse_INet4Address );
 
         SENF_PARSER_INIT() {
             version() = 4;
diff --git a/Packets/DefaultBundle/IpV6Extensions.hh b/Packets/DefaultBundle/IpV6Extensions.hh
index e04c6bbad49baa8b8e574b9399356946e6fc456c..bc4ba896a9890acb02cc0ab4d92e0b0c378399ce 100644
--- a/Packets/DefaultBundle/IpV6Extensions.hh
+++ b/Packets/DefaultBundle/IpV6Extensions.hh
@@ -43,14 +43,14 @@ namespace senf {
     {
 #       include SENF_FIXED_PARSER()
 
-        SENF_PARSE_FIELD( nextHeader     , Parse_UInt8 );
-        SENF_PARSE_FIELD( reserved1      , Parse_UInt8 );
+        SENF_PARSER_FIELD( nextHeader     , Parse_UInt8 );
+        SENF_PARSER_FIELD( reserved1      , Parse_UInt8 );
 
-        SENF_PARSE_BITFIELD( fragmentOffset, 13, unsigned );
-        SENF_PARSE_BITFIELD( reserved2,       2, unsigned );
-        SENF_PARSE_BITFIELD( moreFragments,   1, bool     );
+        SENF_PARSER_BITFIELD( fragmentOffset, 13, unsigned );
+        SENF_PARSER_BITFIELD( reserved2,       2, unsigned );
+        SENF_PARSER_BITFIELD( moreFragments,   1, bool     );
 
-        SENF_PARSE_FIELD( id             , Parse_UInt32   );
+        SENF_PARSER_FIELD( id             , Parse_UInt32   );
 
         SENF_PARSER_FINALIZE(Parse_IpV6Extension_Fragment);
     };
diff --git a/Packets/DefaultBundle/IpV6Packet.hh b/Packets/DefaultBundle/IpV6Packet.hh
index 646dd1ccdfb88dc3080a46e9121224dc8ff360f6..cb073e80564f5dd387c26b5658530ac0a49c6aa3 100644
--- a/Packets/DefaultBundle/IpV6Packet.hh
+++ b/Packets/DefaultBundle/IpV6Packet.hh
@@ -64,15 +64,15 @@ namespace senf {
     {
 #       include SENF_FIXED_PARSER()
 
-        SENF_PARSE_BITFIELD( version,       4, unsigned );
-        SENF_PARSE_BITFIELD( trafficClass,  8, unsigned );
-        SENF_PARSE_BITFIELD( flowLabel,    20, unsigned );
-
-        SENF_PARSE_FIELD( length,       Parse_UInt16       );
-        SENF_PARSE_FIELD( nextHeader,   Parse_UInt8        );
-        SENF_PARSE_FIELD( hopLimit,     Parse_UInt8        );
-        SENF_PARSE_FIELD( source,       Parse_INet6Address );
-        SENF_PARSE_FIELD( destination,  Parse_INet6Address );
+        SENF_PARSER_BITFIELD( version,       4, unsigned );
+        SENF_PARSER_BITFIELD( trafficClass,  8, unsigned );
+        SENF_PARSER_BITFIELD( flowLabel,    20, unsigned );
+
+        SENF_PARSER_FIELD( length,       Parse_UInt16       );
+        SENF_PARSER_FIELD( nextHeader,   Parse_UInt8        );
+        SENF_PARSER_FIELD( hopLimit,     Parse_UInt8        );
+        SENF_PARSER_FIELD( source,       Parse_INet6Address );
+        SENF_PARSER_FIELD( destination,  Parse_INet6Address );
 
         SENF_PARSER_INIT() {
             version() = 6;
diff --git a/Packets/DefaultBundle/UDPPacket.hh b/Packets/DefaultBundle/UDPPacket.hh
index f8814977aed45bc1adf809fe69dcabfbda6fbf64..296597ca7a10956614272d5643b0c9ff39ad17b2 100644
--- a/Packets/DefaultBundle/UDPPacket.hh
+++ b/Packets/DefaultBundle/UDPPacket.hh
@@ -45,10 +45,10 @@ namespace senf {
     {
 #       include SENF_FIXED_PARSER()
 
-        SENF_PARSE_FIELD( source,      senf::Parse_UInt16 );
-        SENF_PARSE_FIELD( destination, senf::Parse_UInt16 );
-        SENF_PARSE_FIELD( length,      senf::Parse_UInt16 );
-        SENF_PARSE_FIELD( checksum,    senf::Parse_UInt16 );
+        SENF_PARSER_FIELD( source,      senf::Parse_UInt16 );
+        SENF_PARSER_FIELD( destination, senf::Parse_UInt16 );
+        SENF_PARSER_FIELD( length,      senf::Parse_UInt16 );
+        SENF_PARSER_FIELD( checksum,    senf::Parse_UInt16 );
 
         SENF_PARSER_FINALIZE(Parse_UDP);
 
diff --git a/Packets/MPEGDVBBundle/DSMCCSection.cc b/Packets/MPEGDVBBundle/DSMCCSection.cc
index 689d4d1825e7c5feb6484331367657284866578e..d0c8b34e1b8486e6b9149de0f0a85764bad835ca 100644
--- a/Packets/MPEGDVBBundle/DSMCCSection.cc
+++ b/Packets/MPEGDVBBundle/DSMCCSection.cc
@@ -45,12 +45,10 @@ prefix_ void senf::DSMCCSectionType::dump(packet p, std::ostream & os)
        << "  table_id: 0x" << unsigned(p->table_id()) << "\n"
        << "  section_syntax_indicator: " << p->ssi() << "\n"
        << "  private_indicator: " << p->private_indicator() << "\n"
-       << "  reserved_1: " << p->reserved_1() << "\n"
        << std::dec
        << "  section_length: " << p->sec_length() << "\n"
        << std::hex 
        << "  table_id_extension: " << p->table_id_extension() << "\n"
-       << "  reserved_2: " << p->reserved_2() << "\n"
        << "  version_number: " << p->version_num() << "\n"
        << "  current_next_indicator: " << p->curr_next_indicator() << "\n"
        << "  section_number: " << unsigned(p->sec_num()) << "\n"
diff --git a/Packets/MPEGDVBBundle/DSMCCSection.hh b/Packets/MPEGDVBBundle/DSMCCSection.hh
index e0881f9035044bf3393146b3e881fa7f6742cb75..922c8711e2563afa76c00b216bc6d4fd60619acc 100644
--- a/Packets/MPEGDVBBundle/DSMCCSection.hh
+++ b/Packets/MPEGDVBBundle/DSMCCSection.hh
@@ -45,23 +45,23 @@ namespace senf {
     {
 #       include SENF_FIXED_PARSER()
 
-        SENF_PARSE_FIELD( table_id, Parse_UInt8 );
+        SENF_PARSER_FIELD    ( table_id            , Parse_UInt8   );
         
-        SENF_PARSE_BITFIELD( ssi,                  1, bool     );
-        SENF_PARSE_BITFIELD( private_indicator,    1, bool     );
-        SENF_PARSE_BITFIELD( reserved_1,           2, unsigned );
-        SENF_PARSE_BITFIELD( sec_length,          12, unsigned );
-
-        SENF_PARSE_FIELD( table_id_extension, Parse_UInt16 );
-
-        SENF_PARSE_BITFIELD( reserved_2,           2, unsigned );
-        SENF_PARSE_BITFIELD( version_num,          5, unsigned );
-        SENF_PARSE_BITFIELD( curr_next_indicator,  1, bool     );
+        SENF_PARSER_BITFIELD ( ssi                 ,  1 , bool     );
+        SENF_PARSER_BITFIELD ( private_indicator   ,  1 , bool     );
+        SENF_PARSER_SKIP_BITS( 2 );
+        SENF_PARSER_BITFIELD ( sec_length          , 12 , unsigned );
+        
+        SENF_PARSER_FIELD    ( table_id_extension  , Parse_UInt16  );
+        
+        SENF_PARSER_SKIP_BITS( 2 );
+        SENF_PARSER_BITFIELD ( version_num         ,  5 , unsigned );
+        SENF_PARSER_BITFIELD ( curr_next_indicator ,  1 , bool     );
 
-        SENF_PARSE_FIELD( sec_num,            Parse_UInt8  );
-        SENF_PARSE_FIELD( last_sec_num,       Parse_UInt8  );
+        SENF_PARSER_FIELD    ( sec_num             , Parse_UInt8   );
+        SENF_PARSER_FIELD    ( last_sec_num        , Parse_UInt8   );
         
-        SENF_PARSER_FINALIZE(Parse_DSMCCSection);
+        SENF_PARSER_FINALIZE( Parse_DSMCCSection );
 
         Parse_UInt32 crc() const { return parse<Parse_UInt32>( data().size()-4 ); }
     };
diff --git a/Packets/MPEGDVBBundle/DatagramSection.cc b/Packets/MPEGDVBBundle/DatagramSection.cc
index a03c96aec5f2c61e09fee4f844f203d8664515ba..e34c3c36e4b63ea0b9d331af248c8db47567a72b 100644
--- a/Packets/MPEGDVBBundle/DatagramSection.cc
+++ b/Packets/MPEGDVBBundle/DatagramSection.cc
@@ -45,13 +45,11 @@ prefix_ void senf::DatagramSectionType::dump(packet p, std::ostream & os)
        << "  table_id: 0x" << unsigned(p->table_id()) << "\n"
        << "  section_syntax_indicator: " << p->ssi() << "\n"
        << "  private_indicator: " << p->private_indicator() << "\n"
-       << "  reserved_1: " << p->reserved_1() << "\n"
        << std::dec
        << "  section_length: " << p->sec_length() << "\n"
        << std::hex 
        << "  MAC_address_6: " << unsigned(p->mac_addr_6()) << "\n"
        << "  MAC_address_5: " << unsigned(p->mac_addr_5()) << "\n"
-       << "  reserved_2: " << p->reserved_2() << "\n"
        << "  payload_scrambling_control: " << p->payload_scrmbl_ctrl() << "\n"
        << "  address_scrambling_control: " << p-> addr_scrmbl_ctrl()  << "\n"
        << "  LLC_SNAP_flag: " << p->llc_snap_flag() << "\n"
diff --git a/Packets/MPEGDVBBundle/DatagramSection.hh b/Packets/MPEGDVBBundle/DatagramSection.hh
index 9873b038d52d94544e55302fdc98759e7078ada8..bf5d87a32e968331fac0de7a7f903da32b11c688 100644
--- a/Packets/MPEGDVBBundle/DatagramSection.hh
+++ b/Packets/MPEGDVBBundle/DatagramSection.hh
@@ -47,33 +47,25 @@ namespace senf {
     {
 #       include SENF_FIXED_PARSER()
 
-        SENF_PARSER_INHERIT(Parse_DSMCCSection);
+        SENF_PARSER_INHERIT( Parse_DSMCCSection );
 
-        SENF_PARSE_FIELD( mac_addr_4, Parse_UInt8 );
-        SENF_PARSE_FIELD( mac_addr_3, Parse_UInt8 );
-        SENF_PARSE_FIELD( mac_addr_2, Parse_UInt8 );
-        SENF_PARSE_FIELD( mac_addr_1, Parse_UInt8 );
+        SENF_PARSER_FIELD    ( mac_addr_4          , Parse_UInt8  );
+        SENF_PARSER_FIELD    ( mac_addr_3          , Parse_UInt8  );
+        SENF_PARSER_FIELD    ( mac_addr_2          , Parse_UInt8  );
+        SENF_PARSER_FIELD    ( mac_addr_1          , Parse_UInt8  );
 
-        SENF_PARSER_FINALIZE(Parse_DatagramSection);
+        SENF_PARSER_FINALIZE( Parse_DatagramSection );
 
-        typedef Parse_UIntField < 2,  4 > Parse_payload_scrmbl_ctrl;
-        typedef Parse_UIntField < 4,  6 > Parse_addr_scrmbl_ctrl;
-        typedef Parse_Flag      <     6 > Parse_llc_snap_flag;
+        // Parse table_id_extension as two bytes
+        SENF_PARSER_GOTO( table_id_extension );
+        SENF_PARSER_FIELD    ( mac_addr_6          , Parse_UInt8  );
+        SENF_PARSER_FIELD    ( mac_addr_5          , Parse_UInt8  );
 
-        Parse_UInt8 mac_addr_6() const { return parse<Parse_UInt8>( 3 ); }
-        Parse_UInt8 mac_addr_5() const { return parse<Parse_UInt8>( 4 ); }
-
-        Parse_payload_scrmbl_ctrl payload_scrmbl_ctrl() const {
-            return parse<Parse_payload_scrmbl_ctrl>( 5 );
-        }
-
-        Parse_addr_scrmbl_ctrl addr_scrmbl_ctrl() const {
-            return parse<Parse_addr_scrmbl_ctrl>( 5 );
-        }
-
-        Parse_llc_snap_flag llc_snap_flag() const {
-            return parse<Parse_llc_snap_flag>( 5 );
-        }
+        // Divide 5 bit version_num field into several subfields.
+        SENF_PARSER_SKIP_BITS( 2 );
+        SENF_PARSER_BITFIELD ( payload_scrmbl_ctrl ,  2, unsigned );
+        SENF_PARSER_BITFIELD ( addr_scrmbl_ctrl    ,  2, unsigned );
+        SENF_PARSER_BITFIELD ( llc_snap_flag       ,  1, bool     );
     };
 
     /** \brief Datagram Section
diff --git a/Packets/MPEGDVBBundle/TLVPacket.hh b/Packets/MPEGDVBBundle/TLVPacket.hh
index 5f43f8bda2855f342de7c50a02da0c0881f7a581..f81eafd99b224ea72a71ca7297975603692c6aeb 100644
--- a/Packets/MPEGDVBBundle/TLVPacket.hh
+++ b/Packets/MPEGDVBBundle/TLVPacket.hh
@@ -88,8 +88,8 @@ namespace senf {
     {
 #       include SENF_PARSER()
         
-        SENF_PARSE_FIELD( type,   Parse_UInt32 );
-        SENF_PARSE_FIELD( length, Parse_TLVPacketLength );
+        SENF_PARSER_FIELD( type,   Parse_UInt32 );
+        SENF_PARSER_FIELD( length, Parse_TLVPacketLength );
         
         SENF_PARSER_FINALIZE(Parse_TLVPacket);
     };
diff --git a/Packets/MPEGDVBBundle/TransportPacket.hh b/Packets/MPEGDVBBundle/TransportPacket.hh
index 6aac38cbf991c1e5153d50bf1a0b2e335aaea352..7f214156b00ccacc8424698e8907741f754d437d 100644
--- a/Packets/MPEGDVBBundle/TransportPacket.hh
+++ b/Packets/MPEGDVBBundle/TransportPacket.hh
@@ -45,15 +45,15 @@ namespace senf {
     {
 #       include SENF_FIXED_PARSER()
 
-        SENF_PARSE_FIELD( sync_byte, Parse_UInt8 );
+        SENF_PARSER_FIELD( sync_byte, Parse_UInt8 );
         
-        SENF_PARSE_BITFIELD( transport_error_indicator,  1, bool     );
-        SENF_PARSE_BITFIELD( pusi,                       1, bool     );
-        SENF_PARSE_BITFIELD( transport_priority,         1, bool     );
-        SENF_PARSE_BITFIELD( pid,                       13, unsigned );
-        SENF_PARSE_BITFIELD( transport_scrmbl_ctrl,      2, unsigned );
-        SENF_PARSE_BITFIELD( adaptation_field_ctrl,      2, unsigned );
-        SENF_PARSE_BITFIELD( continuity_counter,         4, unsigned );
+        SENF_PARSER_BITFIELD( transport_error_indicator,  1, bool     );
+        SENF_PARSER_BITFIELD( pusi,                       1, bool     );
+        SENF_PARSER_BITFIELD( transport_priority,         1, bool     );
+        SENF_PARSER_BITFIELD( pid,                       13, unsigned );
+        SENF_PARSER_BITFIELD( transport_scrmbl_ctrl,      2, unsigned );
+        SENF_PARSER_BITFIELD( adaptation_field_ctrl,      2, unsigned );
+        SENF_PARSER_BITFIELD( continuity_counter,         4, unsigned );
 
         SENF_PARSER_FINALIZE( Parse_TransportPacket );
     
diff --git a/Packets/Packet.test.cc b/Packets/Packet.test.cc
index 88208f400a6086b1572471c94fff650542756b3f..baa89f0ac194ea4f608a6050ec9d7776ce0fd545 100644
--- a/Packets/Packet.test.cc
+++ b/Packets/Packet.test.cc
@@ -57,9 +57,9 @@ namespace {
     {
 #       include SENF_FIXED_PARSER()
         
-        SENF_PARSE_FIELD( type,     senf::Parse_UInt16 );
-        SENF_PARSE_FIELD( length,   senf::Parse_Int32  );
-        SENF_PARSE_FIELD( reserved, senf::Parse_UInt16 );
+        SENF_PARSER_FIELD( type,     senf::Parse_UInt16 );
+        SENF_PARSER_FIELD( length,   senf::Parse_Int32  );
+        SENF_PARSER_FIELD( reserved, senf::Parse_UInt16 );
 
         SENF_PARSER_FINALIZE(BarPacketParser);
     };
diff --git a/Packets/PacketParser.test.cc b/Packets/PacketParser.test.cc
index bde87e1186d2f7bd11db61cd9ea48e95f401c130..8be052493ca97b9bd746c023519a2a0ac927d1bf 100644
--- a/Packets/PacketParser.test.cc
+++ b/Packets/PacketParser.test.cc
@@ -49,8 +49,8 @@ namespace {
     {
 #       include SENF_FIXED_PARSER()
 
-        SENF_PARSE_FIELD( name, senf::Parse_UInt16 );
-        SENF_PARSE_FIELD( id,   senf::Parse_Int32  );
+        SENF_PARSER_FIELD( name, senf::Parse_UInt16 );
+        SENF_PARSER_FIELD( id,   senf::Parse_Int32  );
 
         SENF_PARSER_FINALIZE(FooParser);
     };
@@ -59,8 +59,8 @@ namespace {
     {
 #       include SENF_PARSER()
 
-        SENF_PARSE_FIELD( name, senf::Parse_UInt16 );
-        SENF_PARSE_FIELD( id,   senf::Parse_Int32  );
+        SENF_PARSER_FIELD( name, senf::Parse_UInt16 );
+        SENF_PARSER_FIELD( id,   senf::Parse_Int32  );
 
         SENF_PARSER_FINALIZE(BarParser);
     };
diff --git a/Packets/ParseArray.test.cc b/Packets/ParseArray.test.cc
index 0ced2cf12d2847e3a0f5ab92e550eb73ff545401..350d7d5a96e7645a0b70b20e26cc26f9d35ee456 100644
--- a/Packets/ParseArray.test.cc
+++ b/Packets/ParseArray.test.cc
@@ -44,8 +44,8 @@ namespace {
 
         typedef senf::Parse_Array<2,senf::Parse_UInt24> Parse_Array2;
         
-        SENF_PARSE_FIELD( array, Parse_Array2 );
-        SENF_PARSE_FIELD( index, senf::Parse_UInt16 );
+        SENF_PARSER_FIELD( array, Parse_Array2 );
+        SENF_PARSER_FIELD( index, senf::Parse_UInt16 );
 
         SENF_PARSER_FINALIZE(SomePacketParser);
     };
@@ -56,7 +56,7 @@ namespace {
         
         typedef senf::Parse_Array<1,SomePacketParser> Parse_Array1;
 
-        SENF_PARSE_FIELD( fields, Parse_Array1 );
+        SENF_PARSER_FIELD( fields, Parse_Array1 );
 
         SENF_PARSER_FINALIZE(SomeOtherParser);
     };
diff --git a/Packets/ParseHelpers.hh b/Packets/ParseHelpers.hh
index 46bb7b50de91dad07d03db2059b84dff6735eb71..b4eb6c44d7de874027c0cabd9eea493e55eb7abf 100644
--- a/Packets/ParseHelpers.hh
+++ b/Packets/ParseHelpers.hh
@@ -151,13 +151,19 @@
 
 #define SENF_PARSER_INHERIT     BOOST_PP_CAT( SENF_PARSER_INHERIT_     , SENF_PARSER_TYPE )
 
-#define SENF_PARSE_FIELD        BOOST_PP_CAT( SENF_PARSE_FIELD_        , SENF_PARSER_TYPE )
-#define SENF_PARSE_FIELD_RO     BOOST_PP_CAT( SENF_PARSE_FIELD_RO_     , SENF_PARSER_TYPE )
-#define SENF_PARSE_CUSTOM_FIELD BOOST_PP_CAT( SENF_PARSE_CUSTOM_FIELD_ , SENF_PARSER_TYPE )
-#define SENF_PARSE_BITFIELD     BOOST_PP_CAT( SENF_PARSE_BITFIELD_     , SENF_PARSER_TYPE )
-#define SENF_PARSE_BITFIELD_RO  BOOST_PP_CAT( SENF_PARSE_BITFIELD_RO_  , SENF_PARSER_TYPE )
+#define SENF_PARSER_FIELD        BOOST_PP_CAT( SENF_PARSER_FIELD_        , SENF_PARSER_TYPE )
+#define SENF_PARSER_FIELD_RO     BOOST_PP_CAT( SENF_PARSER_FIELD_RO_     , SENF_PARSER_TYPE )
+#define SENF_PARSER_BITFIELD     BOOST_PP_CAT( SENF_PARSER_BITFIELD_     , SENF_PARSER_TYPE )
+#define SENF_PARSER_BITFIELD_RO  BOOST_PP_CAT( SENF_PARSER_BITFIELD_RO_  , SENF_PARSER_TYPE )
+#define SENF_PARSER_CUSTOM_FIELD BOOST_PP_CAT( SENF_PARSER_CUSTOM_FIELD_ , SENF_PARSER_TYPE )
+
+#define SENF_PARSER_PRIVATE_FIELD        BOOST_PP_CAT( SENF_PARSER_P_FIELD_        , SENF_PARSER_TYPE )
+#define SENF_PARSER_PRIVATE_FIELD_RO     BOOST_PP_CAT( SENF_PARSER_P_FIELD_RO_     , SENF_PARSER_TYPE )
+#define SENF_PARSER_PRIVATE_BITFIELD     BOOST_PP_CAT( SENF_PARSER_P_BITFIELD_     , SENF_PARSER_TYPE )
+#define SENF_PARSER_PRIVATE_BITFIELD_RO  BOOST_PP_CAT( SENF_PARSER_P_BITFIELD_RO_  , SENF_PARSER_TYPE )
 
 #define SENF_PARSER_SKIP        BOOST_PP_CAT( SENF_PARSER_SKIP_        , SENF_PARSER_TYPE )
+#define SENF_PARSER_SKIP_BITS   BOOST_PP_CAT( SENF_PARSER_SKIP_BITS_   , SENF_PARSER_TYPE )
 #define SENF_PARSER_GOTO        BOOST_PP_CAT( SENF_PARSER_GOTO_        , SENF_PARSER_TYPE )
 #define SENF_PARSER_GOTO_OFFSET BOOST_PP_CAT( SENF_PARSER_GOTO_OFFSET_ , SENF_PARSER_TYPE )
 #define SENF_PARSER_LABEL       BOOST_PP_CAT( SENF_PARSER_LABEL_       , SENF_PARSER_TYPE )
diff --git a/Packets/ParseHelpers.ih b/Packets/ParseHelpers.ih
index 4b381e169d3f07f535561a623c8a56341dd4002a..dc1191c19bc2f28cc9d2ae94cc9517062c397292 100644
--- a/Packets/ParseHelpers.ih
+++ b/Packets/ParseHelpers.ih
@@ -81,13 +81,18 @@
     public:
 #
 # ///////////////////////////////////////////////////////////////////////////
-# // SENF_PARSE_FIELD_*
+# // SENF_PARSER_FIELD_*
+# // SENF_PARSER_P_FIELD_*
 #
-# define SENF_PARSE_FIELD_var(name, type)    SENF_PARSER_FIELD_I(name, type, var, rw, public)
-# define SENF_PARSE_FIELD_RO_var(name, type) SENF_PARSER_FIELD_I(name, type, var, ro, public)
+# define SENF_PARSER_FIELD_var(name, type)    SENF_PARSER_FIELD_I(name, type, var, rw, public)
+# define SENF_PARSER_FIELD_RO_var(name, type) SENF_PARSER_FIELD_I(name, type, var, ro, public)
+# define SENF_PARSER_FIELD_fix(name, type)    SENF_PARSER_FIELD_I(name, type, fix, rw, public)
+# define SENF_PARSER_FIELD_RO_fix(name, type) SENF_PARSER_FIELD_I(name, type, fix, ro, public)
 #
-# define SENF_PARSE_FIELD_fix(name, type)    SENF_PARSER_FIELD_I(name, type, fix, rw, public)
-# define SENF_PARSE_FIELD_RO_fix(name, type) SENF_PARSER_FIELD_I(name, type, fix, ro, public)
+# define SENF_PARSER_P_FIELD_var(name, type)    SENF_PARSER_FIELD_I(name, type, var, rw, private)
+# define SENF_PARSER_P_FIELD_RO_var(name, type) SENF_PARSER_FIELD_I(name, type, var, ro, private)
+# define SENF_PARSER_P_FIELD_fix(name, type)    SENF_PARSER_FIELD_I(name, type, fix, rw, private)
+# define SENF_PARSER_P_FIELD_RO_fix(name, type) SENF_PARSER_FIELD_I(name, type, fix, ro, private)
 #
 # define SENF_PARSER_FIELD_I(name, type, ofstype, rwtype, access)                                 \
     access:                                                                                       \
@@ -193,11 +198,11 @@
         }
 #
 # ///////////////////////////////////////////////////////////////////////////
-# // SENF_PARSE_CUSTOM_FIELD_*
+# // SENF_PARSER_CUSTOM_FIELD_*
 #
-# define SENF_PARSE_CUSTOM_FIELD_var(name, type, size, isize)                                     \
+# define SENF_PARSER_CUSTOM_FIELD_var(name, type, size, isize)                                     \
       SENF_PARSER_CUSTOM_FIELD_I(name, type, size, isize, var)
-# define SENF_PARSE_CUSTOM_FIELD_fix(name, type, size)                                            \
+# define SENF_PARSER_CUSTOM_FIELD_fix(name, type, size)                                            \
       SENF_PARSER_CUSTOM_FIELD_I(name, type, size, size, fix)
 #
 # define SENF_PARSER_CUSTOM_FIELD_I(name, type, size, isize, ofstype)                             \
@@ -209,18 +214,27 @@
         BOOST_PP_CAT(name, _t) name() const
 #
 # ///////////////////////////////////////////////////////////////////////////
-# // SENF_PARSE_BITFIELD_*
+# // SENF_PARSER_BITFIELD_*
+# // SENF_PARSER_P_BITFIELD_*
 #
-# define SENF_PARSE_BITFIELD_var(name, bits, type)                                                \
+# define SENF_PARSER_BITFIELD_var(name, bits, type)                                                \
       SENF_PARSER_BITFIELD_I(name, bits, type, var, rw, public)
-# define SENF_PARSE_BITFIELD_RO_var(name, bits, type)                                             \
+# define SENF_PARSER_BITFIELD_RO_var(name, bits, type)                                             \
       SENF_PARSER_BITFIELD_I(name, bits, type, var, ro, public)
-#
-# define SENF_PARSE_BITFIELD_fix(name, bits, type)                                                \
+# define SENF_PARSER_BITFIELD_fix(name, bits, type)                                                \
       SENF_PARSER_BITFIELD_I(name, bits, type, fix, rw, public)
-# define SENF_PARSE_BITFIELD_RO_fix(name, bits, type)                                             \
+# define SENF_PARSER_BITFIELD_RO_fix(name, bits, type)                                             \
       SENF_PARSER_BITFIELD_I(name, bits, type, fix, ro, public)
 #
+# define SENF_PARSER_P_BITFIELD_var(name, bits, type)                                              \
+      SENF_PARSER_BITFIELD_I(name, bits, type, var, rw, private)
+# define SENF_PARSER_P_BITFIELD_RO_var(name, bits, type)                                           \
+      SENF_PARSER_BITFIELD_I(name, bits, type, var, ro, private)
+# define SENF_PARSER_P_BITFIELD_fix(name, bits, type)                                              \
+      SENF_PARSER_BITFIELD_I(name, bits, type, fix, rw, private)
+# define SENF_PARSER_P_BITFIELD_RO_fix(name, bits, type)                                           \
+      SENF_PARSER_BITFIELD_I(name, bits, type, fix, ro, private)
+#
 # ////////////////////////////////////////
 # // SENF_PARSER_BITFIELD_I
 #
@@ -316,6 +330,15 @@
     public:
 #
 # ///////////////////////////////////////////////////////////////////////////
+# // SENF_PARSER_SKIP_BITS_*
+#
+# define SENF_PARSER_SKIP_BITS_var(bits) SENF_PARSER_I_SKIP_BITS(bits, var)
+# define SENF_PARSER_SKIP_BITS_fix(bits) SENF_PARSER_I_SKIP_BITS(bits, fix)
+#
+# define SENF_PARSER_I_SKIP_BITS(bits, ofstype)                                                   \
+      SENF_MPL_SLOT_SET(bit, SENF_MPL_SLOT_GET(bit) + bits)
+#
+# ///////////////////////////////////////////////////////////////////////////
 # // SENF_PARSER_GOTO_*
 #
 # define SENF_PARSER_GOTO_var(name)                                                               \
@@ -341,16 +364,16 @@
           SENF_PARSER_I_BITFIELD_RESET()                                                          \
           SENF_PARSER_I_FIELD_INTRO(name, void, private)                                          \
           SENF_PARSER_I_FIELD_INIT_ro(name, void, private)                                        \
-          BOOST_PP_CAT( SENF_PARSE_I_GOTO_SET_OFS_, ofstype ) (name, offset, initsize)            \
+          BOOST_PP_CAT( SENF_PARSER_I_GOTO_SET_OFS_, ofstype ) (name, offset, initsize)            \
       public:
 #
-# define SENF_PARSE_I_GOTO_SET_OFS_var(name, offs, initsize)                                      \
+# define SENF_PARSER_I_GOTO_SET_OFS_var(name, offs, initsize)                                      \
           size_type field_offset_(senf::mpl::rv<BOOST_PP_CAT(name,_index)>*) const {              \
               return offs;                                                                        \
           }                                                                                       \
           SENF_MPL_SLOT_SET(init_bytes, initsize);
 #
-# define SENF_PARSE_I_GOTO_SET_OFS_fix(name, offs, initsize)                                      \
+# define SENF_PARSER_I_GOTO_SET_OFS_fix(name, offs, initsize)                                      \
           SENF_MPL_SLOT_SET(offset, offs);
 #
 # ///////////////////////////////////////////////////////////////////////////
diff --git a/Packets/ParseHelpers.test.cc b/Packets/ParseHelpers.test.cc
index 6d69414916da09a3a82f9ddeea3ab61f54d6bfb6..3d42cff6dca767fb99d43bd245f5a1580eaf1bc3 100644
--- a/Packets/ParseHelpers.test.cc
+++ b/Packets/ParseHelpers.test.cc
@@ -41,31 +41,35 @@ namespace {
     {
 #       include SENF_FIXED_PARSER()
 
-        SENF_PARSE_FIELD        ( normalField          , senf::Parse_UInt16 );
-        SENF_PARSE_FIELD_RO     ( roField              , senf::Parse_UInt16 );
+        SENF_PARSER_FIELD        ( normalField          , senf::Parse_UInt16 );
+        SENF_PARSER_FIELD_RO     ( roField              , senf::Parse_UInt16 );
 
-        SENF_PARSE_CUSTOM_FIELD ( customField          , int, 2             ) {
+        SENF_PARSER_CUSTOM_FIELD ( customField          , int, 2             ) {
             return parse<senf::Parse_UInt16>(customField_offset);
         }
         
-        SENF_PARSE_BITFIELD     ( signedBitfield       , 4, signed          );
-        SENF_PARSE_BITFIELD     ( unsignedBitfield     , 3, unsigned        );
-        SENF_PARSE_BITFIELD     ( boolBitfield         , 1, bool            );
+        SENF_PARSER_BITFIELD     ( signedBitfield       , 4, signed          );
+        SENF_PARSER_BITFIELD     ( unsignedBitfield     , 3, unsigned        );
+        SENF_PARSER_BITFIELD     ( boolBitfield         , 1, bool            );
 
-        SENF_PARSE_BITFIELD_RO  ( roSignedBitfield     , 4, signed          );
-        SENF_PARSE_BITFIELD_RO  ( roUnsignedBitfield   , 3, unsigned        );
-        SENF_PARSE_BITFIELD_RO  ( roBoolBitfield       , 1, bool            );
+        SENF_PARSER_BITFIELD_RO  ( roSignedBitfield     , 4, signed          );
+        SENF_PARSER_BITFIELD_RO  ( roUnsignedBitfield   , 3, unsigned        );
+        SENF_PARSER_BITFIELD_RO  ( roBoolBitfield       , 1, bool            );
 
         SENF_PARSER_LABEL( end );
         SENF_PARSER_GOTO( roField );
 
-        SENF_PARSE_FIELD        ( overlayOfRoField     , senf::Parse_Int16  );
+        SENF_PARSER_FIELD        ( overlayOfRoField     , senf::Parse_Int16  );
         SENF_PARSER_SKIP( 2 );
-        SENF_PARSE_FIELD        ( overlayOfBitfield    , senf::Parse_UInt8  );
+        SENF_PARSER_FIELD        ( overlayOfBitfield    , senf::Parse_UInt8  );
 
         SENF_PARSER_GOTO_OFFSET( 1 );
 
-        SENF_PARSE_FIELD        ( lowbyteOfNormalField , senf::Parse_UInt8  );
+        SENF_PARSER_PRIVATE_FIELD ( privLowbyteOfNormalField , senf::Parse_UInt8  );
+
+        unsigned lowbyteOfNormalField() { 
+            return privLowbyteOfNormalField();
+        }
 
         SENF_PARSER_GOTO( end );
 
@@ -78,12 +82,12 @@ namespace {
 
         SENF_PARSER_INHERIT( FixedBaseParser );
         
-        SENF_PARSE_FIELD        ( derivedField         , senf::Parse_UInt16 );
+        SENF_PARSER_FIELD        ( derivedField         , senf::Parse_UInt16 );
 
         SENF_PARSER_LABEL( end );
         SENF_PARSER_GOTO( signedBitfield );
 
-        SENF_PARSE_FIELD        ( anotherOverlay       , senf::Parse_UInt16 );
+        SENF_PARSER_FIELD        ( anotherOverlay       , senf::Parse_UInt16 );
         
         SENF_PARSER_GOTO( end );
 
@@ -147,31 +151,35 @@ namespace {
     {
 #       include SENF_PARSER()
 
-        SENF_PARSE_FIELD        ( normalField          , senf::Parse_UInt16 );
-        SENF_PARSE_FIELD_RO     ( roField              , senf::Parse_UInt16 );
+        SENF_PARSER_FIELD        ( normalField              , senf::Parse_UInt16 );
+        SENF_PARSER_FIELD_RO     ( roField                  , senf::Parse_UInt16 );
 
-        SENF_PARSE_CUSTOM_FIELD ( customField          , int, 2, 2          ) {
+        SENF_PARSER_CUSTOM_FIELD ( customField              , int, 2, 2          ) {
             return parse<senf::Parse_UInt16>(customField_offset());
         }
         
-        SENF_PARSE_BITFIELD     ( signedBitfield       , 4, signed          );
-        SENF_PARSE_BITFIELD     ( unsignedBitfield     , 3, unsigned        );
-        SENF_PARSE_BITFIELD     ( boolBitfield         , 1, bool            );
+        SENF_PARSER_BITFIELD      ( signedBitfield           , 4, signed          );
+        SENF_PARSER_BITFIELD      ( unsignedBitfield         , 3, unsigned        );
+        SENF_PARSER_BITFIELD      ( boolBitfield             , 1, bool            );
 
-        SENF_PARSE_BITFIELD_RO  ( roSignedBitfield     , 4, signed          );
-        SENF_PARSE_BITFIELD_RO  ( roUnsignedBitfield   , 3, unsigned        );
-        SENF_PARSE_BITFIELD_RO  ( roBoolBitfield       , 1, bool            );
+        SENF_PARSER_BITFIELD_RO   ( roSignedBitfield         , 4, signed          );
+        SENF_PARSER_BITFIELD_RO   ( roUnsignedBitfield       , 3, unsigned        );
+        SENF_PARSER_BITFIELD_RO   ( roBoolBitfield           , 1, bool            );
 
         SENF_PARSER_LABEL( end );
         SENF_PARSER_GOTO( roField );
 
-        SENF_PARSE_FIELD        ( overlayOfRoField     , senf::Parse_Int16  );
+        SENF_PARSER_FIELD         ( overlayOfRoField         , senf::Parse_Int16  );
         SENF_PARSER_SKIP( 2, 2 );
-        SENF_PARSE_FIELD        ( overlayOfBitfield    , senf::Parse_UInt8  );
+        SENF_PARSER_FIELD         ( overlayOfBitfield        , senf::Parse_UInt8  );
 
         SENF_PARSER_GOTO_OFFSET( 1, 1 );
 
-        SENF_PARSE_FIELD        ( lowbyteOfNormalField , senf::Parse_UInt8  );
+        SENF_PARSER_PRIVATE_FIELD ( privLowbyteOfNormalField , senf::Parse_UInt8  );
+
+        unsigned lowbyteOfNormalField() { 
+            return privLowbyteOfNormalField();
+        }
 
         SENF_PARSER_GOTO( end );
 
@@ -184,12 +192,12 @@ namespace {
 
         SENF_PARSER_INHERIT( VariableBaseParser );
         
-        SENF_PARSE_FIELD        ( derivedField         , senf::Parse_UInt16 );
+        SENF_PARSER_FIELD        ( derivedField         , senf::Parse_UInt16 );
 
         SENF_PARSER_LABEL( end );
         SENF_PARSER_GOTO( signedBitfield );
 
-        SENF_PARSE_FIELD        ( anotherOverlay       , senf::Parse_UInt16 );
+        SENF_PARSER_FIELD        ( anotherOverlay       , senf::Parse_UInt16 );
         
         SENF_PARSER_GOTO( end );
 
diff --git a/doclib/Doxyfile.global b/doclib/Doxyfile.global
index 87f3c3137d0ae7cf6b900c607730a95a167f8408..c91d4a17260e108c9108ccdfd3c8cedbb683d816 100644
--- a/doclib/Doxyfile.global
+++ b/doclib/Doxyfile.global
@@ -29,14 +29,23 @@ MACRO_EXPANSION        = YES
 EXPAND_ONLY_PREDEF     = YES
 PREDEFINED             = DOXYGEN \
                          "SENF_PPI_MODULE(x)=" \
-                         "SENF_PARSE_FIELD(name,type)=type name()" \
-                         "SENF_PARSE_FIELD_RO(name,type)=type::value_type name()" \
-                         "SENF_PARSE_FIELD_AFTER(name,type,prev)=type name()" \
-                         "SENF_PARSE_FIELD_AFTER_RO(name,type,prev)=type::value_type name()" \
-                         "SENF_PARSE_BITFIELD(name, bits, type)=type ## _ ## bits name()" \
-                         "SENF_PARSE_BITFIELD_RO(name, bits, type)=type ## _ ## bits name()" \
+                         "SENF_PARSER_FIELD(name,type)=type name() const" \
+                         "SENF_PARSER_FIELD_RO(name,type)=type::value_type name() const" \
+                         "SENF_PARSER_FIELD_AFTER(name,type,prev)=type name() const" \
+                         "SENF_PARSER_FIELD_AFTER_RO(name,type,prev)=type::value_type name() const" \
+                         "SENF_PARSER_BITFIELD(name, bits, type)=senf::ParseField_ ## type name() const" \
+                         "SENF_PARSER_BITFIELD_RO(name, bits, type)=type ## _ ## bits name() const" \
+                         "SENF_PARSER_INHERIT(name)=" \
                          "SENF_PARSER_FINALIZE(name)=" \
-                         "SENF_PARSER_INIT()=void init()"
+                         "SENF_PARSER_INIT()=void init()" \
+                         "SENF_PARSER_SKIP(x)=" \
+                         "SENF_PARSER_SKIP_BITS(x)=" \
+                         "SENF_PARSER_GOTO(x)=" \
+                         "SENF_PARSER_GOTO_OFFSET(x)=" \
+                         "SENF_PARSER_LABEL(x)=" \
+                         "ParseField_unsigned=Parse_UIntField" \
+                         "ParseField_signed=Parse_IntField" \
+                         "ParseField_bool=Parse_Flag"
 EXPAND_AS_DEFINED      = prefix_
 
 HTML_HEADER            = "$(TOPDIR)/doclib/doxy-header.html"