You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2019/01/01 22:02:48 UTC

[directory-ldap-api] branch master updated: Renamed the LdapMessageContainerDirect to LdapMessageContainer

This is an automated email from the ASF dual-hosted git repository.

elecharny pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/directory-ldap-api.git


The following commit(s) were added to refs/heads/master by this push:
     new ef9080f  Renamed the LdapMessageContainerDirect to LdapMessageContainer
ef9080f is described below

commit ef9080f80c8df61b17f3d30abf105b1e5ed6e164
Author: Emmanuel Lecharny <el...@apache.org>
AuthorDate: Tue Jan 1 23:02:45 2019 +0100

    Renamed the LdapMessageContainerDirect to LdapMessageContainer
---
 .../ldap/client/api/LdapNetworkConnection.java     |  14 +-
 .../api/ldap/codec/LdapMessageGrammar.java         |   8 +-
 .../api/ldap/codec/actions/AllowGrammarEnd.java    |   6 +-
 .../api/ldap/codec/actions/CheckLengthNotNull.java |   6 +-
 .../ldap/codec/actions/controls/InitControls.java  |   6 +-
 .../actions/controls/StoreControlCriticality.java  |   6 +-
 .../codec/actions/controls/StoreControlName.java   |   6 +-
 .../codec/actions/controls/StoreControlValue.java  |   6 +-
 .../codec/actions/ldapMessage/InitLdapMessage.java |   6 +-
 .../codec/actions/ldapMessage/StoreMessageId.java  |   6 +-
 .../ldap/codec/actions/ldapResult/AddReferral.java |   6 +-
 .../codec/actions/ldapResult/InitReferrals.java    |   6 +-
 .../actions/ldapResult/StoreErrorMessage.java      |   6 +-
 .../codec/actions/ldapResult/StoreMatchedDN.java   |   6 +-
 .../codec/actions/ldapResult/StoreResultCode.java  |   6 +-
 .../request/abandon/InitAbandonRequest.java        |   6 +-
 .../request/add/AddAddRequestAttributeType.java    |   6 +-
 .../actions/request/add/AddAttributeValue.java     |   6 +-
 .../codec/actions/request/add/InitAddRequest.java  |   6 +-
 .../request/add/StoreAddRequestEntryName.java      |   6 +-
 .../actions/request/bind/InitBindRequest.java      |   6 +-
 .../codec/actions/request/bind/InitSaslBind.java   |   6 +-
 .../ldap/codec/actions/request/bind/StoreName.java |   6 +-
 .../actions/request/bind/StoreSaslCredentials.java |   6 +-
 .../actions/request/bind/StoreSaslMechanism.java   |   6 +-
 .../actions/request/bind/StoreSimpleAuth.java      |   6 +-
 .../codec/actions/request/bind/StoreVersion.java   |   6 +-
 .../request/compare/InitCompareRequest.java        |   6 +-
 .../compare/StoreCompareRequestAssertionValue.java |   6 +-
 .../compare/StoreCompareRequestAttributeDesc.java  |   6 +-
 .../compare/StoreCompareRequestEntryName.java      |   6 +-
 .../codec/actions/request/del/InitDelRequest.java  |   6 +-
 .../request/extended/InitExtendedRequest.java      |   6 +-
 .../request/extended/StoreExtendedRequestName.java |   6 +-
 .../extended/StoreExtendedRequestValue.java        |   6 +-
 .../request/modify/AddModifyRequestAttribute.java  |   6 +-
 .../actions/request/modify/InitAttributeVals.java  |   6 +-
 .../actions/request/modify/InitModifyRequest.java  |   6 +-
 .../modify/StoreModifyRequestAttributeValue.java   |   6 +-
 .../modify/StoreModifyRequestObjectName.java       |   6 +-
 .../actions/request/modify/StoreOperationType.java |   6 +-
 .../request/modifydn/InitModifyDnRequest.java      |   6 +-
 .../modifydn/StoreModifyDnRequestDeleteOldRdn.java |   6 +-
 .../modifydn/StoreModifyDnRequestEntryName.java    |   6 +-
 .../modifydn/StoreModifyDnRequestNewRdn.java       |   6 +-
 .../modifydn/StoreModifyDnRequestNewSuperior.java  |   6 +-
 .../actions/request/search/InitSearchRequest.java  |   6 +-
 .../search/InitSearchRequestAttributeDescList.java |   6 +-
 .../search/StoreSearchRequestAttributeDesc.java    |   6 +-
 .../search/StoreSearchRequestBaseObject.java       |   6 +-
 .../search/StoreSearchRequestDerefAlias.java       |   6 +-
 .../request/search/StoreSearchRequestScope.java    |   6 +-
 .../search/StoreSearchRequestSizeLimit.java        |   6 +-
 .../search/StoreSearchRequestTimeLimit.java        |   6 +-
 .../search/StoreSearchRequestTypesOnly.java        |   6 +-
 .../request/search/filter/InitAndFilter.java       |   6 +-
 .../search/filter/InitApproxMatchFilter.java       |   6 +-
 .../search/filter/InitAssertionValueFilter.java    |   6 +-
 .../search/filter/InitAttributeDescFilter.java     |   6 +-
 .../search/filter/InitEqualityMatchFilter.java     |   6 +-
 .../search/filter/InitExtensibleMatchFilter.java   |   6 +-
 .../search/filter/InitGreaterOrEqualFilter.java    |   6 +-
 .../search/filter/InitLessOrEqualFilter.java       |   6 +-
 .../request/search/filter/InitNotFilter.java       |   6 +-
 .../request/search/filter/InitOrFilter.java        |   6 +-
 .../request/search/filter/InitPresentFilter.java   |   6 +-
 .../search/filter/InitSubstringsFilter.java        |   6 +-
 .../actions/request/search/filter/StoreAny.java    |   6 +-
 .../actions/request/search/filter/StoreFinal.java  |   6 +-
 .../request/search/filter/StoreInitial.java        |   6 +-
 .../request/search/filter/StoreMatchValue.java     |   6 +-
 .../filter/StoreMatchingRuleDnAttributes.java      |   6 +-
 .../request/search/filter/StoreMatchingRuleId.java |   6 +-
 .../search/filter/StoreMatchingRuleType.java       |   6 +-
 .../search/filter/StoreSubstringFilterType.java    |   6 +-
 .../actions/request/unbind/InitUnbindRequest.java  |   6 +-
 .../actions/response/add/InitAddResponse.java      |   6 +-
 .../actions/response/bind/InitBindResponse.java    |   6 +-
 .../response/bind/StoreServerSASLCreds.java        |   6 +-
 .../response/compare/InitCompareResponse.java      |   6 +-
 .../actions/response/del/InitDelResponse.java      |   6 +-
 .../response/extended/InitExtendedResponse.java    |   6 +-
 .../extended/StoreExtendedResponseName.java        |   8 +-
 .../extended/StoreExtendedResponseValue.java       |   6 +-
 .../intermediate/InitIntermediateResponse.java     |   6 +-
 .../StoreIntermediateResponseName.java             |   6 +-
 .../StoreIntermediateResponseValue.java            |   6 +-
 .../response/modify/InitModifyResponse.java        |   6 +-
 .../response/modifydn/InitModifyDnResponse.java    |   6 +-
 .../response/search/done/InitSearchResultDone.java |   6 +-
 .../response/search/entry/AddAttributeType.java    |   6 +-
 .../search/entry/InitSearchResultEntry.java        |   6 +-
 .../entry/StoreSearchResultAttributeValue.java     |   6 +-
 .../entry/StoreSearchResultEntryObjectName.java    |   6 +-
 .../reference/InitSearchResultReference.java       |   6 +-
 .../response/search/reference/StoreReference.java  |   6 +-
 .../directory/api/ldap/codec/api/LdapDecoder.java  |   2 +-
 .../api/ldap/codec/api/LdapMessageContainer.java   | 349 ++++++++++++-
 .../ldap/codec/api/LdapMessageContainerDirect.java | 544 ---------------------
 .../directory/api/ldap/codec/LdapControlTest.java  |  16 +-
 .../directory/api/ldap/codec/LdapDecoderTest.java  |  20 +-
 .../directory/api/ldap/codec/LdapMessageTest.java  |  14 +-
 .../directory/api/ldap/codec/LdapResultTest.java   |  22 +-
 .../api/ldap/codec/abandon/AbandonRequestTest.java |  14 +-
 .../api/ldap/codec/add/AddRequestTest.java         |  24 +-
 .../api/ldap/codec/add/AddResponseTest.java        |   8 +-
 .../api/ldap/codec/bind/BindRequestTest.java       |  42 +-
 .../api/ldap/codec/bind/BindResponseTest.java      |  14 +-
 .../api/ldap/codec/compare/CompareRequestTest.java |  18 +-
 .../ldap/codec/compare/CompareResponseTest.java    |   8 +-
 .../api/ldap/codec/del/DelRequestTest.java         |  10 +-
 .../api/ldap/codec/del/DelResponseTest.java        |   8 +-
 .../intermediate/IntermediateResponseTest.java     |  42 +-
 .../api/ldap/codec/modify/ModifyRequestTest.java   |  40 +-
 .../api/ldap/codec/modify/ModifyResponseTest.java  |   8 +-
 .../ldap/codec/modifyDn/ModifyDNRequestTest.java   |  24 +-
 .../ldap/codec/modifyDn/ModifyDNResponseTest.java  |   8 +-
 .../SearchRequestMatchingRuleAssertionTest.java    |  22 +-
 .../codec/search/SearchRequestSubstringTest.java   |  46 +-
 .../api/ldap/codec/search/SearchRequestTest.java   | 204 ++++----
 .../ldap/codec/search/SearchResultDoneTest.java    |  10 +-
 .../ldap/codec/search/SearchResultEntryTest.java   |  74 +--
 .../codec/search/SearchResultReferenceTest.java    |  18 +-
 .../api/ldap/codec/unbind/UnBindRequestTest.java   |   8 +-
 .../ldap/extras/extended/ExtendedRequestTest.java  |  18 +-
 .../ldap/extras/extended/ExtendedResponseTest.java |  24 +-
 .../codec/protocol/mina/LdapProtocolDecoder.java   |   8 +-
 127 files changed, 1017 insertions(+), 1238 deletions(-)

diff --git a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java
index 44cf8eb..596cbf7 100644
--- a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java
+++ b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java
@@ -61,7 +61,7 @@ import org.apache.directory.api.ldap.codec.api.ExtendedOperationFactory;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.codec.api.LdapApiServiceFactory;
 import org.apache.directory.api.ldap.codec.api.LdapDecoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.api.MessageEncoderException;
 import org.apache.directory.api.ldap.codec.api.SchemaBinaryAttributeDetector;
 import org.apache.directory.api.ldap.extras.extended.startTls.StartTlsRequestImpl;
@@ -894,8 +894,8 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
 
         // Store the container into the session if we don't have one
         @SuppressWarnings("unchecked")
-        LdapMessageContainerDirect<? extends Message> container =
-            ( LdapMessageContainerDirect<? extends Message> ) ldapSession
+        LdapMessageContainer<? extends Message> container =
+            ( LdapMessageContainer<? extends Message> ) ldapSession
                 .getAttribute( LdapDecoder.MESSAGE_CONTAINER_ATTR );
 
         if ( container != null )
@@ -915,7 +915,7 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
             }
 
             ldapSession.setAttribute( LdapDecoder.MESSAGE_CONTAINER_ATTR,
-                new LdapMessageContainerDirect<Message>( codec, atDetector ) );
+                new LdapMessageContainer<Message>( codec, atDetector ) );
         }
 
         // Initialize the MessageId
@@ -4333,7 +4333,7 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
 
             // Change the container's BinaryDetector
             ldapSession.setAttribute( LdapDecoder.MESSAGE_CONTAINER_ATTR,
-                new LdapMessageContainerDirect<>( codec,
+                new LdapMessageContainer<>( codec,
                     new SchemaBinaryAttributeDetector( schemaManager ) ) );
 
         }
@@ -4576,8 +4576,8 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
     public void sessionCreated( IoSession session ) throws Exception
     {
         // Last, store the message container
-        LdapMessageContainerDirect<Message> ldapMessageContainer =
-            new LdapMessageContainerDirect<>(
+        LdapMessageContainer<Message> ldapMessageContainer =
+            new LdapMessageContainer<>(
                 codec, config.getBinaryAttributeDetector() );
 
         session.setAttribute( LdapDecoder.MESSAGE_CONTAINER_ATTR, ldapMessageContainer );
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/LdapMessageGrammar.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/LdapMessageGrammar.java
index 930e925..d8df38f 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/LdapMessageGrammar.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/LdapMessageGrammar.java
@@ -126,7 +126,7 @@ import org.apache.directory.api.ldap.codec.actions.response.search.entry.StoreSe
 import org.apache.directory.api.ldap.codec.actions.response.search.reference.InitSearchResultReference;
 import org.apache.directory.api.ldap.codec.actions.response.search.reference.StoreReference;
 import org.apache.directory.api.ldap.codec.api.LdapCodecConstants;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.AbstractMessage;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
 import org.slf4j.Logger;
@@ -141,13 +141,13 @@ import org.slf4j.LoggerFactory;
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
 public final class LdapMessageGrammar extends
-    AbstractGrammar<LdapMessageContainerDirect<AbstractMessage>>
+    AbstractGrammar<LdapMessageContainer<AbstractMessage>>
 {
     /** The logger */
     static final Logger LOG = LoggerFactory.getLogger( LdapMessageGrammar.class );
 
     /** The instance of grammar. LdapMessageGrammar is a singleton */
-    private static Grammar<LdapMessageContainerDirect<AbstractMessage>> instance =
+    private static Grammar<LdapMessageContainer<AbstractMessage>> instance =
         new LdapMessageGrammar();
 
 
@@ -3777,7 +3777,7 @@ public final class LdapMessageGrammar extends
                 LdapStatesEnum.TYPE_SUBSTRING_STATE,
                 LdapStatesEnum.SUBSTRINGS_STATE,
                 SEQUENCE,
-                new CheckNotNullLength<LdapMessageContainerDirect<SearchRequest>>() );
+                new CheckNotNullLength<LdapMessageContainer<SearchRequest>>() );
 
         // --------------------------------------------------------------------------------------------
         // Transition from substrings to Initial
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/AllowGrammarEnd.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/AllowGrammarEnd.java
index 5c0be61..7034b99 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/AllowGrammarEnd.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/AllowGrammarEnd.java
@@ -21,7 +21,7 @@ package org.apache.directory.api.ldap.codec.actions;
 
 
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.Message;
 
 
@@ -30,7 +30,7 @@ import org.apache.directory.api.ldap.model.message.Message;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class AllowGrammarEnd extends GrammarAction<LdapMessageContainerDirect<Message>>
+public class AllowGrammarEnd extends GrammarAction<LdapMessageContainer<Message>>
 {
     /**
      * Instantiates a new value action.
@@ -44,7 +44,7 @@ public class AllowGrammarEnd extends GrammarAction<LdapMessageContainerDirect<Me
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<Message> container )
+    public void action( LdapMessageContainer<Message> container )
     {
         container.setGrammarEndAllowed( true );
     }
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/CheckLengthNotNull.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/CheckLengthNotNull.java
index c99de8b..9d481ea 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/CheckLengthNotNull.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/CheckLengthNotNull.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.Message;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -35,7 +35,7 @@ import org.slf4j.LoggerFactory;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class CheckLengthNotNull extends GrammarAction<LdapMessageContainerDirect<Message>>
+public class CheckLengthNotNull extends GrammarAction<LdapMessageContainer<Message>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( CheckLengthNotNull.class );
@@ -53,7 +53,7 @@ public class CheckLengthNotNull extends GrammarAction<LdapMessageContainerDirect
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<Message> container ) throws DecoderException
+    public void action( LdapMessageContainer<Message> container ) throws DecoderException
     {
         TLV tlv = container.getCurrentTLV();
         int expectedLength = tlv.getLength();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/InitControls.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/InitControls.java
index e3926f7..8112f5d 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/InitControls.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/InitControls.java
@@ -23,7 +23,7 @@ package org.apache.directory.api.ldap.codec.actions.controls;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.Message;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -40,7 +40,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitControls extends GrammarAction<LdapMessageContainerDirect<Message>>
+public class InitControls extends GrammarAction<LdapMessageContainer<Message>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitControls.class );
@@ -58,7 +58,7 @@ public class InitControls extends GrammarAction<LdapMessageContainerDirect<Messa
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<Message> container )
+    public void action( LdapMessageContainer<Message> container )
     {
         TLV tlv = container.getCurrentTLV();
         int expectedLength = tlv.getLength();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/StoreControlCriticality.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/StoreControlCriticality.java
index d3c789e..390cbc2 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/StoreControlCriticality.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/StoreControlCriticality.java
@@ -27,7 +27,7 @@ import org.apache.directory.api.asn1.ber.tlv.BooleanDecoder;
 import org.apache.directory.api.asn1.ber.tlv.BooleanDecoderException;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.Message;
 import org.apache.directory.api.util.Strings;
@@ -46,7 +46,7 @@ import org.slf4j.LoggerFactory;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreControlCriticality extends GrammarAction<LdapMessageContainerDirect<Message>>
+public class StoreControlCriticality extends GrammarAction<LdapMessageContainer<Message>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreControlCriticality.class );
@@ -64,7 +64,7 @@ public class StoreControlCriticality extends GrammarAction<LdapMessageContainerD
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<Message> container ) throws DecoderException
+    public void action( LdapMessageContainer<Message> container ) throws DecoderException
     {
         TLV tlv = container.getCurrentTLV();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/StoreControlName.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/StoreControlName.java
index cf00b01..9032abe 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/StoreControlName.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/StoreControlName.java
@@ -27,7 +27,7 @@ import org.apache.directory.api.asn1.util.Oid;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.ControlFactory;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.Message;
 import org.apache.directory.api.ldap.model.message.Request;
@@ -47,7 +47,7 @@ import org.slf4j.LoggerFactory;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreControlName extends GrammarAction<LdapMessageContainerDirect<Message>>
+public class StoreControlName extends GrammarAction<LdapMessageContainer<Message>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreControlName.class );
@@ -65,7 +65,7 @@ public class StoreControlName extends GrammarAction<LdapMessageContainerDirect<M
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<Message> container ) throws DecoderException
+    public void action( LdapMessageContainer<Message> container ) throws DecoderException
     {
         TLV tlv = container.getCurrentTLV();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/StoreControlValue.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/StoreControlValue.java
index 19408fa..18f519f 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/StoreControlValue.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/StoreControlValue.java
@@ -26,7 +26,7 @@ import org.apache.directory.api.asn1.ber.tlv.BerValue;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.ControlFactory;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.Message;
 import org.apache.directory.api.util.Strings;
@@ -46,7 +46,7 @@ import org.slf4j.LoggerFactory;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreControlValue extends GrammarAction<LdapMessageContainerDirect<Message>>
+public class StoreControlValue extends GrammarAction<LdapMessageContainer<Message>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreControlValue.class );
@@ -65,7 +65,7 @@ public class StoreControlValue extends GrammarAction<LdapMessageContainerDirect<
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<Message> container ) throws DecoderException
+    public void action( LdapMessageContainer<Message> container ) throws DecoderException
     {
         TLV tlv = container.getCurrentTLV();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapMessage/InitLdapMessage.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapMessage/InitLdapMessage.java
index 6e37601..c185fe2 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapMessage/InitLdapMessage.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapMessage/InitLdapMessage.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.Message;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -41,7 +41,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitLdapMessage extends GrammarAction<LdapMessageContainerDirect<Message>>
+public class InitLdapMessage extends GrammarAction<LdapMessageContainer<Message>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitLdapMessage.class );
@@ -60,7 +60,7 @@ public class InitLdapMessage extends GrammarAction<LdapMessageContainerDirect<Me
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<Message> container ) throws DecoderException
+    public void action( LdapMessageContainer<Message> container ) throws DecoderException
     {
         TLV tlv = container.getCurrentTLV();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapMessage/StoreMessageId.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapMessage/StoreMessageId.java
index ffc2cfe..8a138af 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapMessage/StoreMessageId.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapMessage/StoreMessageId.java
@@ -27,7 +27,7 @@ import org.apache.directory.api.asn1.ber.tlv.IntegerDecoder;
 import org.apache.directory.api.asn1.ber.tlv.IntegerDecoderException;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.Message;
 import org.apache.directory.api.util.Strings;
 import org.slf4j.Logger;
@@ -50,7 +50,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreMessageId extends GrammarAction<LdapMessageContainerDirect<Message>>
+public class StoreMessageId extends GrammarAction<LdapMessageContainer<Message>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreMessageId.class );
@@ -69,7 +69,7 @@ public class StoreMessageId extends GrammarAction<LdapMessageContainerDirect<Mes
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<Message> container ) throws DecoderException
+    public void action( LdapMessageContainer<Message> container ) throws DecoderException
     {
         // The current TLV should be a integer
         // We get it and store it in MessageId
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/AddReferral.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/AddReferral.java
index f870e9f..1c0fd1a 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/AddReferral.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/AddReferral.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.exception.LdapURLEncodingException;
 import org.apache.directory.api.ldap.model.message.LdapResult;
 import org.apache.directory.api.ldap.model.message.Message;
@@ -45,7 +45,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class AddReferral extends GrammarAction<LdapMessageContainerDirect<Message>>
+public class AddReferral extends GrammarAction<LdapMessageContainer<Message>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( AddReferral.class );
@@ -64,7 +64,7 @@ public class AddReferral extends GrammarAction<LdapMessageContainerDirect<Messag
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<Message> container ) throws DecoderException
+    public void action( LdapMessageContainer<Message> container ) throws DecoderException
     {
         TLV tlv = container.getCurrentTLV();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/InitReferrals.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/InitReferrals.java
index ac3e649..b99d7ba 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/InitReferrals.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/InitReferrals.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.LdapResult;
 import org.apache.directory.api.ldap.model.message.Message;
 import org.apache.directory.api.ldap.model.message.Referral;
@@ -43,7 +43,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitReferrals extends GrammarAction<LdapMessageContainerDirect<Message>>
+public class InitReferrals extends GrammarAction<LdapMessageContainer<Message>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitReferrals.class );
@@ -61,7 +61,7 @@ public class InitReferrals extends GrammarAction<LdapMessageContainerDirect<Mess
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<Message> container ) throws DecoderException
+    public void action( LdapMessageContainer<Message> container ) throws DecoderException
     {
         TLV tlv = container.getCurrentTLV();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/StoreErrorMessage.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/StoreErrorMessage.java
index 0199a17..7748a1e 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/StoreErrorMessage.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/StoreErrorMessage.java
@@ -23,7 +23,7 @@ package org.apache.directory.api.ldap.codec.actions.ldapResult;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.LdapResult;
 import org.apache.directory.api.ldap.model.message.Message;
 import org.apache.directory.api.util.Strings;
@@ -42,7 +42,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreErrorMessage extends GrammarAction<LdapMessageContainerDirect<Message>>
+public class StoreErrorMessage extends GrammarAction<LdapMessageContainer<Message>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreErrorMessage.class );
@@ -60,7 +60,7 @@ public class StoreErrorMessage extends GrammarAction<LdapMessageContainerDirect<
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<Message> container )
+    public void action( LdapMessageContainer<Message> container )
     {
         // Get the Value and store it in the BindResponse
         TLV tlv = container.getCurrentTLV();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/StoreMatchedDN.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/StoreMatchedDN.java
index 755c98e..6d9d0fc 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/StoreMatchedDN.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/StoreMatchedDN.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.exception.LdapInvalidDnException;
 import org.apache.directory.api.ldap.model.message.LdapResult;
 import org.apache.directory.api.ldap.model.message.Message;
@@ -46,7 +46,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreMatchedDN extends GrammarAction<LdapMessageContainerDirect<Message>>
+public class StoreMatchedDN extends GrammarAction<LdapMessageContainer<Message>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreMatchedDN.class );
@@ -64,7 +64,7 @@ public class StoreMatchedDN extends GrammarAction<LdapMessageContainerDirect<Mes
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<Message> container ) throws DecoderException
+    public void action( LdapMessageContainer<Message> container ) throws DecoderException
     {
         // Get the Value and store it in the BindResponse
         TLV tlv = container.getCurrentTLV();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/StoreResultCode.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/StoreResultCode.java
index 12ef847..00c8197 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/StoreResultCode.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/StoreResultCode.java
@@ -27,7 +27,7 @@ import org.apache.directory.api.asn1.ber.tlv.IntegerDecoder;
 import org.apache.directory.api.asn1.ber.tlv.IntegerDecoderException;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.LdapResult;
 import org.apache.directory.api.ldap.model.message.LdapResultImpl;
 import org.apache.directory.api.ldap.model.message.Message;
@@ -47,7 +47,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreResultCode extends GrammarAction<LdapMessageContainerDirect<Message>>
+public class StoreResultCode extends GrammarAction<LdapMessageContainer<Message>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreResultCode.class );
@@ -65,7 +65,7 @@ public class StoreResultCode extends GrammarAction<LdapMessageContainerDirect<Me
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<Message> container ) throws DecoderException
+    public void action( LdapMessageContainer<Message> container ) throws DecoderException
     {
         // The current TLV should be a integer
         // We get it and store it in MessageId
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/abandon/InitAbandonRequest.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/abandon/InitAbandonRequest.java
index 5272e2a..bd19806 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/abandon/InitAbandonRequest.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/abandon/InitAbandonRequest.java
@@ -27,7 +27,7 @@ import org.apache.directory.api.asn1.ber.tlv.IntegerDecoder;
 import org.apache.directory.api.asn1.ber.tlv.IntegerDecoderException;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.AbandonRequest;
 import org.apache.directory.api.ldap.model.message.AbandonRequestImpl;
 import org.apache.directory.api.util.Strings;
@@ -43,7 +43,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitAbandonRequest extends GrammarAction<LdapMessageContainerDirect<AbandonRequest>>
+public class InitAbandonRequest extends GrammarAction<LdapMessageContainer<AbandonRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitAbandonRequest.class );
@@ -62,7 +62,7 @@ public class InitAbandonRequest extends GrammarAction<LdapMessageContainerDirect
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<AbandonRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<AbandonRequest> container ) throws DecoderException
     {
         // Create the AbandonRequest LdapMessage instance and store it in the container
         AbandonRequest abandonRequest = new AbandonRequestImpl();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/add/AddAddRequestAttributeType.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/add/AddAddRequestAttributeType.java
index 5fcfb0d..fe57e54 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/add/AddAddRequestAttributeType.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/add/AddAddRequestAttributeType.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.api.ResponseCarryingException;
 import org.apache.directory.api.ldap.model.entry.Attribute;
 import org.apache.directory.api.ldap.model.entry.DefaultAttribute;
@@ -46,7 +46,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class AddAddRequestAttributeType extends GrammarAction<LdapMessageContainerDirect<AddRequest>>
+public class AddAddRequestAttributeType extends GrammarAction<LdapMessageContainer<AddRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( AddAddRequestAttributeType.class );
@@ -64,7 +64,7 @@ public class AddAddRequestAttributeType extends GrammarAction<LdapMessageContain
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<AddRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<AddRequest> container ) throws DecoderException
     {
         AddRequest addRequest = container.getMessage();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/add/AddAttributeValue.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/add/AddAttributeValue.java
index f45bbc3..8bc762d 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/add/AddAttributeValue.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/add/AddAttributeValue.java
@@ -23,7 +23,7 @@ package org.apache.directory.api.ldap.codec.actions.request.add;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.entry.Attribute;
 import org.apache.directory.api.ldap.model.exception.LdapException;
 import org.apache.directory.api.ldap.model.message.AddRequest;
@@ -43,7 +43,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class AddAttributeValue extends GrammarAction<LdapMessageContainerDirect<AddRequest>>
+public class AddAttributeValue extends GrammarAction<LdapMessageContainer<AddRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( AddAttributeValue.class );
@@ -61,7 +61,7 @@ public class AddAttributeValue extends GrammarAction<LdapMessageContainerDirect<
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<AddRequest> container )
+    public void action( LdapMessageContainer<AddRequest> container )
     {
         Attribute currentAttribute = container.getCurrentAttribute();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/add/InitAddRequest.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/add/InitAddRequest.java
index 7ff391f..facda68 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/add/InitAddRequest.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/add/InitAddRequest.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.AddRequest;
 import org.apache.directory.api.ldap.model.message.AddRequestImpl;
 import org.slf4j.Logger;
@@ -39,7 +39,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitAddRequest extends GrammarAction<LdapMessageContainerDirect<AddRequest>>
+public class InitAddRequest extends GrammarAction<LdapMessageContainer<AddRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitAddRequest.class );
@@ -58,7 +58,7 @@ public class InitAddRequest extends GrammarAction<LdapMessageContainerDirect<Add
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<AddRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<AddRequest> container ) throws DecoderException
     {
         // Now, we can allocate the AddRequest Object
         int messageId = container.getMessageId();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/add/StoreAddRequestEntryName.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/add/StoreAddRequestEntryName.java
index b193269..eb48b22 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/add/StoreAddRequestEntryName.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/add/StoreAddRequestEntryName.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.api.ResponseCarryingException;
 import org.apache.directory.api.ldap.model.exception.LdapInvalidDnException;
 import org.apache.directory.api.ldap.model.message.AddRequest;
@@ -45,7 +45,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreAddRequestEntryName extends GrammarAction<LdapMessageContainerDirect<AddRequest>>
+public class StoreAddRequestEntryName extends GrammarAction<LdapMessageContainer<AddRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreAddRequestEntryName.class );
@@ -64,7 +64,7 @@ public class StoreAddRequestEntryName extends GrammarAction<LdapMessageContainer
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<AddRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<AddRequest> container ) throws DecoderException
     {
         AddRequest addRequest = container.getMessage();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/bind/InitBindRequest.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/bind/InitBindRequest.java
index 00bdd9b..d90870e 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/bind/InitBindRequest.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/bind/InitBindRequest.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.BindRequest;
 import org.apache.directory.api.ldap.model.message.BindRequestImpl;
 import org.slf4j.Logger;
@@ -39,7 +39,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitBindRequest extends GrammarAction<LdapMessageContainerDirect<BindRequest>>
+public class InitBindRequest extends GrammarAction<LdapMessageContainer<BindRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitBindRequest.class );
@@ -58,7 +58,7 @@ public class InitBindRequest extends GrammarAction<LdapMessageContainerDirect<Bi
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<BindRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<BindRequest> container ) throws DecoderException
     {
         // Create the BindRequest LdapMessage instance and store it in the container
         BindRequest bindRequest = new BindRequestImpl();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/bind/InitSaslBind.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/bind/InitSaslBind.java
index eeaba4b..78d8cce 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/bind/InitSaslBind.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/bind/InitSaslBind.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.api.ResponseCarryingException;
 import org.apache.directory.api.ldap.model.message.BindRequest;
 import org.apache.directory.api.ldap.model.message.BindResponseImpl;
@@ -50,7 +50,7 @@ import org.slf4j.LoggerFactory;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitSaslBind extends GrammarAction<LdapMessageContainerDirect<BindRequest>>
+public class InitSaslBind extends GrammarAction<LdapMessageContainer<BindRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitSaslBind.class );
@@ -68,7 +68,7 @@ public class InitSaslBind extends GrammarAction<LdapMessageContainerDirect<BindR
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<BindRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<BindRequest> container ) throws DecoderException
     {
         BindRequest bindRequestMessage = container.getMessage();
         TLV tlv = container.getCurrentTLV();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/bind/StoreName.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/bind/StoreName.java
index 6c13f1d..8d2e52a 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/bind/StoreName.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/bind/StoreName.java
@@ -23,7 +23,7 @@ package org.apache.directory.api.ldap.codec.actions.request.bind;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.BindRequest;
 import org.apache.directory.api.util.Strings;
 import org.slf4j.Logger;
@@ -40,7 +40,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreName extends GrammarAction<LdapMessageContainerDirect<BindRequest>>
+public class StoreName extends GrammarAction<LdapMessageContainer<BindRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreName.class );
@@ -58,7 +58,7 @@ public class StoreName extends GrammarAction<LdapMessageContainerDirect<BindRequ
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<BindRequest> container )
+    public void action( LdapMessageContainer<BindRequest> container )
     {
         BindRequest bindRequestMessage = container.getMessage();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/bind/StoreSaslCredentials.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/bind/StoreSaslCredentials.java
index ce54b10..55f73df 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/bind/StoreSaslCredentials.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/bind/StoreSaslCredentials.java
@@ -23,7 +23,7 @@ package org.apache.directory.api.ldap.codec.actions.request.bind;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.BindRequest;
 import org.apache.directory.api.util.Strings;
 import org.slf4j.Logger;
@@ -39,7 +39,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreSaslCredentials extends GrammarAction<LdapMessageContainerDirect<BindRequest>>
+public class StoreSaslCredentials extends GrammarAction<LdapMessageContainer<BindRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreSaslCredentials.class );
@@ -57,7 +57,7 @@ public class StoreSaslCredentials extends GrammarAction<LdapMessageContainerDire
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<BindRequest> container )
+    public void action( LdapMessageContainer<BindRequest> container )
     {
         BindRequest bindRequestMessage = container.getMessage();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/bind/StoreSaslMechanism.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/bind/StoreSaslMechanism.java
index 044e168..83b5aa1 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/bind/StoreSaslMechanism.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/bind/StoreSaslMechanism.java
@@ -23,7 +23,7 @@ package org.apache.directory.api.ldap.codec.actions.request.bind;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.BindRequest;
 import org.apache.directory.api.util.Strings;
 import org.slf4j.Logger;
@@ -39,7 +39,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreSaslMechanism extends GrammarAction<LdapMessageContainerDirect<BindRequest>>
+public class StoreSaslMechanism extends GrammarAction<LdapMessageContainer<BindRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreSaslMechanism.class );
@@ -57,7 +57,7 @@ public class StoreSaslMechanism extends GrammarAction<LdapMessageContainerDirect
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<BindRequest> container )
+    public void action( LdapMessageContainer<BindRequest> container )
     {
         BindRequest bindRequestMessage = container.getMessage();
         TLV tlv = container.getCurrentTLV();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/bind/StoreSimpleAuth.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/bind/StoreSimpleAuth.java
index dfaf714..23ae951 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/bind/StoreSimpleAuth.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/bind/StoreSimpleAuth.java
@@ -23,7 +23,7 @@ package org.apache.directory.api.ldap.codec.actions.request.bind;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.BindRequest;
 import org.apache.directory.api.util.Strings;
 import org.slf4j.Logger;
@@ -45,7 +45,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreSimpleAuth extends GrammarAction<LdapMessageContainerDirect<BindRequest>>
+public class StoreSimpleAuth extends GrammarAction<LdapMessageContainer<BindRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreSimpleAuth.class );
@@ -63,7 +63,7 @@ public class StoreSimpleAuth extends GrammarAction<LdapMessageContainerDirect<Bi
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<BindRequest> container )
+    public void action( LdapMessageContainer<BindRequest> container )
     {
         BindRequest bindRequestMessage = container.getMessage();
         TLV tlv = container.getCurrentTLV();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/bind/StoreVersion.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/bind/StoreVersion.java
index b8a2207..c4bf4f4 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/bind/StoreVersion.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/bind/StoreVersion.java
@@ -27,7 +27,7 @@ import org.apache.directory.api.asn1.ber.tlv.IntegerDecoder;
 import org.apache.directory.api.asn1.ber.tlv.IntegerDecoderException;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.BindRequest;
 import org.apache.directory.api.util.Strings;
 import org.slf4j.Logger;
@@ -43,7 +43,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreVersion extends GrammarAction<LdapMessageContainerDirect<BindRequest>>
+public class StoreVersion extends GrammarAction<LdapMessageContainer<BindRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreVersion.class );
@@ -61,7 +61,7 @@ public class StoreVersion extends GrammarAction<LdapMessageContainerDirect<BindR
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<BindRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<BindRequest> container ) throws DecoderException
     {
         BindRequest bindRequestMessage = container.getMessage();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/compare/InitCompareRequest.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/compare/InitCompareRequest.java
index 90dcf56..735d4d7 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/compare/InitCompareRequest.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/compare/InitCompareRequest.java
@@ -22,7 +22,7 @@ package org.apache.directory.api.ldap.codec.actions.request.compare;
 
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.CompareRequest;
 import org.apache.directory.api.ldap.model.message.CompareRequestImpl;
 import org.slf4j.Logger;
@@ -39,7 +39,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitCompareRequest extends GrammarAction<LdapMessageContainerDirect<CompareRequest>>
+public class InitCompareRequest extends GrammarAction<LdapMessageContainer<CompareRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitCompareRequest.class );
@@ -57,7 +57,7 @@ public class InitCompareRequest extends GrammarAction<LdapMessageContainerDirect
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<CompareRequest> container )
+    public void action( LdapMessageContainer<CompareRequest> container )
     {
         // Now, we can allocate the CompareRequest Object
         CompareRequest compareRequest = new CompareRequestImpl();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/compare/StoreCompareRequestAssertionValue.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/compare/StoreCompareRequestAssertionValue.java
index 8f108e4..7122fb5 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/compare/StoreCompareRequestAssertionValue.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/compare/StoreCompareRequestAssertionValue.java
@@ -23,7 +23,7 @@ package org.apache.directory.api.ldap.codec.actions.request.compare;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.CompareRequest;
 import org.apache.directory.api.util.Strings;
 import org.slf4j.Logger;
@@ -45,7 +45,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreCompareRequestAssertionValue extends GrammarAction<LdapMessageContainerDirect<CompareRequest>>
+public class StoreCompareRequestAssertionValue extends GrammarAction<LdapMessageContainer<CompareRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreCompareRequestAssertionValue.class );
@@ -63,7 +63,7 @@ public class StoreCompareRequestAssertionValue extends GrammarAction<LdapMessage
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<CompareRequest> container )
+    public void action( LdapMessageContainer<CompareRequest> container )
     {
         // Get the CompareRequest Object
         CompareRequest compareRequest = container.getMessage();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/compare/StoreCompareRequestAttributeDesc.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/compare/StoreCompareRequestAttributeDesc.java
index 0ae4131..9e4e81b 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/compare/StoreCompareRequestAttributeDesc.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/compare/StoreCompareRequestAttributeDesc.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.api.ResponseCarryingException;
 import org.apache.directory.api.ldap.model.message.CompareRequest;
 import org.apache.directory.api.ldap.model.message.CompareResponseImpl;
@@ -47,7 +47,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreCompareRequestAttributeDesc extends GrammarAction<LdapMessageContainerDirect<CompareRequest>>
+public class StoreCompareRequestAttributeDesc extends GrammarAction<LdapMessageContainer<CompareRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreCompareRequestAttributeDesc.class );
@@ -65,7 +65,7 @@ public class StoreCompareRequestAttributeDesc extends GrammarAction<LdapMessageC
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<CompareRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<CompareRequest> container ) throws DecoderException
     {
         // Get the CompareRequest Object
         CompareRequest compareRequest = container.getMessage();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/compare/StoreCompareRequestEntryName.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/compare/StoreCompareRequestEntryName.java
index c043369..cc4fd55 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/compare/StoreCompareRequestEntryName.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/compare/StoreCompareRequestEntryName.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.api.ResponseCarryingException;
 import org.apache.directory.api.ldap.model.exception.LdapInvalidDnException;
 import org.apache.directory.api.ldap.model.message.CompareRequest;
@@ -45,7 +45,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreCompareRequestEntryName extends GrammarAction<LdapMessageContainerDirect<CompareRequest>>
+public class StoreCompareRequestEntryName extends GrammarAction<LdapMessageContainer<CompareRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreCompareRequestEntryName.class );
@@ -63,7 +63,7 @@ public class StoreCompareRequestEntryName extends GrammarAction<LdapMessageConta
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<CompareRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<CompareRequest> container ) throws DecoderException
     {
         CompareRequest compareRequest = container.getMessage();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/del/InitDelRequest.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/del/InitDelRequest.java
index a18a03c..80f659b 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/del/InitDelRequest.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/del/InitDelRequest.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.api.ResponseCarryingException;
 import org.apache.directory.api.ldap.model.exception.LdapInvalidDnException;
 import org.apache.directory.api.ldap.model.message.DeleteRequest;
@@ -47,7 +47,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitDelRequest extends GrammarAction<LdapMessageContainerDirect<DeleteRequest>>
+public class InitDelRequest extends GrammarAction<LdapMessageContainer<DeleteRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitDelRequest.class );
@@ -65,7 +65,7 @@ public class InitDelRequest extends GrammarAction<LdapMessageContainerDirect<Del
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<DeleteRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<DeleteRequest> container ) throws DecoderException
     {
         // Create the DeleteRequest LdapMessage instance and store it in the container
         DeleteRequest delRequest = new DeleteRequestImpl();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/extended/InitExtendedRequest.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/extended/InitExtendedRequest.java
index c80e225..bb41abe 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/extended/InitExtendedRequest.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/extended/InitExtendedRequest.java
@@ -22,7 +22,7 @@ package org.apache.directory.api.ldap.codec.actions.request.extended;
 
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.ExtendedRequest;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -36,7 +36,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitExtendedRequest extends GrammarAction<LdapMessageContainerDirect<ExtendedRequest>>
+public class InitExtendedRequest extends GrammarAction<LdapMessageContainer<ExtendedRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitExtendedRequest.class );
@@ -55,7 +55,7 @@ public class InitExtendedRequest extends GrammarAction<LdapMessageContainerDirec
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<ExtendedRequest> container )
+    public void action( LdapMessageContainer<ExtendedRequest> container )
     {
         /*
          * It is the responsibility of the LdapCodecService to instantiate new
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/extended/StoreExtendedRequestName.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/extended/StoreExtendedRequestName.java
index ce67751..ce859c2 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/extended/StoreExtendedRequestName.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/extended/StoreExtendedRequestName.java
@@ -27,7 +27,7 @@ import org.apache.directory.api.asn1.util.Oid;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.ExtendedOperationFactory;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.ExtendedRequest;
 import org.apache.directory.api.ldap.model.message.OpaqueExtendedRequest;
 import org.apache.directory.api.util.Strings;
@@ -44,7 +44,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreExtendedRequestName extends GrammarAction<LdapMessageContainerDirect<ExtendedRequest>>
+public class StoreExtendedRequestName extends GrammarAction<LdapMessageContainer<ExtendedRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreExtendedRequestName.class );
@@ -62,7 +62,7 @@ public class StoreExtendedRequestName extends GrammarAction<LdapMessageContainer
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<ExtendedRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<ExtendedRequest> container ) throws DecoderException
     {
         // Get the Name and store it in the ExtendedRequest. That will
         // allow us to find the proper extended request instance, if it's 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/extended/StoreExtendedRequestValue.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/extended/StoreExtendedRequestValue.java
index e764867..063f7f3 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/extended/StoreExtendedRequestValue.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/extended/StoreExtendedRequestValue.java
@@ -25,7 +25,7 @@ import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.ExtendedOperationFactory;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.ExtendedRequest;
 import org.apache.directory.api.ldap.model.message.OpaqueExtendedRequest;
 import org.apache.directory.api.util.Strings;
@@ -42,7 +42,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreExtendedRequestValue extends GrammarAction<LdapMessageContainerDirect<ExtendedRequest>>
+public class StoreExtendedRequestValue extends GrammarAction<LdapMessageContainer<ExtendedRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreExtendedRequestValue.class );
@@ -60,7 +60,7 @@ public class StoreExtendedRequestValue extends GrammarAction<LdapMessageContaine
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<ExtendedRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<ExtendedRequest> container ) throws DecoderException
     {
         // We can allocate the ExtendedRequest Object
         ExtendedRequest extendedRequest = container.getMessage();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modify/AddModifyRequestAttribute.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modify/AddModifyRequestAttribute.java
index 1387439..f9b4f92 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modify/AddModifyRequestAttribute.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modify/AddModifyRequestAttribute.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.api.ResponseCarryingException;
 import org.apache.directory.api.ldap.model.entry.Attribute;
 import org.apache.directory.api.ldap.model.entry.DefaultAttribute;
@@ -51,7 +51,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class AddModifyRequestAttribute extends GrammarAction<LdapMessageContainerDirect<ModifyRequest>>
+public class AddModifyRequestAttribute extends GrammarAction<LdapMessageContainer<ModifyRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( AddModifyRequestAttribute.class );
@@ -69,7 +69,7 @@ public class AddModifyRequestAttribute extends GrammarAction<LdapMessageContaine
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<ModifyRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<ModifyRequest> container ) throws DecoderException
     {
         ModifyRequest modifyRequest = container.getMessage();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modify/InitAttributeVals.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modify/InitAttributeVals.java
index d0f1805..b0add7d 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modify/InitAttributeVals.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modify/InitAttributeVals.java
@@ -23,7 +23,7 @@ package org.apache.directory.api.ldap.codec.actions.request.modify;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.ModifyRequest;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -44,7 +44,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitAttributeVals extends GrammarAction<LdapMessageContainerDirect<ModifyRequest>>
+public class InitAttributeVals extends GrammarAction<LdapMessageContainer<ModifyRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitAttributeVals.class );
@@ -63,7 +63,7 @@ public class InitAttributeVals extends GrammarAction<LdapMessageContainerDirect<
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<ModifyRequest> container )
+    public void action( LdapMessageContainer<ModifyRequest> container )
     {
         TLV tlv = container.getCurrentTLV();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modify/InitModifyRequest.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modify/InitModifyRequest.java
index 8d10610..39e8508 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modify/InitModifyRequest.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modify/InitModifyRequest.java
@@ -22,7 +22,7 @@ package org.apache.directory.api.ldap.codec.actions.request.modify;
 
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.ModifyRequest;
 import org.apache.directory.api.ldap.model.message.ModifyRequestImpl;
 import org.slf4j.Logger;
@@ -37,7 +37,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitModifyRequest extends GrammarAction<LdapMessageContainerDirect<ModifyRequest>>
+public class InitModifyRequest extends GrammarAction<LdapMessageContainer<ModifyRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitModifyRequest.class );
@@ -54,7 +54,7 @@ public class InitModifyRequest extends GrammarAction<LdapMessageContainerDirect<
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<ModifyRequest> container )
+    public void action( LdapMessageContainer<ModifyRequest> container )
     {
         // Now, we can allocate the ModifyRequest Object
         ModifyRequest modifyRequest = new ModifyRequestImpl();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modify/StoreModifyRequestAttributeValue.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modify/StoreModifyRequestAttributeValue.java
index a8f2fcd..80b0f79 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modify/StoreModifyRequestAttributeValue.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modify/StoreModifyRequestAttributeValue.java
@@ -23,7 +23,7 @@ package org.apache.directory.api.ldap.codec.actions.request.modify;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.entry.Attribute;
 import org.apache.directory.api.ldap.model.exception.LdapException;
 import org.apache.directory.api.ldap.model.message.ModifyRequest;
@@ -37,7 +37,7 @@ import org.slf4j.LoggerFactory;
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreModifyRequestAttributeValue extends GrammarAction<LdapMessageContainerDirect<ModifyRequest>>
+public class StoreModifyRequestAttributeValue extends GrammarAction<LdapMessageContainer<ModifyRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreModifyRequestAttributeValue.class );
@@ -55,7 +55,7 @@ public class StoreModifyRequestAttributeValue extends GrammarAction<LdapMessageC
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<ModifyRequest> container )
+    public void action( LdapMessageContainer<ModifyRequest> container )
     {
         TLV tlv = container.getCurrentTLV();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modify/StoreModifyRequestObjectName.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modify/StoreModifyRequestObjectName.java
index 9ade22e..822b372 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modify/StoreModifyRequestObjectName.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modify/StoreModifyRequestObjectName.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.api.ResponseCarryingException;
 import org.apache.directory.api.ldap.model.exception.LdapInvalidDnException;
 import org.apache.directory.api.ldap.model.message.ModifyRequest;
@@ -45,7 +45,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreModifyRequestObjectName extends GrammarAction<LdapMessageContainerDirect<ModifyRequest>>
+public class StoreModifyRequestObjectName extends GrammarAction<LdapMessageContainer<ModifyRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreModifyRequestObjectName.class );
@@ -63,7 +63,7 @@ public class StoreModifyRequestObjectName extends GrammarAction<LdapMessageConta
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<ModifyRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<ModifyRequest> container ) throws DecoderException
     {
         ModifyRequest modifyRequest = container.getMessage();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modify/StoreOperationType.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modify/StoreOperationType.java
index 75afb8b..23bb812 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modify/StoreOperationType.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modify/StoreOperationType.java
@@ -27,7 +27,7 @@ import org.apache.directory.api.asn1.ber.tlv.IntegerDecoderException;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.LdapCodecConstants;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.entry.DefaultModification;
 import org.apache.directory.api.ldap.model.entry.Modification;
 import org.apache.directory.api.ldap.model.message.ModifyRequest;
@@ -47,7 +47,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreOperationType extends GrammarAction<LdapMessageContainerDirect<ModifyRequest>>
+public class StoreOperationType extends GrammarAction<LdapMessageContainer<ModifyRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreOperationType.class );
@@ -65,7 +65,7 @@ public class StoreOperationType extends GrammarAction<LdapMessageContainerDirect
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<ModifyRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<ModifyRequest> container ) throws DecoderException
     {
         ModifyRequest modifyRequest = container.getMessage();
         TLV tlv = container.getCurrentTLV();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modifydn/InitModifyDnRequest.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modifydn/InitModifyDnRequest.java
index c53e657..9094dc8 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modifydn/InitModifyDnRequest.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modifydn/InitModifyDnRequest.java
@@ -22,7 +22,7 @@ package org.apache.directory.api.ldap.codec.actions.request.modifydn;
 
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.ModifyDnRequest;
 import org.apache.directory.api.ldap.model.message.ModifyDnRequestImpl;
 import org.slf4j.Logger;
@@ -37,7 +37,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitModifyDnRequest extends GrammarAction<LdapMessageContainerDirect<ModifyDnRequest>>
+public class InitModifyDnRequest extends GrammarAction<LdapMessageContainer<ModifyDnRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitModifyDnRequest.class );
@@ -56,7 +56,7 @@ public class InitModifyDnRequest extends GrammarAction<LdapMessageContainerDirec
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<ModifyDnRequest> container )
+    public void action( LdapMessageContainer<ModifyDnRequest> container )
     {
         // Now, we can allocate the ModifyDNRequest Object
         ModifyDnRequest modifyDnRequest = new ModifyDnRequestImpl();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modifydn/StoreModifyDnRequestDeleteOldRdn.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modifydn/StoreModifyDnRequestDeleteOldRdn.java
index 5d23a4b..d60369c 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modifydn/StoreModifyDnRequestDeleteOldRdn.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modifydn/StoreModifyDnRequestDeleteOldRdn.java
@@ -27,7 +27,7 @@ import org.apache.directory.api.asn1.ber.tlv.BooleanDecoder;
 import org.apache.directory.api.asn1.ber.tlv.BooleanDecoderException;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.ModifyDnRequest;
 import org.apache.directory.api.util.Strings;
 import org.slf4j.Logger;
@@ -44,7 +44,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreModifyDnRequestDeleteOldRdn extends GrammarAction<LdapMessageContainerDirect<ModifyDnRequest>>
+public class StoreModifyDnRequestDeleteOldRdn extends GrammarAction<LdapMessageContainer<ModifyDnRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreModifyDnRequestDeleteOldRdn.class );
@@ -62,7 +62,7 @@ public class StoreModifyDnRequestDeleteOldRdn extends GrammarAction<LdapMessageC
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<ModifyDnRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<ModifyDnRequest> container ) throws DecoderException
     {
         ModifyDnRequest modifyDnRequest = container.getMessage();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modifydn/StoreModifyDnRequestEntryName.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modifydn/StoreModifyDnRequestEntryName.java
index a225d2f..a53ea48 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modifydn/StoreModifyDnRequestEntryName.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modifydn/StoreModifyDnRequestEntryName.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.api.ResponseCarryingException;
 import org.apache.directory.api.ldap.model.exception.LdapInvalidDnException;
 import org.apache.directory.api.ldap.model.message.ModifyDnRequest;
@@ -45,7 +45,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreModifyDnRequestEntryName extends GrammarAction<LdapMessageContainerDirect<ModifyDnRequest>>
+public class StoreModifyDnRequestEntryName extends GrammarAction<LdapMessageContainer<ModifyDnRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreModifyDnRequestEntryName.class );
@@ -63,7 +63,7 @@ public class StoreModifyDnRequestEntryName extends GrammarAction<LdapMessageCont
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<ModifyDnRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<ModifyDnRequest> container ) throws DecoderException
     {
         ModifyDnRequest modifyDnRequest = container.getMessage();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modifydn/StoreModifyDnRequestNewRdn.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modifydn/StoreModifyDnRequestNewRdn.java
index 090f166..e2302eb 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modifydn/StoreModifyDnRequestNewRdn.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modifydn/StoreModifyDnRequestNewRdn.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.api.ResponseCarryingException;
 import org.apache.directory.api.ldap.model.exception.LdapInvalidDnException;
 import org.apache.directory.api.ldap.model.message.ModifyDnRequest;
@@ -49,7 +49,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreModifyDnRequestNewRdn extends GrammarAction<LdapMessageContainerDirect<ModifyDnRequest>>
+public class StoreModifyDnRequestNewRdn extends GrammarAction<LdapMessageContainer<ModifyDnRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreModifyDnRequestNewRdn.class );
@@ -67,7 +67,7 @@ public class StoreModifyDnRequestNewRdn extends GrammarAction<LdapMessageContain
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<ModifyDnRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<ModifyDnRequest> container ) throws DecoderException
     {
         ModifyDnRequest modifyDnRequest = container.getMessage();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modifydn/StoreModifyDnRequestNewSuperior.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modifydn/StoreModifyDnRequestNewSuperior.java
index c3f9568..0630cab 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modifydn/StoreModifyDnRequestNewSuperior.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/modifydn/StoreModifyDnRequestNewSuperior.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.api.ResponseCarryingException;
 import org.apache.directory.api.ldap.model.exception.LdapInvalidDnException;
 import org.apache.directory.api.ldap.model.message.ModifyDnRequest;
@@ -45,7 +45,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreModifyDnRequestNewSuperior extends GrammarAction<LdapMessageContainerDirect<ModifyDnRequest>>
+public class StoreModifyDnRequestNewSuperior extends GrammarAction<LdapMessageContainer<ModifyDnRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreModifyDnRequestNewSuperior.class );
@@ -63,7 +63,7 @@ public class StoreModifyDnRequestNewSuperior extends GrammarAction<LdapMessageCo
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainerDirect<ModifyDnRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<ModifyDnRequest> container ) throws DecoderException
     {
         ModifyDnRequest modifyDnRequest = container.getMessage();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/InitSearchRequest.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/InitSearchRequest.java
index df08154..b3a3931 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/InitSearchRequest.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/InitSearchRequest.java
@@ -23,7 +23,7 @@ package org.apache.directory.api.ldap.codec.actions.request.search;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
 import org.apache.directory.api.ldap.model.message.SearchRequestImpl;
 import org.slf4j.Logger;
@@ -38,7 +38,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitSearchRequest extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class InitSearchRequest extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitSearchRequest.class );
@@ -56,7 +56,7 @@ public class InitSearchRequest extends GrammarAction<LdapMessageContainerDirect<
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchRequest> container )
+    public void action( LdapMessageContainer<SearchRequest> container )
     {
         // Now, we can allocate the SearchRequest Object
         TLV tlv = container.getCurrentTLV();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/InitSearchRequestAttributeDescList.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/InitSearchRequestAttributeDescList.java
index 374792a..5481ba5 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/InitSearchRequestAttributeDescList.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/InitSearchRequestAttributeDescList.java
@@ -28,7 +28,7 @@ import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.AttributeValueAssertion;
 import org.apache.directory.api.ldap.codec.api.LdapCodecConstants;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.search.AndFilter;
 import org.apache.directory.api.ldap.codec.search.AttributeValueAssertionFilter;
 import org.apache.directory.api.ldap.codec.search.ConnectorFilter;
@@ -70,7 +70,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitSearchRequestAttributeDescList extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class InitSearchRequestAttributeDescList extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitSearchRequestAttributeDescList.class );
@@ -225,7 +225,7 @@ public class InitSearchRequestAttributeDescList extends GrammarAction<LdapMessag
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<SearchRequest> container ) throws DecoderException
     {
         // Here, we have to inject the decoded filter into the SearchRequest
         SearchRequest searchRequest = container.getMessage();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/StoreSearchRequestAttributeDesc.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/StoreSearchRequestAttributeDesc.java
index 0dc61ec..5af7b05 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/StoreSearchRequestAttributeDesc.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/StoreSearchRequestAttributeDesc.java
@@ -23,7 +23,7 @@ package org.apache.directory.api.ldap.codec.actions.request.search;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
 import org.apache.directory.api.util.Strings;
 import org.slf4j.Logger;
@@ -42,7 +42,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreSearchRequestAttributeDesc extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class StoreSearchRequestAttributeDesc extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreSearchRequestAttributeDesc.class );
@@ -59,7 +59,7 @@ public class StoreSearchRequestAttributeDesc extends GrammarAction<LdapMessageCo
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchRequest> container )
+    public void action( LdapMessageContainer<SearchRequest> container )
     {
         SearchRequest searchRequest = container.getMessage();
         TLV tlv = container.getCurrentTLV();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/StoreSearchRequestBaseObject.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/StoreSearchRequestBaseObject.java
index 556c509..d927a95 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/StoreSearchRequestBaseObject.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/StoreSearchRequestBaseObject.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.api.ResponseCarryingException;
 import org.apache.directory.api.ldap.model.exception.LdapInvalidDnException;
 import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
@@ -45,7 +45,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreSearchRequestBaseObject extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class StoreSearchRequestBaseObject extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreSearchRequestBaseObject.class );
@@ -63,7 +63,7 @@ public class StoreSearchRequestBaseObject extends GrammarAction<LdapMessageConta
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<SearchRequest> container ) throws DecoderException
     {
         SearchRequest searchRequest = container.getMessage();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/StoreSearchRequestDerefAlias.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/StoreSearchRequestDerefAlias.java
index 3bde6ac..81bdebc 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/StoreSearchRequestDerefAlias.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/StoreSearchRequestDerefAlias.java
@@ -28,7 +28,7 @@ import org.apache.directory.api.asn1.ber.tlv.IntegerDecoderException;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.LdapCodecConstants;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.AliasDerefMode;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
 import org.slf4j.Logger;
@@ -49,7 +49,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreSearchRequestDerefAlias extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class StoreSearchRequestDerefAlias extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreSearchRequestDerefAlias.class );
@@ -66,7 +66,7 @@ public class StoreSearchRequestDerefAlias extends GrammarAction<LdapMessageConta
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<SearchRequest> container ) throws DecoderException
     {
         SearchRequest searchRequest = container.getMessage();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/StoreSearchRequestScope.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/StoreSearchRequestScope.java
index 1dca1dc..5acf633 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/StoreSearchRequestScope.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/StoreSearchRequestScope.java
@@ -28,7 +28,7 @@ import org.apache.directory.api.asn1.ber.tlv.IntegerDecoderException;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.LdapCodecConstants;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
 import org.apache.directory.api.ldap.model.message.SearchScope;
 import org.slf4j.Logger;
@@ -48,7 +48,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreSearchRequestScope extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class StoreSearchRequestScope extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreSearchRequestScope.class );
@@ -65,7 +65,7 @@ public class StoreSearchRequestScope extends GrammarAction<LdapMessageContainerD
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<SearchRequest> container ) throws DecoderException
     {
         SearchRequest searchRequest = container.getMessage();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/StoreSearchRequestSizeLimit.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/StoreSearchRequestSizeLimit.java
index 7b58a2c..21ae77c 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/StoreSearchRequestSizeLimit.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/StoreSearchRequestSizeLimit.java
@@ -27,7 +27,7 @@ import org.apache.directory.api.asn1.ber.tlv.LongDecoder;
 import org.apache.directory.api.asn1.ber.tlv.LongDecoderException;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -43,7 +43,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreSearchRequestSizeLimit extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class StoreSearchRequestSizeLimit extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreSearchRequestSizeLimit.class );
@@ -60,7 +60,7 @@ public class StoreSearchRequestSizeLimit extends GrammarAction<LdapMessageContai
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<SearchRequest> container ) throws DecoderException
     {
         SearchRequest searchRequest = container.getMessage();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/StoreSearchRequestTimeLimit.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/StoreSearchRequestTimeLimit.java
index 034cec6..687c285 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/StoreSearchRequestTimeLimit.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/StoreSearchRequestTimeLimit.java
@@ -27,7 +27,7 @@ import org.apache.directory.api.asn1.ber.tlv.IntegerDecoder;
 import org.apache.directory.api.asn1.ber.tlv.IntegerDecoderException;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -43,7 +43,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreSearchRequestTimeLimit extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class StoreSearchRequestTimeLimit extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreSearchRequestTimeLimit.class );
@@ -60,7 +60,7 @@ public class StoreSearchRequestTimeLimit extends GrammarAction<LdapMessageContai
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<SearchRequest> container ) throws DecoderException
     {
         SearchRequest searchRequest = container.getMessage();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/StoreSearchRequestTypesOnly.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/StoreSearchRequestTypesOnly.java
index f963d9e..ae9dd69 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/StoreSearchRequestTypesOnly.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/StoreSearchRequestTypesOnly.java
@@ -27,7 +27,7 @@ import org.apache.directory.api.asn1.ber.tlv.BooleanDecoder;
 import org.apache.directory.api.asn1.ber.tlv.BooleanDecoderException;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
 import org.apache.directory.api.util.Strings;
 import org.slf4j.Logger;
@@ -44,7 +44,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreSearchRequestTypesOnly extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class StoreSearchRequestTypesOnly extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreSearchRequestTypesOnly.class );
@@ -61,7 +61,7 @@ public class StoreSearchRequestTypesOnly extends GrammarAction<LdapMessageContai
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<SearchRequest> container ) throws DecoderException
     {
         SearchRequest searchRequest = container.getMessage();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitAndFilter.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitAndFilter.java
index 8a4f757..7830d29 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitAndFilter.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitAndFilter.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.search.AndFilter;
 import org.apache.directory.api.ldap.codec.search.Filter;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
@@ -37,7 +37,7 @@ import org.slf4j.LoggerFactory;
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitAndFilter extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class InitAndFilter extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitAndFilter.class );
@@ -54,7 +54,7 @@ public class InitAndFilter extends GrammarAction<LdapMessageContainerDirect<Sear
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<SearchRequest> container ) throws DecoderException
     {
         TLV tlv = container.getCurrentTLV();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitApproxMatchFilter.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitApproxMatchFilter.java
index c84dc92..a29b1b1 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitApproxMatchFilter.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitApproxMatchFilter.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.LdapCodecConstants;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.search.AttributeValueAssertionFilter;
 import org.apache.directory.api.ldap.codec.search.Filter;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
@@ -37,7 +37,7 @@ import org.slf4j.LoggerFactory;
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitApproxMatchFilter extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class InitApproxMatchFilter extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitApproxMatchFilter.class );
@@ -54,7 +54,7 @@ public class InitApproxMatchFilter extends GrammarAction<LdapMessageContainerDir
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<SearchRequest> container ) throws DecoderException
     {
         // We can allocate the Attribute Value Assertion
         Filter filter = new AttributeValueAssertionFilter( container.getCurrentTLV().getId(),
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitAssertionValueFilter.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitAssertionValueFilter.java
index cc0cb78..de41e89 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitAssertionValueFilter.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitAssertionValueFilter.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.AttributeValueAssertion;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.search.AttributeValueAssertionFilter;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
 import org.apache.directory.api.util.Strings;
@@ -37,7 +37,7 @@ import org.slf4j.LoggerFactory;
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitAssertionValueFilter extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class InitAssertionValueFilter extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitAssertionValueFilter.class );
@@ -54,7 +54,7 @@ public class InitAssertionValueFilter extends GrammarAction<LdapMessageContainer
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchRequest> container )
+    public void action( LdapMessageContainer<SearchRequest> container )
     {
         TLV tlv = container.getCurrentTLV();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitAttributeDescFilter.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitAttributeDescFilter.java
index 3be2f95..c712b48 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitAttributeDescFilter.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitAttributeDescFilter.java
@@ -25,7 +25,7 @@ import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.AttributeValueAssertion;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.search.AttributeValueAssertionFilter;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
 import org.apache.directory.api.util.Strings;
@@ -38,7 +38,7 @@ import org.slf4j.LoggerFactory;
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitAttributeDescFilter extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class InitAttributeDescFilter extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitAttributeDescFilter.class );
@@ -55,7 +55,7 @@ public class InitAttributeDescFilter extends GrammarAction<LdapMessageContainerD
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<SearchRequest> container ) throws DecoderException
     {
         TLV tlv = container.getCurrentTLV();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitEqualityMatchFilter.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitEqualityMatchFilter.java
index 9a0926b..72ad351 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitEqualityMatchFilter.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitEqualityMatchFilter.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.LdapCodecConstants;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.search.AttributeValueAssertionFilter;
 import org.apache.directory.api.ldap.codec.search.Filter;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
@@ -37,7 +37,7 @@ import org.slf4j.LoggerFactory;
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitEqualityMatchFilter extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class InitEqualityMatchFilter extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitEqualityMatchFilter.class );
@@ -54,7 +54,7 @@ public class InitEqualityMatchFilter extends GrammarAction<LdapMessageContainerD
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<SearchRequest> container ) throws DecoderException
     {
         // We can allocate the Attribute Value Assertion
         Filter filter = new AttributeValueAssertionFilter( container.getCurrentTLV().getId(),
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitExtensibleMatchFilter.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitExtensibleMatchFilter.java
index 18d0f1b..d29d588 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitExtensibleMatchFilter.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitExtensibleMatchFilter.java
@@ -23,7 +23,7 @@ package org.apache.directory.api.ldap.codec.actions.request.search.filter;
 import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.search.ExtensibleMatchFilter;
 import org.apache.directory.api.ldap.codec.search.Filter;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
@@ -36,7 +36,7 @@ import org.slf4j.LoggerFactory;
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitExtensibleMatchFilter extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class InitExtensibleMatchFilter extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitExtensibleMatchFilter.class );
@@ -53,7 +53,7 @@ public class InitExtensibleMatchFilter extends GrammarAction<LdapMessageContaine
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<SearchRequest> container ) throws DecoderException
     {
         // We can allocate the ExtensibleMatch Filter
         Filter extensibleMatchFilter = new ExtensibleMatchFilter( container.getCurrentTLV().getId() );
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitGreaterOrEqualFilter.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitGreaterOrEqualFilter.java
index 70f7d87..8592e36 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitGreaterOrEqualFilter.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitGreaterOrEqualFilter.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.LdapCodecConstants;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.search.AttributeValueAssertionFilter;
 import org.apache.directory.api.ldap.codec.search.Filter;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
@@ -37,7 +37,7 @@ import org.slf4j.LoggerFactory;
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitGreaterOrEqualFilter extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class InitGreaterOrEqualFilter extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitGreaterOrEqualFilter.class );
@@ -54,7 +54,7 @@ public class InitGreaterOrEqualFilter extends GrammarAction<LdapMessageContainer
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<SearchRequest> container ) throws DecoderException
     {
         // We can allocate the Attribute Value Assertion
         Filter filter = new AttributeValueAssertionFilter( container.getCurrentTLV().getId(),
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitLessOrEqualFilter.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitLessOrEqualFilter.java
index 86bebba..5feb987 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitLessOrEqualFilter.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitLessOrEqualFilter.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.LdapCodecConstants;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.search.AttributeValueAssertionFilter;
 import org.apache.directory.api.ldap.codec.search.Filter;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
@@ -37,7 +37,7 @@ import org.slf4j.LoggerFactory;
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitLessOrEqualFilter extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class InitLessOrEqualFilter extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitLessOrEqualFilter.class );
@@ -54,7 +54,7 @@ public class InitLessOrEqualFilter extends GrammarAction<LdapMessageContainerDir
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<SearchRequest> container ) throws DecoderException
     {
         // We can allocate the Attribute Value Assertion
         Filter filter = new AttributeValueAssertionFilter( container.getCurrentTLV().getId(),
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitNotFilter.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitNotFilter.java
index 807f83d..47ead84 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitNotFilter.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitNotFilter.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.search.Filter;
 import org.apache.directory.api.ldap.codec.search.NotFilter;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
@@ -37,7 +37,7 @@ import org.slf4j.LoggerFactory;
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitNotFilter extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class InitNotFilter extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitNotFilter.class );
@@ -54,7 +54,7 @@ public class InitNotFilter extends GrammarAction<LdapMessageContainerDirect<Sear
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<SearchRequest> container ) throws DecoderException
     {
         TLV tlv = container.getCurrentTLV();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitOrFilter.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitOrFilter.java
index 5500d9d..783ee0b 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitOrFilter.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitOrFilter.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.search.Filter;
 import org.apache.directory.api.ldap.codec.search.OrFilter;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
@@ -37,7 +37,7 @@ import org.slf4j.LoggerFactory;
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitOrFilter extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class InitOrFilter extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitOrFilter.class );
@@ -54,7 +54,7 @@ public class InitOrFilter extends GrammarAction<LdapMessageContainerDirect<Searc
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<SearchRequest> container ) throws DecoderException
     {
         TLV tlv = container.getCurrentTLV();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitPresentFilter.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitPresentFilter.java
index b72a49a..0dcb731 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitPresentFilter.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitPresentFilter.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.search.PresentFilter;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
 import org.apache.directory.api.util.Strings;
@@ -38,7 +38,7 @@ import org.slf4j.LoggerFactory;
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitPresentFilter extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class InitPresentFilter extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitPresentFilter.class );
@@ -55,7 +55,7 @@ public class InitPresentFilter extends GrammarAction<LdapMessageContainerDirect<
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<SearchRequest> container ) throws DecoderException
     {
         TLV tlv = container.getCurrentTLV();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitSubstringsFilter.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitSubstringsFilter.java
index 044a917..cdb830e 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitSubstringsFilter.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/InitSubstringsFilter.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.search.Filter;
 import org.apache.directory.api.ldap.codec.search.SubstringFilter;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
@@ -37,7 +37,7 @@ import org.slf4j.LoggerFactory;
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitSubstringsFilter extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class InitSubstringsFilter extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitSubstringsFilter.class );
@@ -54,7 +54,7 @@ public class InitSubstringsFilter extends GrammarAction<LdapMessageContainerDire
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<SearchRequest> container ) throws DecoderException
     {
         TLV tlv = container.getCurrentTLV();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreAny.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreAny.java
index 2750fd0..2add925 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreAny.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreAny.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.search.SubstringFilter;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
 import org.apache.directory.api.util.Strings;
@@ -44,7 +44,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreAny extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class StoreAny extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreAny.class );
@@ -61,7 +61,7 @@ public class StoreAny extends GrammarAction<LdapMessageContainerDirect<SearchReq
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<SearchRequest> container ) throws DecoderException
     {
         TLV tlv = container.getCurrentTLV();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreFinal.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreFinal.java
index 2fbce84..831355c 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreFinal.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreFinal.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.search.SubstringFilter;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
 import org.apache.directory.api.util.Strings;
@@ -44,7 +44,7 @@ import org.slf4j.LoggerFactory;
 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreFinal extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class StoreFinal extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreFinal.class );
@@ -61,7 +61,7 @@ public class StoreFinal extends GrammarAction<LdapMessageContainerDirect<SearchR
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<SearchRequest> container ) throws DecoderException
     {
         TLV tlv = container.getCurrentTLV();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreInitial.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreInitial.java
index 3cc142c..0711629 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreInitial.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreInitial.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.search.SubstringFilter;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
 import org.apache.directory.api.util.Strings;
@@ -44,7 +44,7 @@ import org.slf4j.LoggerFactory;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreInitial extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class StoreInitial extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreInitial.class );
@@ -62,7 +62,7 @@ public class StoreInitial extends GrammarAction<LdapMessageContainerDirect<Searc
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<SearchRequest> container ) throws DecoderException
     {
         TLV tlv = container.getCurrentTLV();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreMatchValue.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreMatchValue.java
index 4b66b62..9967113 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreMatchValue.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreMatchValue.java
@@ -23,7 +23,7 @@ package org.apache.directory.api.ldap.codec.actions.request.search.filter;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.search.ExtensibleMatchFilter;
 import org.apache.directory.api.ldap.model.entry.Value;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
@@ -45,7 +45,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreMatchValue extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class StoreMatchValue extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreMatchValue.class );
@@ -62,7 +62,7 @@ public class StoreMatchValue extends GrammarAction<LdapMessageContainerDirect<Se
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchRequest> container )
+    public void action( LdapMessageContainer<SearchRequest> container )
     {
         TLV tlv = container.getCurrentTLV();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreMatchingRuleDnAttributes.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreMatchingRuleDnAttributes.java
index f9842d9..d2c1ffc 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreMatchingRuleDnAttributes.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreMatchingRuleDnAttributes.java
@@ -27,7 +27,7 @@ import org.apache.directory.api.asn1.ber.tlv.BooleanDecoder;
 import org.apache.directory.api.asn1.ber.tlv.BooleanDecoderException;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.search.ExtensibleMatchFilter;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
 import org.apache.directory.api.util.Strings;
@@ -48,7 +48,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreMatchingRuleDnAttributes extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class StoreMatchingRuleDnAttributes extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreMatchingRuleDnAttributes.class );
@@ -62,7 +62,7 @@ public class StoreMatchingRuleDnAttributes extends GrammarAction<LdapMessageCont
     }
 
 
-    public void action( LdapMessageContainerDirect<SearchRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<SearchRequest> container ) throws DecoderException
     {
         TLV tlv = container.getCurrentTLV();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreMatchingRuleId.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreMatchingRuleId.java
index 20c6ca8..940745e 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreMatchingRuleId.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreMatchingRuleId.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.search.ExtensibleMatchFilter;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
 import org.apache.directory.api.util.Strings;
@@ -37,7 +37,7 @@ import org.slf4j.LoggerFactory;
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreMatchingRuleId extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class StoreMatchingRuleId extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
 
     /** The logger. */
@@ -55,7 +55,7 @@ public class StoreMatchingRuleId extends GrammarAction<LdapMessageContainerDirec
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<SearchRequest> container ) throws DecoderException
     {
         TLV tlv = container.getCurrentTLV();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreMatchingRuleType.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreMatchingRuleType.java
index 58631be..9e52f00 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreMatchingRuleType.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreMatchingRuleType.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.search.ExtensibleMatchFilter;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
 import org.apache.directory.api.util.Strings;
@@ -37,7 +37,7 @@ import org.slf4j.LoggerFactory;
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreMatchingRuleType extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class StoreMatchingRuleType extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
 
     /** The logger. */
@@ -55,7 +55,7 @@ public class StoreMatchingRuleType extends GrammarAction<LdapMessageContainerDir
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<SearchRequest> container ) throws DecoderException
     {
         TLV tlv = container.getCurrentTLV();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreSubstringFilterType.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreSubstringFilterType.java
index 586e3ac..c780013 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreSubstringFilterType.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/search/filter/StoreSubstringFilterType.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.search.SubstringFilter;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
 import org.apache.directory.api.util.Strings;
@@ -46,7 +46,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreSubstringFilterType extends GrammarAction<LdapMessageContainerDirect<SearchRequest>>
+public class StoreSubstringFilterType extends GrammarAction<LdapMessageContainer<SearchRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreSubstringFilterType.class );
@@ -64,7 +64,7 @@ public class StoreSubstringFilterType extends GrammarAction<LdapMessageContainer
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<SearchRequest> container ) throws DecoderException
     {
         TLV tlv = container.getCurrentTLV();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/unbind/InitUnbindRequest.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/unbind/InitUnbindRequest.java
index b9281b7..0bfe611 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/unbind/InitUnbindRequest.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/request/unbind/InitUnbindRequest.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.UnbindRequest;
 import org.apache.directory.api.ldap.model.message.UnbindRequestImpl;
 import org.slf4j.Logger;
@@ -39,7 +39,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitUnbindRequest extends GrammarAction<LdapMessageContainerDirect<UnbindRequest>>
+public class InitUnbindRequest extends GrammarAction<LdapMessageContainer<UnbindRequest>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitUnbindRequest.class );
@@ -57,7 +57,7 @@ public class InitUnbindRequest extends GrammarAction<LdapMessageContainerDirect<
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<UnbindRequest> container ) throws DecoderException
+    public void action( LdapMessageContainer<UnbindRequest> container ) throws DecoderException
     {
         // Create the UnbindRequest LdapMessage instance and store it in the container
         UnbindRequest unbindRequest = new UnbindRequestImpl();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/add/InitAddResponse.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/add/InitAddResponse.java
index 646a456..c2ed93d 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/add/InitAddResponse.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/add/InitAddResponse.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.AddResponse;
 import org.apache.directory.api.ldap.model.message.AddResponseImpl;
 import org.slf4j.Logger;
@@ -39,7 +39,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitAddResponse extends GrammarAction<LdapMessageContainerDirect<AddResponse>>
+public class InitAddResponse extends GrammarAction<LdapMessageContainer<AddResponse>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitAddResponse.class );
@@ -57,7 +57,7 @@ public class InitAddResponse extends GrammarAction<LdapMessageContainerDirect<Ad
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<AddResponse> container ) throws DecoderException
+    public void action( LdapMessageContainer<AddResponse> container ) throws DecoderException
     {
         // Now, we can allocate the AddResponse Object
         AddResponse addResponse = new AddResponseImpl( container.getMessageId() );
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/bind/InitBindResponse.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/bind/InitBindResponse.java
index 09df893..b5b4f12 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/bind/InitBindResponse.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/bind/InitBindResponse.java
@@ -21,7 +21,7 @@ package org.apache.directory.api.ldap.codec.actions.response.bind;
 
 
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.BindResponse;
 import org.apache.directory.api.ldap.model.message.BindResponseImpl;
 
@@ -34,7 +34,7 @@ import org.apache.directory.api.ldap.model.message.BindResponseImpl;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitBindResponse extends GrammarAction<LdapMessageContainerDirect<BindResponse>>
+public class InitBindResponse extends GrammarAction<LdapMessageContainer<BindResponse>>
 {
     /**
      * Instantiates a new action.
@@ -48,7 +48,7 @@ public class InitBindResponse extends GrammarAction<LdapMessageContainerDirect<B
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<BindResponse> container )
+    public void action( LdapMessageContainer<BindResponse> container )
     {
         // Now, we can allocate the BindResponse Object
         BindResponse bindResponse = new BindResponseImpl( container.getMessageId() );
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/bind/StoreServerSASLCreds.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/bind/StoreServerSASLCreds.java
index 7de81da..e771a14 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/bind/StoreServerSASLCreds.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/bind/StoreServerSASLCreds.java
@@ -23,7 +23,7 @@ package org.apache.directory.api.ldap.codec.actions.response.bind;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.BindResponse;
 import org.apache.directory.api.util.Strings;
 import org.slf4j.Logger;
@@ -39,7 +39,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreServerSASLCreds extends GrammarAction<LdapMessageContainerDirect<BindResponse>>
+public class StoreServerSASLCreds extends GrammarAction<LdapMessageContainer<BindResponse>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreServerSASLCreds.class );
@@ -56,7 +56,7 @@ public class StoreServerSASLCreds extends GrammarAction<LdapMessageContainerDire
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<BindResponse> container )
+    public void action( LdapMessageContainer<BindResponse> container )
     {
         // Get the Value and store it in the BindRequest
         TLV tlv = container.getCurrentTLV();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/compare/InitCompareResponse.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/compare/InitCompareResponse.java
index 64681c5..442a10f 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/compare/InitCompareResponse.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/compare/InitCompareResponse.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.CompareResponse;
 import org.apache.directory.api.ldap.model.message.CompareResponseImpl;
 import org.slf4j.Logger;
@@ -39,7 +39,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitCompareResponse extends GrammarAction<LdapMessageContainerDirect<CompareResponse>>
+public class InitCompareResponse extends GrammarAction<LdapMessageContainer<CompareResponse>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitCompareResponse.class );
@@ -57,7 +57,7 @@ public class InitCompareResponse extends GrammarAction<LdapMessageContainerDirec
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<CompareResponse> container ) throws DecoderException
+    public void action( LdapMessageContainer<CompareResponse> container ) throws DecoderException
     {
         // Now, we can allocate the CompareResponse Object
         CompareResponse compareResponse = new CompareResponseImpl( container.getMessageId() );
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/del/InitDelResponse.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/del/InitDelResponse.java
index fa4610b..08d77d0 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/del/InitDelResponse.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/del/InitDelResponse.java
@@ -22,7 +22,7 @@ package org.apache.directory.api.ldap.codec.actions.response.del;
 
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.DeleteResponse;
 import org.apache.directory.api.ldap.model.message.DeleteResponseImpl;
 import org.slf4j.Logger;
@@ -37,7 +37,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitDelResponse extends GrammarAction<LdapMessageContainerDirect<DeleteResponse>>
+public class InitDelResponse extends GrammarAction<LdapMessageContainer<DeleteResponse>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitDelResponse.class );
@@ -55,7 +55,7 @@ public class InitDelResponse extends GrammarAction<LdapMessageContainerDirect<De
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<DeleteResponse> container )
+    public void action( LdapMessageContainer<DeleteResponse> container )
     {
         // Now, we can allocate the DelResponse Object
         DeleteResponse delResponse = new DeleteResponseImpl( container.getMessageId() );
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/extended/InitExtendedResponse.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/extended/InitExtendedResponse.java
index 2c4b878..1832e18 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/extended/InitExtendedResponse.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/extended/InitExtendedResponse.java
@@ -22,7 +22,7 @@ package org.apache.directory.api.ldap.codec.actions.response.extended;
 
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.ExtendedResponse;
 import org.apache.directory.api.ldap.model.message.OpaqueExtendedResponse;
 import org.slf4j.Logger;
@@ -37,7 +37,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitExtendedResponse extends GrammarAction<LdapMessageContainerDirect<ExtendedResponse>>
+public class InitExtendedResponse extends GrammarAction<LdapMessageContainer<ExtendedResponse>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitExtendedResponse.class );
@@ -55,7 +55,7 @@ public class InitExtendedResponse extends GrammarAction<LdapMessageContainerDire
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<ExtendedResponse> container )
+    public void action( LdapMessageContainer<ExtendedResponse> container )
     {
         // Now, we can allocate the ExtendedResponse Object ( a generic one)
         // We can't wait as we may have an extended response with no OID,
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/extended/StoreExtendedResponseName.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/extended/StoreExtendedResponseName.java
index 6ab6a30..ec4d773 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/extended/StoreExtendedResponseName.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/extended/StoreExtendedResponseName.java
@@ -27,7 +27,7 @@ import org.apache.directory.api.asn1.util.Oid;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.ExtendedOperationFactory;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.ExtendedResponse;
 import org.apache.directory.api.util.Strings;
 import org.slf4j.Logger;
@@ -45,7 +45,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreExtendedResponseName extends GrammarAction<LdapMessageContainerDirect<ExtendedResponse>>
+public class StoreExtendedResponseName extends GrammarAction<LdapMessageContainer<ExtendedResponse>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreExtendedResponseName.class );
@@ -62,7 +62,7 @@ public class StoreExtendedResponseName extends GrammarAction<LdapMessageContaine
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<ExtendedResponse> container ) throws DecoderException
+    public void action( LdapMessageContainer<ExtendedResponse> container ) throws DecoderException
     {
         // Get the Name and store it in the ExtendedResponse. That will
         // allow us to find the proper extended response instance, if it's 
@@ -107,7 +107,7 @@ public class StoreExtendedResponseName extends GrammarAction<LdapMessageContaine
                     extendedResponse = factory.newResponse();
 
                     // Move the LDAPResult in the newly created response
-                    LdapMessageContainerDirect.copyLdapResult( container.getMessage(), extendedResponse );
+                    LdapMessageContainer.copyLdapResult( container.getMessage(), extendedResponse );
                     extendedResponse.setMessageId( container.getMessageId() );
                     container.setMessage( extendedResponse );
                 }
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/extended/StoreExtendedResponseValue.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/extended/StoreExtendedResponseValue.java
index f858023..e39c460 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/extended/StoreExtendedResponseValue.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/extended/StoreExtendedResponseValue.java
@@ -25,7 +25,7 @@ import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.ExtendedOperationFactory;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.ExtendedResponse;
 import org.apache.directory.api.ldap.model.message.OpaqueExtendedResponse;
 import org.apache.directory.api.util.Strings;
@@ -42,7 +42,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreExtendedResponseValue extends GrammarAction<LdapMessageContainerDirect<ExtendedResponse>>
+public class StoreExtendedResponseValue extends GrammarAction<LdapMessageContainer<ExtendedResponse>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreExtendedResponseValue.class );
@@ -59,7 +59,7 @@ public class StoreExtendedResponseValue extends GrammarAction<LdapMessageContain
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<ExtendedResponse> container ) throws DecoderException
+    public void action( LdapMessageContainer<ExtendedResponse> container ) throws DecoderException
     {
         // We can allocate the ExtendedResponse Object
         ExtendedResponse extendedResponse = container.getMessage();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/intermediate/InitIntermediateResponse.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/intermediate/InitIntermediateResponse.java
index 791ffaf..8ff8b3d 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/intermediate/InitIntermediateResponse.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/intermediate/InitIntermediateResponse.java
@@ -22,7 +22,7 @@ package org.apache.directory.api.ldap.codec.actions.response.intermediate;
 
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.IntermediateResponse;
 import org.apache.directory.api.ldap.model.message.IntermediateResponseImpl;
 import org.slf4j.Logger;
@@ -37,7 +37,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitIntermediateResponse extends GrammarAction<LdapMessageContainerDirect<IntermediateResponse>>
+public class InitIntermediateResponse extends GrammarAction<LdapMessageContainer<IntermediateResponse>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitIntermediateResponse.class );
@@ -55,7 +55,7 @@ public class InitIntermediateResponse extends GrammarAction<LdapMessageContainer
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<IntermediateResponse> container )
+    public void action( LdapMessageContainer<IntermediateResponse> container )
     {
         // Now, we can allocate the IntermediateResponse Object
         container.setMessage( new IntermediateResponseImpl( container.getMessageId() ) );
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/intermediate/StoreIntermediateResponseName.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/intermediate/StoreIntermediateResponseName.java
index 43661c6..502fce8 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/intermediate/StoreIntermediateResponseName.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/intermediate/StoreIntermediateResponseName.java
@@ -26,7 +26,7 @@ import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.asn1.util.Oid;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.IntermediateOperationFactory;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.IntermediateResponse;
 import org.apache.directory.api.ldap.model.message.LdapResult;
@@ -43,7 +43,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreIntermediateResponseName extends GrammarAction<LdapMessageContainerDirect<IntermediateResponse>>
+public class StoreIntermediateResponseName extends GrammarAction<LdapMessageContainer<IntermediateResponse>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreIntermediateResponseName.class );
@@ -60,7 +60,7 @@ public class StoreIntermediateResponseName extends GrammarAction<LdapMessageCont
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<IntermediateResponse> container ) throws DecoderException
+    public void action( LdapMessageContainer<IntermediateResponse> container ) throws DecoderException
     {
         // We can get the IntermediateResponse Object
         IntermediateResponse intermediateResponse = container.getMessage();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/intermediate/StoreIntermediateResponseValue.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/intermediate/StoreIntermediateResponseValue.java
index 8a790e6..7dc6562 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/intermediate/StoreIntermediateResponseValue.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/intermediate/StoreIntermediateResponseValue.java
@@ -25,7 +25,7 @@ import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.IntermediateOperationFactory;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.IntermediateResponse;
 import org.apache.directory.api.util.Strings;
 import org.slf4j.Logger;
@@ -42,7 +42,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreIntermediateResponseValue extends GrammarAction<LdapMessageContainerDirect<IntermediateResponse>>
+public class StoreIntermediateResponseValue extends GrammarAction<LdapMessageContainer<IntermediateResponse>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreIntermediateResponseValue.class );
@@ -59,7 +59,7 @@ public class StoreIntermediateResponseValue extends GrammarAction<LdapMessageCon
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<IntermediateResponse> container ) throws DecoderException
+    public void action( LdapMessageContainer<IntermediateResponse> container ) throws DecoderException
     {
         // We can get the IntermediateResponse Object
         IntermediateResponse intermediateResponse = container.getMessage();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/modify/InitModifyResponse.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/modify/InitModifyResponse.java
index c383d74..029c8c1 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/modify/InitModifyResponse.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/modify/InitModifyResponse.java
@@ -22,7 +22,7 @@ package org.apache.directory.api.ldap.codec.actions.response.modify;
 
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.ModifyResponse;
 import org.apache.directory.api.ldap.model.message.ModifyResponseImpl;
 import org.slf4j.Logger;
@@ -37,7 +37,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitModifyResponse extends GrammarAction<LdapMessageContainerDirect<ModifyResponse>>
+public class InitModifyResponse extends GrammarAction<LdapMessageContainer<ModifyResponse>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitModifyResponse.class );
@@ -55,7 +55,7 @@ public class InitModifyResponse extends GrammarAction<LdapMessageContainerDirect
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<ModifyResponse> container )
+    public void action( LdapMessageContainer<ModifyResponse> container )
     {
         // Now, we can allocate the ModifyResponse Object
         ModifyResponse modifyResponse = new ModifyResponseImpl( container.getMessageId() );
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/modifydn/InitModifyDnResponse.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/modifydn/InitModifyDnResponse.java
index d839a1c..3eb2a1a 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/modifydn/InitModifyDnResponse.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/modifydn/InitModifyDnResponse.java
@@ -22,7 +22,7 @@ package org.apache.directory.api.ldap.codec.actions.response.modifydn;
 
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.ModifyDnResponse;
 import org.apache.directory.api.ldap.model.message.ModifyDnResponseImpl;
 import org.slf4j.Logger;
@@ -36,7 +36,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitModifyDnResponse extends GrammarAction<LdapMessageContainerDirect<ModifyDnResponse>>
+public class InitModifyDnResponse extends GrammarAction<LdapMessageContainer<ModifyDnResponse>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitModifyDnResponse.class );
@@ -54,7 +54,7 @@ public class InitModifyDnResponse extends GrammarAction<LdapMessageContainerDire
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<ModifyDnResponse> container )
+    public void action( LdapMessageContainer<ModifyDnResponse> container )
     {
         // Now, we can allocate the ModifyDnResponse Object
         ModifyDnResponse modifyDnResponse = new ModifyDnResponseImpl( container.getMessageId() );
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/search/done/InitSearchResultDone.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/search/done/InitSearchResultDone.java
index 0686884..be2b93d 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/search/done/InitSearchResultDone.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/search/done/InitSearchResultDone.java
@@ -22,7 +22,7 @@ package org.apache.directory.api.ldap.codec.actions.response.search.done;
 
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.SearchResultDone;
 import org.apache.directory.api.ldap.model.message.SearchResultDoneImpl;
 import org.slf4j.Logger;
@@ -37,7 +37,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitSearchResultDone extends GrammarAction<LdapMessageContainerDirect<SearchResultDone>>
+public class InitSearchResultDone extends GrammarAction<LdapMessageContainer<SearchResultDone>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitSearchResultDone.class );
@@ -55,7 +55,7 @@ public class InitSearchResultDone extends GrammarAction<LdapMessageContainerDire
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchResultDone> container )
+    public void action( LdapMessageContainer<SearchResultDone> container )
     {
         // Now, we can allocate the SearchResultDone Object
         SearchResultDone searchResultDone = new SearchResultDoneImpl( container.getMessageId() );
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/search/entry/AddAttributeType.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/search/entry/AddAttributeType.java
index 7d73f04..0a676e4 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/search/entry/AddAttributeType.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/search/entry/AddAttributeType.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.entry.Attribute;
 import org.apache.directory.api.ldap.model.entry.DefaultAttribute;
 import org.apache.directory.api.ldap.model.exception.LdapException;
@@ -47,7 +47,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class AddAttributeType extends GrammarAction<LdapMessageContainerDirect<SearchResultEntry>>
+public class AddAttributeType extends GrammarAction<LdapMessageContainer<SearchResultEntry>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( AddAttributeType.class );
@@ -64,7 +64,7 @@ public class AddAttributeType extends GrammarAction<LdapMessageContainerDirect<S
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchResultEntry> container ) throws DecoderException
+    public void action( LdapMessageContainer<SearchResultEntry> container ) throws DecoderException
     {
         SearchResultEntry searchResultEntry = container.getMessage();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/search/entry/InitSearchResultEntry.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/search/entry/InitSearchResultEntry.java
index 875984f..077c334 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/search/entry/InitSearchResultEntry.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/search/entry/InitSearchResultEntry.java
@@ -21,7 +21,7 @@ package org.apache.directory.api.ldap.codec.actions.response.search.entry;
 
 
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.SearchResultEntry;
 import org.apache.directory.api.ldap.model.message.SearchResultEntryImpl;
 
@@ -34,7 +34,7 @@ import org.apache.directory.api.ldap.model.message.SearchResultEntryImpl;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitSearchResultEntry extends GrammarAction<LdapMessageContainerDirect<SearchResultEntry>>
+public class InitSearchResultEntry extends GrammarAction<LdapMessageContainer<SearchResultEntry>>
 {
     /**
      * Instantiates a new action.
@@ -48,7 +48,7 @@ public class InitSearchResultEntry extends GrammarAction<LdapMessageContainerDir
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchResultEntry> container )
+    public void action( LdapMessageContainer<SearchResultEntry> container )
     {
         // Now, we can allocate the SearchResultEntry Object
         SearchResultEntry searchResultEntry = new SearchResultEntryImpl( container.getMessageId() );
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/search/entry/StoreSearchResultAttributeValue.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/search/entry/StoreSearchResultAttributeValue.java
index b0a26f5..378fa0e 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/search/entry/StoreSearchResultAttributeValue.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/search/entry/StoreSearchResultAttributeValue.java
@@ -23,7 +23,7 @@ package org.apache.directory.api.ldap.codec.actions.response.search.entry;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.entry.Attribute;
 import org.apache.directory.api.ldap.model.exception.LdapException;
 import org.apache.directory.api.ldap.model.message.SearchResultEntry;
@@ -43,7 +43,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreSearchResultAttributeValue extends GrammarAction<LdapMessageContainerDirect<SearchResultEntry>>
+public class StoreSearchResultAttributeValue extends GrammarAction<LdapMessageContainer<SearchResultEntry>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreSearchResultAttributeValue.class );
@@ -60,7 +60,7 @@ public class StoreSearchResultAttributeValue extends GrammarAction<LdapMessageCo
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchResultEntry> container )
+    public void action( LdapMessageContainer<SearchResultEntry> container )
     {
         Attribute currentAttribute = container.getCurrentAttribute();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/search/entry/StoreSearchResultEntryObjectName.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/search/entry/StoreSearchResultEntryObjectName.java
index fd6437a..2e00dcf 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/search/entry/StoreSearchResultEntryObjectName.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/search/entry/StoreSearchResultEntryObjectName.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.exception.LdapInvalidDnException;
 import org.apache.directory.api.ldap.model.message.SearchResultEntry;
 import org.apache.directory.api.ldap.model.name.Dn;
@@ -44,7 +44,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreSearchResultEntryObjectName extends GrammarAction<LdapMessageContainerDirect<SearchResultEntry>>
+public class StoreSearchResultEntryObjectName extends GrammarAction<LdapMessageContainer<SearchResultEntry>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreSearchResultEntryObjectName.class );
@@ -61,7 +61,7 @@ public class StoreSearchResultEntryObjectName extends GrammarAction<LdapMessageC
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchResultEntry> container ) throws DecoderException
+    public void action( LdapMessageContainer<SearchResultEntry> container ) throws DecoderException
     {
         SearchResultEntry searchResultEntry = container.getMessage();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/search/reference/InitSearchResultReference.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/search/reference/InitSearchResultReference.java
index 07ee41a..2c6efe6 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/search/reference/InitSearchResultReference.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/search/reference/InitSearchResultReference.java
@@ -22,7 +22,7 @@ package org.apache.directory.api.ldap.codec.actions.response.search.reference;
 
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.message.SearchResultReference;
 import org.apache.directory.api.ldap.model.message.SearchResultReferenceImpl;
 import org.slf4j.Logger;
@@ -37,7 +37,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitSearchResultReference extends GrammarAction<LdapMessageContainerDirect<SearchResultReference>>
+public class InitSearchResultReference extends GrammarAction<LdapMessageContainer<SearchResultReference>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitSearchResultReference.class );
@@ -55,7 +55,7 @@ public class InitSearchResultReference extends GrammarAction<LdapMessageContaine
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchResultReference> container )
+    public void action( LdapMessageContainer<SearchResultReference> container )
     {
         // Now, we can allocate the SearchResultReference Object
         SearchResultReference searchResultReference = new SearchResultReferenceImpl( container.getMessageId() );
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/search/reference/StoreReference.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/search/reference/StoreReference.java
index 8586306..875ba2d 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/search/reference/StoreReference.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/response/search/reference/StoreReference.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.model.exception.LdapURLEncodingException;
 import org.apache.directory.api.ldap.model.message.Referral;
 import org.apache.directory.api.ldap.model.message.ReferralImpl;
@@ -43,7 +43,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreReference extends GrammarAction<LdapMessageContainerDirect<SearchResultReference>>
+public class StoreReference extends GrammarAction<LdapMessageContainer<SearchResultReference>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreReference.class );
@@ -60,7 +60,7 @@ public class StoreReference extends GrammarAction<LdapMessageContainerDirect<Sea
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainerDirect<SearchResultReference> container ) throws DecoderException
+    public void action( LdapMessageContainer<SearchResultReference> container ) throws DecoderException
     {
         SearchResultReference searchResultReference = container.getMessage();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/LdapDecoder.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/LdapDecoder.java
index 1ac99ad..cd8bd53 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/LdapDecoder.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/LdapDecoder.java
@@ -70,7 +70,7 @@ public class LdapDecoder
      * @return return The decoded message
      * @throws DecoderException If the decoding failed
      */
-    public Message decode( InputStream in, LdapMessageContainerDirect<? extends Message> container )
+    public Message decode( InputStream in, LdapMessageContainer<? extends Message> container )
         throws DecoderException
     {
         try
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/LdapMessageContainer.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/LdapMessageContainer.java
index 14e0689..6b736c4 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/LdapMessageContainer.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/LdapMessageContainer.java
@@ -20,12 +20,21 @@
 package org.apache.directory.api.ldap.codec.api;
 
 
+import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.AbstractContainer;
+import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.ldap.codec.LdapMessageGrammar;
 import org.apache.directory.api.ldap.codec.LdapStatesEnum;
+import org.apache.directory.api.ldap.codec.search.ConnectorFilter;
+import org.apache.directory.api.ldap.codec.search.Filter;
+import org.apache.directory.api.ldap.codec.search.PresentFilter;
+import org.apache.directory.api.ldap.model.entry.Attribute;
+import org.apache.directory.api.ldap.model.entry.Modification;
 import org.apache.directory.api.ldap.model.message.Control;
+import org.apache.directory.api.ldap.model.message.ExtendedResponse;
 import org.apache.directory.api.ldap.model.message.LdapResult;
 import org.apache.directory.api.ldap.model.message.Message;
+import org.apache.directory.api.ldap.model.message.ResultResponse;
 
 
 /**
@@ -39,8 +48,8 @@ import org.apache.directory.api.ldap.model.message.Message;
  */
 public class LdapMessageContainer<E extends Message> extends AbstractContainer
 {
-    /** The Message decorator to store various temporary values */
-    private E messageDecorator;
+    /** The Message being decoded */
+    private E message;
 
     /** checks if attribute is binary */
     private BinaryAttributeDetector binaryAttributeDetector;
@@ -49,13 +58,40 @@ public class LdapMessageContainer<E extends Message> extends AbstractContainer
     private int messageId;
 
     /** The current control */
-    private ControlDecorator<? extends Control> currentControl;
+    private Control currentControl;
+    
+    /** The current control factory, if any */
+    private ControlFactory<?> controlFactory;
+    
+    /** The current Intermediate response factory */
+    private IntermediateOperationFactory intermediateFactory;
+    
+    /** The current Extended operation factory */
+    private ExtendedOperationFactory extendedFactory;
 
     /** The codec service */
     private final LdapApiService codec;
     
     /** The current LdapResult for a response */
     private LdapResult ldapResult;
+    
+    /** The current attribute being decoded */
+    private Attribute currentAttribute;
+
+    /** A local storage for the MODIFY operation */
+    private Modification currentModification;
+    
+    /** The SearchRequest TLV id */
+    private int tlvId;
+
+    /** A temporary storage for a terminal Filter */
+    private Filter terminalFilter;
+
+    /** The current filter. This is used while decoding a PDU */
+    private Filter currentFilter;
+
+    /** The global filter. This is used while decoding a PDU */
+    private Filter topFilter;
 
 
     /**
@@ -71,8 +107,7 @@ public class LdapMessageContainer<E extends Message> extends AbstractContainer
 
 
     /**
-     * Creates a new LdapMessageContainer object. We will store ten grammars,
-     * it's enough ...
+     * Creates a new LdapMessageContainer object. 
      *
      * @param codec The LDAP service instance
      * @param binaryAttributeDetector checks if an attribute is binary
@@ -103,7 +138,7 @@ public class LdapMessageContainer<E extends Message> extends AbstractContainer
      */
     public E getMessage()
     {
-        return messageDecorator;
+        return message;
     }
 
 
@@ -111,11 +146,11 @@ public class LdapMessageContainer<E extends Message> extends AbstractContainer
      * Set a Message Object into the container. It will be completed by the
      * ldapDecoder.
      *
-     * @param messageDecorator The message to set.
+     * @param message The message to set.
      */
-    public void setMessage( E messageDecorator )
+    public void setMessage( E message )
     {
-        this.messageDecorator = messageDecorator;
+        this.message = message;
     }
 
 
@@ -127,9 +162,18 @@ public class LdapMessageContainer<E extends Message> extends AbstractContainer
     {
         super.clean();
 
-        messageDecorator = null;
-        messageId = 0;
+        messageId = -1;
+        tlvId = -1;
+        message = null;
+        ldapResult = null;
         currentControl = null;
+        currentAttribute = null;
+        currentFilter = null;
+        terminalFilter = null;
+        topFilter = null;
+        controlFactory = null;
+        intermediateFactory = null;
+        extendedFactory = null;
         setDecodedBytes( 0 );
     }
 
@@ -166,7 +210,7 @@ public class LdapMessageContainer<E extends Message> extends AbstractContainer
     /**
      * @return the current control being created
      */
-    public ControlDecorator<? extends Control> getCurrentControl()
+    public Control getCurrentControl()
     {
         return currentControl;
     }
@@ -176,7 +220,7 @@ public class LdapMessageContainer<E extends Message> extends AbstractContainer
      * Store a newly created control
      * @param currentControl The control to store
      */
-    public void setCurrentControl( ControlDecorator<? extends Control> currentControl )
+    public void setCurrentControl( Control currentControl )
     {
         this.currentControl = currentControl;
     }
@@ -218,4 +262,283 @@ public class LdapMessageContainer<E extends Message> extends AbstractContainer
     {
         this.ldapResult = ldapResult;
     }
+
+
+    /**
+     * @return the controlFactory
+     */
+    public ControlFactory<?> getControlFactory()
+    {
+        return controlFactory;
+    }
+
+
+    /**
+     * @param controlFactory the controlFactory to set
+     */
+    public void setControlFactory( ControlFactory<?> controlFactory )
+    {
+        this.controlFactory = controlFactory;
+    }
+
+
+    /**
+     * @return the currentAttribute
+     */
+    public Attribute getCurrentAttribute()
+    {
+        return currentAttribute;
+    }
+
+
+    /**
+     * @param currentAttribute the currentAttribute to set
+     */
+    public void setCurrentAttribute( Attribute currentAttribute )
+    {
+        this.currentAttribute = currentAttribute;
+    }
+
+
+    /**
+     * @return the currentModification
+     */
+    public Modification getCurrentModification()
+    {
+        return currentModification;
+    }
+
+
+    /**
+     * @param currentModification the currentModification to set
+     */
+    public void setCurrentModification( Modification currentModification )
+    {
+        this.currentModification = currentModification;
+    }
+
+
+    /**
+     * Set the SearchRequest PDU TLV's Id
+     * @param tlvId The TLV id
+     */
+    public void setTlvId( int tlvId )
+    {
+        this.tlvId = tlvId;
+    }
+
+
+    /**
+     * @return the terminalFilter
+     */
+    public Filter getTerminalFilter()
+    {
+        return terminalFilter;
+    }
+
+
+    /**
+     * @param terminalFilter the terminalFilter to set
+     */
+    public void setTerminalFilter( Filter terminalFilter )
+    {
+        this.terminalFilter = terminalFilter;
+    }
+
+
+    /**
+     * @return the currentFilter
+     */
+    public Filter getCurrentFilter()
+    {
+        return currentFilter;
+    }
+
+
+    /**
+     * @param currentFilter the currentFilter to set
+     */
+    public void setCurrentFilter( Filter currentFilter )
+    {
+        this.currentFilter = currentFilter;
+    }
+
+
+    /**
+     * Add a current filter. We have two cases :
+     * - there is no previous current filter : the filter
+     * is the top level filter
+     * - there is a previous current filter : the filter is added
+     * to the currentFilter set, and the current filter is changed
+     *
+     * In any case, the previous current filter will always be a
+     * ConnectorFilter when this method is called.
+     *
+     * @param localFilter The filter to set.
+     * @throws DecoderException If the filter is invalid
+     */
+    public void addCurrentFilter( Filter localFilter ) throws DecoderException
+    {
+        if ( currentFilter != null )
+        {
+            // Ok, we have a parent. The new Filter will be added to
+            // this parent, and will become the currentFilter if it's a connector.
+            ( ( ConnectorFilter ) currentFilter ).addFilter( localFilter );
+            localFilter.setParent( currentFilter, currentFilter.getTlvId() );
+
+            if ( localFilter instanceof ConnectorFilter )
+            {
+                currentFilter = localFilter;
+            }
+        }
+        else
+        {
+            // No parent. This Filter will become the root.
+            currentFilter = localFilter;
+            currentFilter.setParent( null, tlvId );
+            topFilter = localFilter;
+        }
+    }
+
+
+    /**
+     * This method is used to clear the filter's stack for terminated elements. An element
+     * is considered as terminated either if :
+     *  - it's a final element (ie an element which cannot contains a Filter)
+     *  - its current length equals its expected length.
+     *
+     * @param container The container being decoded
+     */
+    public void unstackFilters()
+    {
+        TLV tlv = getCurrentTLV();
+        TLV localParent = tlv.getParent();
+        Filter localFilter = terminalFilter;
+
+        // The parent has been completed, so fold it
+        while ( ( localParent != null ) && ( localParent.getExpectedLength() == 0 ) )
+        {
+            int parentTlvId = localFilter.getParent() != null ? localFilter.getParent().getTlvId() : localFilter
+                .getParentTlvId();
+
+            if ( localParent.getId() != parentTlvId )
+            {
+                localParent = localParent.getParent();
+            }
+            else
+            {
+                Filter filterParent = localFilter.getParent();
+
+                // We have a special case with PresentFilter, which has not been
+                // pushed on the stack, so we need to get its parent's parent
+                if ( localFilter instanceof PresentFilter )
+                {
+                    if ( filterParent == null )
+                    {
+                        // We don't have parent, get out
+                        break;
+                    }
+
+                    filterParent = filterParent.getParent();
+                }
+                else
+                {
+                    filterParent = filterParent.getParent();
+                }
+
+                if ( filterParent != null )
+                {
+                    // The parent is a filter ; it will become the new currentFilter
+                    // and we will loop again.
+                    localFilter = currentFilter;
+                    currentFilter = filterParent;
+                    localParent = localParent.getParent();
+                }
+                else
+                {
+                    // We can stop the recursion, we have reached the searchResult Object
+                    break;
+                }
+            }
+        }
+    }
+    
+    
+    /**
+     * Copy the LdapResult element from a opaque response to a newly created 
+     * extendedResponse
+     *  
+     * @param resultResponse The original response
+     * @param extendedResponse The newly created ExtendedResponse
+     */
+    public static void copyLdapResult( ResultResponse resultResponse, ExtendedResponse extendedResponse )
+    {
+        extendedResponse.getLdapResult().setDiagnosticMessage( resultResponse.getLdapResult().getDiagnosticMessage() );
+        extendedResponse.getLdapResult().setMatchedDn( resultResponse.getLdapResult().getMatchedDn() );
+        extendedResponse.getLdapResult().setReferral( resultResponse.getLdapResult().getReferral() );
+        extendedResponse.getLdapResult().setResultCode( resultResponse.getLdapResult().getResultCode() );
+    }
+
+
+    /**
+     * @return the topFilter
+     */
+    public Filter getTopFilter()
+    {
+        return topFilter;
+    }
+
+
+    /**
+     * @param topFilter the topFilter to set
+     */
+    public void setTopFilter( Filter topFilter )
+    {
+        this.topFilter = topFilter;
+    }
+
+
+    /**
+     * @return the tlvId
+     */
+    public int getTlvId()
+    {
+        return tlvId;
+    }
+
+
+    /**
+     * @return the intermediateFactory
+     */
+    public IntermediateOperationFactory getIntermediateFactory()
+    {
+        return intermediateFactory;
+    }
+
+
+    /**
+     * @param intermediateFactory the intermediateFactory to set
+     */
+    public void setIntermediateFactory( IntermediateOperationFactory intermediateFactory )
+    {
+        this.intermediateFactory = intermediateFactory;
+    }
+
+
+    /**
+     * @return the extendedFactory
+     */
+    public ExtendedOperationFactory getExtendedFactory()
+    {
+        return extendedFactory;
+    }
+
+
+    /**
+     * @param extendedFactory the extendedFactory to set
+     */
+    public void setExtendedFactory( ExtendedOperationFactory extendedFactory )
+    {
+        this.extendedFactory = extendedFactory;
+    }
 }
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/LdapMessageContainerDirect.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/LdapMessageContainerDirect.java
deleted file mode 100644
index fd3f135..0000000
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/LdapMessageContainerDirect.java
+++ /dev/null
@@ -1,544 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *    http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- * 
- */
-package org.apache.directory.api.ldap.codec.api;
-
-
-import org.apache.directory.api.asn1.DecoderException;
-import org.apache.directory.api.asn1.ber.AbstractContainer;
-import org.apache.directory.api.asn1.ber.tlv.TLV;
-import org.apache.directory.api.ldap.codec.LdapMessageGrammar;
-import org.apache.directory.api.ldap.codec.LdapStatesEnum;
-import org.apache.directory.api.ldap.codec.search.ConnectorFilter;
-import org.apache.directory.api.ldap.codec.search.Filter;
-import org.apache.directory.api.ldap.codec.search.PresentFilter;
-import org.apache.directory.api.ldap.model.entry.Attribute;
-import org.apache.directory.api.ldap.model.entry.Modification;
-import org.apache.directory.api.ldap.model.message.Control;
-import org.apache.directory.api.ldap.model.message.ExtendedResponse;
-import org.apache.directory.api.ldap.model.message.LdapResult;
-import org.apache.directory.api.ldap.model.message.Message;
-import org.apache.directory.api.ldap.model.message.ResultResponse;
-
-
-/**
- * The LdapMessage container stores all the messages decoded by the Asn1Decoder.
- * When dealing with an encoding PDU, we will obtain a LdapMessage in the
- * container.
- *
- * @param <E> The decorated message
- * 
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- */
-public class LdapMessageContainerDirect<E extends Message> extends AbstractContainer
-{
-    /** The Message being decoded */
-    private E message;
-
-    /** checks if attribute is binary */
-    private BinaryAttributeDetector binaryAttributeDetector;
-
-    /** The message ID */
-    private int messageId;
-
-    /** The current control */
-    private Control currentControl;
-    
-    /** The current control factory, if any */
-    private ControlFactory<?> controlFactory;
-    
-    /** The current Intermediate response factory */
-    private IntermediateOperationFactory intermediateFactory;
-    
-    /** The current Extended operation factory */
-    private ExtendedOperationFactory extendedFactory;
-
-    /** The codec service */
-    private final LdapApiService codec;
-    
-    /** The current LdapResult for a response */
-    private LdapResult ldapResult;
-    
-    /** The current attribute being decoded */
-    private Attribute currentAttribute;
-
-    /** A local storage for the MODIFY operation */
-    private Modification currentModification;
-    
-    /** The SearchRequest TLV id */
-    private int tlvId;
-
-    /** A temporary storage for a terminal Filter */
-    private Filter terminalFilter;
-
-    /** The current filter. This is used while decoding a PDU */
-    private Filter currentFilter;
-
-    /** The global filter. This is used while decoding a PDU */
-    private Filter topFilter;
-
-
-    /**
-     * Creates a new LdapMessageContainer object. We will store ten grammars,
-     * it's enough ...
-     * 
-     * @param codec The LDAP service instance
-     */
-    public LdapMessageContainerDirect( LdapApiService codec )
-    {
-        this( codec, new DefaultConfigurableBinaryAttributeDetector() );
-    }
-
-
-    /**
-     * Creates a new LdapMessageContainer object. 
-     *
-     * @param codec The LDAP service instance
-     * @param binaryAttributeDetector checks if an attribute is binary
-     */
-    public LdapMessageContainerDirect( LdapApiService codec, BinaryAttributeDetector binaryAttributeDetector )
-    {
-        super();
-        this.codec = codec;
-        setGrammar( LdapMessageGrammar.getInstance() );
-        this.binaryAttributeDetector = binaryAttributeDetector;
-        setTransition( LdapStatesEnum.START_STATE );
-    }
-
-
-    /**
-     * Gets the {@link LdapApiService} associated with this Container.
-     *
-     * @return The LDAP service instance
-     */
-    public LdapApiService getLdapCodecService()
-    {
-        return codec;
-    }
-
-
-    /**
-     * @return Returns the ldapMessage.
-     */
-    public E getMessage()
-    {
-        return message;
-    }
-
-
-    /**
-     * Set a Message Object into the container. It will be completed by the
-     * ldapDecoder.
-     *
-     * @param message The message to set.
-     */
-    public void setMessage( E message )
-    {
-        this.message = message;
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void clean()
-    {
-        super.clean();
-
-        messageId = -1;
-        tlvId = -1;
-        message = null;
-        ldapResult = null;
-        currentControl = null;
-        currentAttribute = null;
-        currentFilter = null;
-        terminalFilter = null;
-        topFilter = null;
-        controlFactory = null;
-        intermediateFactory = null;
-        extendedFactory = null;
-        setDecodedBytes( 0 );
-    }
-
-
-    /**
-     * @return Returns true if the attribute is binary.
-     * @param id checks if an attribute id is binary
-     */
-    public boolean isBinary( String id )
-    {
-        return binaryAttributeDetector.isBinary( id );
-    }
-
-
-    /**
-     * @return The message ID
-     */
-    public int getMessageId()
-    {
-        return messageId;
-    }
-
-
-    /**
-     * Set the message ID
-     * @param messageId the id of the message
-     */
-    public void setMessageId( int messageId )
-    {
-        this.messageId = messageId;
-    }
-
-
-    /**
-     * @return the current control being created
-     */
-    public Control getCurrentControl()
-    {
-        return currentControl;
-    }
-
-
-    /**
-     * Store a newly created control
-     * @param currentControl The control to store
-     */
-    public void setCurrentControl( Control currentControl )
-    {
-        this.currentControl = currentControl;
-    }
-
-
-    /**
-     * Sets the binary attribute detector
-     * 
-     * @param binaryAttributeDetector the binary attribute detector
-     */
-    public void setBinaryAttributeDetector( BinaryAttributeDetector binaryAttributeDetector )
-    {
-        this.binaryAttributeDetector = binaryAttributeDetector;
-    }
-
-
-    /**
-     * @return the binary attribute detector
-     */
-    public BinaryAttributeDetector getBinaryAttributeDetector()
-    {
-        return binaryAttributeDetector;
-    }
-
-
-    /**
-     * @return the ldapResult
-     */
-    public LdapResult getLdapResult()
-    {
-        return ldapResult;
-    }
-
-
-    /**
-     * @param ldapResult the ldapResult to set
-     */
-    public void setLdapResult( LdapResult ldapResult )
-    {
-        this.ldapResult = ldapResult;
-    }
-
-
-    /**
-     * @return the controlFactory
-     */
-    public ControlFactory<?> getControlFactory()
-    {
-        return controlFactory;
-    }
-
-
-    /**
-     * @param controlFactory the controlFactory to set
-     */
-    public void setControlFactory( ControlFactory<?> controlFactory )
-    {
-        this.controlFactory = controlFactory;
-    }
-
-
-    /**
-     * @return the currentAttribute
-     */
-    public Attribute getCurrentAttribute()
-    {
-        return currentAttribute;
-    }
-
-
-    /**
-     * @param currentAttribute the currentAttribute to set
-     */
-    public void setCurrentAttribute( Attribute currentAttribute )
-    {
-        this.currentAttribute = currentAttribute;
-    }
-
-
-    /**
-     * @return the currentModification
-     */
-    public Modification getCurrentModification()
-    {
-        return currentModification;
-    }
-
-
-    /**
-     * @param currentModification the currentModification to set
-     */
-    public void setCurrentModification( Modification currentModification )
-    {
-        this.currentModification = currentModification;
-    }
-
-
-    /**
-     * Set the SearchRequest PDU TLV's Id
-     * @param tlvId The TLV id
-     */
-    public void setTlvId( int tlvId )
-    {
-        this.tlvId = tlvId;
-    }
-
-
-    /**
-     * @return the terminalFilter
-     */
-    public Filter getTerminalFilter()
-    {
-        return terminalFilter;
-    }
-
-
-    /**
-     * @param terminalFilter the terminalFilter to set
-     */
-    public void setTerminalFilter( Filter terminalFilter )
-    {
-        this.terminalFilter = terminalFilter;
-    }
-
-
-    /**
-     * @return the currentFilter
-     */
-    public Filter getCurrentFilter()
-    {
-        return currentFilter;
-    }
-
-
-    /**
-     * @param currentFilter the currentFilter to set
-     */
-    public void setCurrentFilter( Filter currentFilter )
-    {
-        this.currentFilter = currentFilter;
-    }
-
-
-    /**
-     * Add a current filter. We have two cases :
-     * - there is no previous current filter : the filter
-     * is the top level filter
-     * - there is a previous current filter : the filter is added
-     * to the currentFilter set, and the current filter is changed
-     *
-     * In any case, the previous current filter will always be a
-     * ConnectorFilter when this method is called.
-     *
-     * @param localFilter The filter to set.
-     * @throws DecoderException If the filter is invalid
-     */
-    public void addCurrentFilter( Filter localFilter ) throws DecoderException
-    {
-        if ( currentFilter != null )
-        {
-            // Ok, we have a parent. The new Filter will be added to
-            // this parent, and will become the currentFilter if it's a connector.
-            ( ( ConnectorFilter ) currentFilter ).addFilter( localFilter );
-            localFilter.setParent( currentFilter, currentFilter.getTlvId() );
-
-            if ( localFilter instanceof ConnectorFilter )
-            {
-                currentFilter = localFilter;
-            }
-        }
-        else
-        {
-            // No parent. This Filter will become the root.
-            currentFilter = localFilter;
-            currentFilter.setParent( null, tlvId );
-            topFilter = localFilter;
-        }
-    }
-
-
-    /**
-     * This method is used to clear the filter's stack for terminated elements. An element
-     * is considered as terminated either if :
-     *  - it's a final element (ie an element which cannot contains a Filter)
-     *  - its current length equals its expected length.
-     *
-     * @param container The container being decoded
-     */
-    public void unstackFilters()
-    {
-        TLV tlv = getCurrentTLV();
-        TLV localParent = tlv.getParent();
-        Filter localFilter = terminalFilter;
-
-        // The parent has been completed, so fold it
-        while ( ( localParent != null ) && ( localParent.getExpectedLength() == 0 ) )
-        {
-            int parentTlvId = localFilter.getParent() != null ? localFilter.getParent().getTlvId() : localFilter
-                .getParentTlvId();
-
-            if ( localParent.getId() != parentTlvId )
-            {
-                localParent = localParent.getParent();
-            }
-            else
-            {
-                Filter filterParent = localFilter.getParent();
-
-                // We have a special case with PresentFilter, which has not been
-                // pushed on the stack, so we need to get its parent's parent
-                if ( localFilter instanceof PresentFilter )
-                {
-                    if ( filterParent == null )
-                    {
-                        // We don't have parent, get out
-                        break;
-                    }
-
-                    filterParent = filterParent.getParent();
-                }
-                else
-                {
-                    filterParent = filterParent.getParent();
-                }
-
-                if ( filterParent != null )
-                {
-                    // The parent is a filter ; it will become the new currentFilter
-                    // and we will loop again.
-                    localFilter = currentFilter;
-                    currentFilter = filterParent;
-                    localParent = localParent.getParent();
-                }
-                else
-                {
-                    // We can stop the recursion, we have reached the searchResult Object
-                    break;
-                }
-            }
-        }
-    }
-    
-    
-    /**
-     * Copy the LdapResult element from a opaque response to a newly created 
-     * extendedResponse
-     *  
-     * @param resultResponse The original response
-     * @param extendedResponse The newly created ExtendedResponse
-     */
-    public static void copyLdapResult( ResultResponse resultResponse, ExtendedResponse extendedResponse )
-    {
-        extendedResponse.getLdapResult().setDiagnosticMessage( resultResponse.getLdapResult().getDiagnosticMessage() );
-        extendedResponse.getLdapResult().setMatchedDn( resultResponse.getLdapResult().getMatchedDn() );
-        extendedResponse.getLdapResult().setReferral( resultResponse.getLdapResult().getReferral() );
-        extendedResponse.getLdapResult().setResultCode( resultResponse.getLdapResult().getResultCode() );
-    }
-
-
-    /**
-     * @return the topFilter
-     */
-    public Filter getTopFilter()
-    {
-        return topFilter;
-    }
-
-
-    /**
-     * @param topFilter the topFilter to set
-     */
-    public void setTopFilter( Filter topFilter )
-    {
-        this.topFilter = topFilter;
-    }
-
-
-    /**
-     * @return the tlvId
-     */
-    public int getTlvId()
-    {
-        return tlvId;
-    }
-
-
-    /**
-     * @return the intermediateFactory
-     */
-    public IntermediateOperationFactory getIntermediateFactory()
-    {
-        return intermediateFactory;
-    }
-
-
-    /**
-     * @param intermediateFactory the intermediateFactory to set
-     */
-    public void setIntermediateFactory( IntermediateOperationFactory intermediateFactory )
-    {
-        this.intermediateFactory = intermediateFactory;
-    }
-
-
-    /**
-     * @return the extendedFactory
-     */
-    public ExtendedOperationFactory getExtendedFactory()
-    {
-        return extendedFactory;
-    }
-
-
-    /**
-     * @param extendedFactory the extendedFactory to set
-     */
-    public void setExtendedFactory( ExtendedOperationFactory extendedFactory )
-    {
-        this.extendedFactory = extendedFactory;
-    }
-}
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapControlTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapControlTest.java
index 8a21be2..c532336 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapControlTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapControlTest.java
@@ -33,7 +33,7 @@ import org.apache.directory.api.asn1.ber.Asn1Container;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.api.LdapEncoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.AbandonRequest;
 import org.apache.directory.api.ldap.model.message.AbandonRequestImpl;
@@ -114,8 +114,8 @@ public class LdapControlTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessageContainer Container
-        LdapMessageContainerDirect<AbandonRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AbandonRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode the PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -198,8 +198,8 @@ public class LdapControlTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessageContainer Container
-        LdapMessageContainerDirect<AbandonRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AbandonRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode the PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -262,7 +262,7 @@ public class LdapControlTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessageContainer Container
-        Asn1Container ldapMessageContainer = new LdapMessageContainerDirect<Message>( codec );
+        Asn1Container ldapMessageContainer = new LdapMessageContainer<Message>( codec );
 
         // Decode the PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -297,7 +297,7 @@ public class LdapControlTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessageContainer Container
-        Asn1Container ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        Asn1Container ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode the PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -331,7 +331,7 @@ public class LdapControlTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessageContainer Container
-        Asn1Container ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        Asn1Container ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode the PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapDecoderTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapDecoderTest.java
index 5da6553..20a84e7 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapDecoderTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapDecoderTest.java
@@ -36,7 +36,7 @@ import org.apache.directory.api.asn1.ber.tlv.TLVStateEnum;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.api.LdapDecoder;
 import org.apache.directory.api.ldap.codec.api.LdapEncoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.api.ResponseCarryingException;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.exception.ResponseCarryingMessageException;
@@ -84,7 +84,7 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
      * @param decodedMessages The list of decoded messages
      * @throws Exception If the decoding failed
      */
-    private void decode( ByteBuffer buffer, LdapMessageContainerDirect<Message> messageContainer,
+    private void decode( ByteBuffer buffer, LdapMessageContainer<Message> messageContainer,
         List<Message> decodedMessages ) throws DecoderException
     {
         buffer.mark();
@@ -134,7 +134,7 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
     public void testDecodeFull() throws DecoderException, EncoderException
     {
         Asn1Decoder ldapDecoder = new Asn1Decoder();
-        LdapMessageContainerDirect<Message> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<Message> container = new LdapMessageContainer<>( codec );
 
         ByteBuffer stream = ByteBuffer.allocate( 0x35 );
         stream.put( new byte[]
@@ -185,7 +185,7 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
     @Test
     public void testDecode2Messages() throws DecoderException, EncoderException
     {
-        LdapMessageContainerDirect<Message> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<Message> container = new LdapMessageContainer<>( codec );
 
         IoSession dummySession = new DummySession();
         dummySession.setAttribute( LdapDecoder.MESSAGE_CONTAINER_ATTR, container );
@@ -271,7 +271,7 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<Message> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<Message> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest PDU
         ldapDecoder.decode( stream, container );
@@ -312,7 +312,7 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<Message> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<Message> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest PDU first block of data
         ldapDecoder.decode( stream, container );
@@ -412,7 +412,7 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<Message> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<Message> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest PDU
         ldapDecoder.decode( stream, container );
@@ -451,7 +451,7 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<Message> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<Message> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest PDU
         ldapDecoder.decode( stream, container );
@@ -488,7 +488,7 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<Message> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<Message> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest PDU
         ldapDecoder.decode( stream, container );
@@ -516,7 +516,7 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<Message> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<Message> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest PDU first block of data
         ldapDecoder.decode( stream, container );
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapMessageTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapMessageTest.java
index b2f537d..2d22cd9 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapMessageTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapMessageTest.java
@@ -33,7 +33,7 @@ import org.apache.directory.api.asn1.ber.Asn1Container;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.api.LdapEncoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.Message;
 import org.apache.directory.api.ldap.model.message.UnbindRequest;
@@ -71,7 +71,7 @@ public class LdapMessageTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        Asn1Container ldapMessageContainer = new LdapMessageContainerDirect<Message>( codec );
+        Asn1Container ldapMessageContainer = new LdapMessageContainer<Message>( codec );
 
         // Decode a BindRequest PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -97,7 +97,7 @@ public class LdapMessageTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        Asn1Container ldapMessageContainer = new LdapMessageContainerDirect<Message>( codec );
+        Asn1Container ldapMessageContainer = new LdapMessageContainer<Message>( codec );
 
         // Decode a BindRequest PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -123,7 +123,7 @@ public class LdapMessageTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        Asn1Container ldapMessageContainer = new LdapMessageContainerDirect<Message>( codec );
+        Asn1Container ldapMessageContainer = new LdapMessageContainer<Message>( codec );
 
         // Decode a BindRequest PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -150,7 +150,7 @@ public class LdapMessageTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        Asn1Container ldapMessageContainer = new LdapMessageContainerDirect<Message>( codec );
+        Asn1Container ldapMessageContainer = new LdapMessageContainer<Message>( codec );
 
         // Decode a BindRequest PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -181,7 +181,7 @@ public class LdapMessageTest extends AbstractCodecServiceTest
             stream.flip();
 
             // Allocate a LdapMessage Container
-            Asn1Container ldapMessageContainer = new LdapMessageContainerDirect<Message>( codec );
+            Asn1Container ldapMessageContainer = new LdapMessageContainer<Message>( codec );
 
             // Decode a BindRequest PDU
             try
@@ -261,7 +261,7 @@ public class LdapMessageTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<UnbindRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<UnbindRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
  
         ldapDecoder.decode( stream, ldapMessageContainer );
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapResultTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapResultTest.java
index 0b6132d..41c8f26 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapResultTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapResultTest.java
@@ -33,7 +33,7 @@ import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.api.LdapEncoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.AddResponse;
 import org.apache.directory.api.ldap.model.message.AddResponseImpl;
@@ -78,7 +78,7 @@ public class LdapResultTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<AddResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddResponse message
         ldapDecoder.decode( stream, container );
@@ -106,7 +106,7 @@ public class LdapResultTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<AddResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddResponse message
         ldapDecoder.decode( stream, container );
@@ -140,7 +140,7 @@ public class LdapResultTest extends AbstractCodecServiceTest
             stream.flip();
 
             // Allocate a LdapMessage Container
-            LdapMessageContainerDirect<AddResponse> container = new LdapMessageContainerDirect<>( codec );
+            LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
             // Decode a AddResponse PDU
             ldapDecoder.decode( stream, container );
@@ -173,7 +173,7 @@ public class LdapResultTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<AddResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddResponse message
         ldapDecoder.decode( stream, container );
@@ -202,7 +202,7 @@ public class LdapResultTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<AddResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddResponse message
         ldapDecoder.decode( stream, container );
@@ -232,7 +232,7 @@ public class LdapResultTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<AddResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the AddResponse PDU
         ldapDecoder.decode( stream, container );
@@ -283,7 +283,7 @@ public class LdapResultTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<AddResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the AddResponse PDU
         ldapDecoder.decode( stream, container );
@@ -348,7 +348,7 @@ public class LdapResultTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<AddResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the AddResponse PDU
         ldapDecoder.decode( stream, container );
@@ -419,7 +419,7 @@ public class LdapResultTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<AddResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the AddResponse PDU
         ldapDecoder.decode( stream, container );
@@ -492,7 +492,7 @@ public class LdapResultTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<AddResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the AddResponse PDU
         ldapDecoder.decode( stream, container );
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/abandon/AbandonRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/abandon/AbandonRequestTest.java
index 392ee79..c041f42 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/abandon/AbandonRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/abandon/AbandonRequestTest.java
@@ -33,7 +33,7 @@ import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.api.LdapEncoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.AbandonRequest;
 import org.apache.directory.api.ldap.model.message.AbandonRequestImpl;
@@ -118,7 +118,7 @@ public class AbandonRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessageContainer Container
-        LdapMessageContainerDirect<AbandonRequest>  container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AbandonRequest>  container = new LdapMessageContainer<>( codec );
 
         // Decode the PDU
         ldapDecoder.decode( stream, container );
@@ -168,8 +168,8 @@ public class AbandonRequestTest extends AbstractCodecServiceTest
         LdapEncoder.encodeMessageReverse( buffer, codec, internalAbandonRequest );
 
         // Check that the decoded messages are equals
-        LdapMessageContainerDirect<AbandonRequest>  ldapMessageContainer2 =
-            new LdapMessageContainerDirect<> ( codec );
+        LdapMessageContainer<AbandonRequest>  ldapMessageContainer2 =
+            new LdapMessageContainer<> ( codec );
 
         // Decode the PDU
         ldapDecoder.decode( buffer.getBytes(), ldapMessageContainer2 );
@@ -202,7 +202,7 @@ public class AbandonRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessageContainer Container
-        LdapMessageContainerDirect<AbandonRequest>  container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AbandonRequest>  container = new LdapMessageContainer<>( codec );
 
         // Decode the PDU
         ldapDecoder.decode( stream, container );
@@ -246,7 +246,7 @@ public class AbandonRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessageContainer Container
-        LdapMessageContainerDirect<AbandonRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AbandonRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the PDU
         ldapDecoder.decode( stream, container );
@@ -273,7 +273,7 @@ public class AbandonRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessageContainer Container
-        LdapMessageContainerDirect<AbandonRequest>  container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AbandonRequest>  container = new LdapMessageContainer<>( codec );
 
         // Decode the PDU
         ldapDecoder.decode( stream, container );
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddRequestTest.java
index 3821e26..468b5e0 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddRequestTest.java
@@ -35,7 +35,7 @@ import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.api.LdapEncoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.api.ResponseCarryingException;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.entry.Attribute;
@@ -112,7 +112,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<AddRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AddRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddRequest message
         ldapDecoder.decode( stream, container );
@@ -203,7 +203,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<AddRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AddRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddRequest message
         ldapDecoder.decode( stream, container );
@@ -250,7 +250,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<AddRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AddRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddRequest message
         try
@@ -313,7 +313,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<AddRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AddRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddRequest message
         try
@@ -360,7 +360,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<AddRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AddRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddRequest message
         ldapDecoder.decode( stream, container );
@@ -395,7 +395,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<AddRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AddRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddRequest message
         ldapDecoder.decode( stream, container );
@@ -431,7 +431,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<AddRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AddRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddRequest message
         try
@@ -481,7 +481,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<AddRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AddRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddRequest message
         ldapDecoder.decode( stream, container );
@@ -519,7 +519,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<AddRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AddRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddRequest message
         ldapDecoder.decode( stream, container );
@@ -558,7 +558,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<AddRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AddRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddRequest message
         ldapDecoder.decode( stream, container );
@@ -634,7 +634,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<AddRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AddRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddRequest message
         ldapDecoder.decode( stream, container );
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddResponseTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddResponseTest.java
index d2e08b6..58968b9 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddResponseTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddResponseTest.java
@@ -32,7 +32,7 @@ import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.api.LdapEncoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.AddResponse;
 import org.apache.directory.api.ldap.model.message.Control;
@@ -81,7 +81,7 @@ public class AddResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<AddResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the AddResponse PDU
         ldapDecoder.decode( stream, container );
@@ -123,7 +123,7 @@ public class AddResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<AddResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddResponse message
         ldapDecoder.decode( stream, container );
@@ -168,7 +168,7 @@ public class AddResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<AddResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the AddResponse PDU
         ldapDecoder.decode( stream, container );
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindRequestTest.java
index 42716cc..7624a89 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindRequestTest.java
@@ -36,7 +36,7 @@ import org.apache.directory.api.asn1.ber.Asn1Container;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.api.LdapEncoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.api.ResponseCarryingException;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.BindRequest;
@@ -188,7 +188,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<BindRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindRequest PDU
         ldapDecoder.decode( stream, container );
@@ -240,7 +240,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<BindRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindRequest PDU
         try
@@ -290,7 +290,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        Asn1Container container = new LdapMessageContainerDirect<BindRequest>( codec );
+        Asn1Container container = new LdapMessageContainer<BindRequest>( codec );
 
         // Decode the BindRequest PDU
         ldapDecoder.decode( stream, container );
@@ -324,7 +324,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<BindRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindRequest PDU
         ldapDecoder.decode( stream, container );
@@ -380,7 +380,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<BindRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindRequest PDU
         ldapDecoder.decode( stream, container );
@@ -442,7 +442,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<BindRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindRequest PDU
         ldapDecoder.decode( stream, container );
@@ -503,7 +503,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<BindRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindRequest PDU
         ldapDecoder.decode( stream, container );
@@ -546,7 +546,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<BindRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest message
         ldapDecoder.decode( stream, container );
@@ -573,7 +573,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<BindRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest message
         ldapDecoder.decode( stream, container );
@@ -600,7 +600,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<BindRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest message
         ldapDecoder.decode( stream, container );
@@ -627,7 +627,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<BindRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest message
         ldapDecoder.decode( stream, container );
@@ -654,7 +654,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<BindRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest message
         ldapDecoder.decode( stream, container );
@@ -681,7 +681,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<BindRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest message
         ldapDecoder.decode( stream, container );
@@ -709,7 +709,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<BindRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest message
         ldapDecoder.decode( stream, container );
@@ -738,7 +738,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<BindRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindRequest PDU
         ldapDecoder.decode( stream, container );
@@ -783,7 +783,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<BindRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest message
         try
@@ -828,7 +828,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<BindRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindRequest PDU
         ldapDecoder.decode( stream, container );
@@ -918,7 +918,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<BindRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindRequest PDU
         ldapDecoder.decode( stream, container );
@@ -983,7 +983,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<BindRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindRequest PDU
         ldapDecoder.decode( stream, container );
@@ -1058,7 +1058,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<BindRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindRequest PDU
         ldapDecoder.decode( stream, container );
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindResponseTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindResponseTest.java
index 3d3f9f8..b1e83cd 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindResponseTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindResponseTest.java
@@ -32,7 +32,7 @@ import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.api.LdapEncoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.BindResponse;
 import org.apache.directory.api.ldap.model.message.Control;
@@ -83,7 +83,7 @@ public class BindResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<BindResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<BindResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindResponse PDU
         ldapDecoder.decode( stream, container );
@@ -146,7 +146,7 @@ public class BindResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<BindResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<BindResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindResponse PDU
         ldapDecoder.decode( stream, container );
@@ -212,7 +212,7 @@ public class BindResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<BindResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<BindResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindResponse PDU
         ldapDecoder.decode( stream, container );
@@ -275,7 +275,7 @@ public class BindResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<BindResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<BindResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindResponse PDU
         ldapDecoder.decode( stream, container );
@@ -339,7 +339,7 @@ public class BindResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<BindResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<BindResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindResponse PDU
         ldapDecoder.decode( stream, container );
@@ -382,7 +382,7 @@ public class BindResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<BindResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<BindResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindResponse message
         ldapDecoder.decode( stream, container );
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/compare/CompareRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/compare/CompareRequestTest.java
index 210bf94..45f6c56 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/compare/CompareRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/compare/CompareRequestTest.java
@@ -33,7 +33,7 @@ import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.api.LdapEncoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.api.ResponseCarryingException;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.CompareRequest;
@@ -89,7 +89,7 @@ public class CompareRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<CompareRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<CompareRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the CompareRequest PDU
         ldapDecoder.decode( stream, container );
@@ -132,7 +132,7 @@ public class CompareRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<CompareRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<CompareRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the CompareRequest PDU
         ldapDecoder.decode( stream, container );
@@ -167,7 +167,7 @@ public class CompareRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<CompareRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<CompareRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the CompareRequest PDU
         ldapDecoder.decode( stream, container );
@@ -201,7 +201,7 @@ public class CompareRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<CompareRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<CompareRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the CompareRequest PDU
         ldapDecoder.decode( stream, container );
@@ -235,7 +235,7 @@ public class CompareRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<CompareRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<CompareRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the CompareRequest PDU
         try
@@ -284,7 +284,7 @@ public class CompareRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<CompareRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<CompareRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the CompareRequest PDU
         try
@@ -335,7 +335,7 @@ public class CompareRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<CompareRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<CompareRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the CompareRequest PDU
         ldapDecoder.decode( stream, container );
@@ -393,7 +393,7 @@ public class CompareRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<CompareRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<CompareRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the CompareRequest PDU
         ldapDecoder.decode( stream, container );
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/compare/CompareResponseTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/compare/CompareResponseTest.java
index 37b4a90..fee14e5 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/compare/CompareResponseTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/compare/CompareResponseTest.java
@@ -32,7 +32,7 @@ import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.api.LdapEncoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.CompareResponse;
 import org.apache.directory.api.ldap.model.message.Control;
@@ -84,7 +84,7 @@ public class CompareResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<CompareResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<CompareResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the CompareResponse PDU
         ldapDecoder.decode( stream, container );
@@ -144,7 +144,7 @@ public class CompareResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<CompareResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<CompareResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the CompareResponse PDU
         ldapDecoder.decode( stream, container );
@@ -196,7 +196,7 @@ public class CompareResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<CompareResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<CompareResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode a CompareResponse message
         ldapDecoder.decode( stream, container );
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/del/DelRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/del/DelRequestTest.java
index 3678355..b9531f8 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/del/DelRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/del/DelRequestTest.java
@@ -32,7 +32,7 @@ import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.api.LdapEncoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.api.ResponseCarryingException;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.Control;
@@ -81,7 +81,7 @@ public class DelRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<DeleteRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<DeleteRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a DelRequest PDU
         ldapDecoder.decode( stream, container );
@@ -125,7 +125,7 @@ public class DelRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<DeleteRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<DeleteRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a DelRequest PDU
         try
@@ -167,7 +167,7 @@ public class DelRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<DeleteRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<DeleteRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a DelRequest PDU
         ldapDecoder.decode( stream, container );
@@ -203,7 +203,7 @@ public class DelRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<DeleteRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<DeleteRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a DelRequest PDU
         ldapDecoder.decode( stream, container );
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/del/DelResponseTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/del/DelResponseTest.java
index 63f609b..678832d 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/del/DelResponseTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/del/DelResponseTest.java
@@ -32,7 +32,7 @@ import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.api.LdapEncoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.DeleteResponse;
@@ -86,7 +86,7 @@ public class DelResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<DeleteResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<DeleteResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the DelResponse PDU
         ldapDecoder.decode( stream, container );
@@ -128,7 +128,7 @@ public class DelResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<DeleteResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<DeleteResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode a DelResponse message
         ldapDecoder.decode( stream, container );
@@ -175,7 +175,7 @@ public class DelResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<DeleteResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<DeleteResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the DelResponse PDU
         ldapDecoder.decode( stream, container );
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/intermediate/IntermediateResponseTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/intermediate/IntermediateResponseTest.java
index 27c1185..37bf78d 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/intermediate/IntermediateResponseTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/intermediate/IntermediateResponseTest.java
@@ -32,7 +32,7 @@ import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.api.LdapEncoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.IntermediateResponse;
@@ -81,8 +81,8 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<IntermediateResponse> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<IntermediateResponse> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode the IntermediateResponse PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -140,8 +140,8 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<IntermediateResponse> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<IntermediateResponse> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode the IntermediateResponse PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -211,8 +211,8 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<IntermediateResponse> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<IntermediateResponse> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode the IntermediateResponse PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -266,8 +266,8 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<IntermediateResponse> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<IntermediateResponse> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode a IntermediateResponse PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -296,8 +296,8 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<IntermediateResponse> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<IntermediateResponse> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode a IntermediateResponse PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -328,8 +328,8 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<IntermediateResponse> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<IntermediateResponse> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode a IntermediateResponse PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -372,8 +372,8 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<IntermediateResponse> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<IntermediateResponse> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode the IntermediateResponse PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -420,8 +420,8 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<IntermediateResponse> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<IntermediateResponse> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode the IntermediateResponse PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -477,8 +477,8 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<IntermediateResponse> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<IntermediateResponse> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode the IntermediateResponse PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -524,8 +524,8 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<IntermediateResponse> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<IntermediateResponse> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode the IntermediateResponse PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modify/ModifyRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modify/ModifyRequestTest.java
index 8bd3028..263f4ed 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modify/ModifyRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modify/ModifyRequestTest.java
@@ -34,7 +34,7 @@ import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.api.LdapEncoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.api.ResponseCarryingException;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.entry.Attribute;
@@ -115,7 +115,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -207,7 +207,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
         try
@@ -274,7 +274,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -367,7 +367,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -470,7 +470,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -532,7 +532,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -560,7 +560,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -591,7 +591,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -623,7 +623,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -656,7 +656,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -690,7 +690,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -724,7 +724,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -759,7 +759,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -795,7 +795,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -832,7 +832,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
         try
@@ -884,7 +884,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -924,7 +924,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -992,7 +992,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -1068,7 +1068,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modify/ModifyResponseTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modify/ModifyResponseTest.java
index 4ec9b21..ebba13d 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modify/ModifyResponseTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modify/ModifyResponseTest.java
@@ -32,7 +32,7 @@ import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.api.LdapEncoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.ModifyResponse;
@@ -83,7 +83,7 @@ public class ModifyResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyResponse> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyResponse> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyResponse PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -143,7 +143,7 @@ public class ModifyResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyResponse> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyResponse> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyResponse PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -194,7 +194,7 @@ public class ModifyResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyResponse> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyResponse> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyResponse message
         ldapDecoder.decode( stream, ldapMessageContainer );
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modifyDn/ModifyDNRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modifyDn/ModifyDNRequestTest.java
index 416dad2..7f96494 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modifyDn/ModifyDNRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modifyDn/ModifyDNRequestTest.java
@@ -32,7 +32,7 @@ import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.api.LdapEncoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.api.ResponseCarryingException;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.Control;
@@ -88,7 +88,7 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a ModifyRequest Container
-        LdapMessageContainerDirect<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -140,7 +140,7 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a ModifyRequest Container
-        LdapMessageContainerDirect<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         try
         {
@@ -190,7 +190,7 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a ModifyRequest Container
-        LdapMessageContainerDirect<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         try
         {
@@ -240,7 +240,7 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a ModifyRequest Container
-        LdapMessageContainerDirect<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         try
         {
@@ -295,7 +295,7 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a ModifyRequest Container
-        LdapMessageContainerDirect<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -355,7 +355,7 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a ModifyRequest Container
-        LdapMessageContainerDirect<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -411,7 +411,7 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a ModifyRequest Container
-        LdapMessageContainerDirect<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -465,7 +465,7 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyDNRequest PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -494,7 +494,7 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyDNRequest PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -527,7 +527,7 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyDNRequest PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -562,7 +562,7 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyDNRequest PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modifyDn/ModifyDNResponseTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modifyDn/ModifyDNResponseTest.java
index 4caeee7..b2e1f7a 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modifyDn/ModifyDNResponseTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modifyDn/ModifyDNResponseTest.java
@@ -32,7 +32,7 @@ import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.api.LdapEncoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.ModifyDnResponse;
@@ -83,7 +83,7 @@ public class ModifyDNResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyDnResponse> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyDnResponse> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode the ModifyDNResponse PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -143,7 +143,7 @@ public class ModifyDNResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyDnResponse> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyDnResponse> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode the ModifyDNResponse PDU
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -194,7 +194,7 @@ public class ModifyDNResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ModifyDnResponse> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ModifyDnResponse> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyDNResponse message
         ldapDecoder.decode( stream, ldapMessageContainer );
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestMatchingRuleAssertionTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestMatchingRuleAssertionTest.java
index 4e026c6..e19ccf7 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestMatchingRuleAssertionTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestMatchingRuleAssertionTest.java
@@ -37,7 +37,7 @@ import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.api.LdapEncoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.constants.SchemaConstants;
 import org.apache.directory.api.ldap.model.exception.LdapException;
@@ -149,7 +149,7 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -211,7 +211,7 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
 
@@ -252,7 +252,7 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -292,7 +292,7 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -333,7 +333,7 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -406,7 +406,7 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -466,7 +466,7 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -507,7 +507,7 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -548,7 +548,7 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -589,7 +589,7 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestSubstringTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestSubstringTest.java
index c520e92..e2e29d2 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestSubstringTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestSubstringTest.java
@@ -36,7 +36,7 @@ import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.api.LdapEncoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.constants.SchemaConstants;
 import org.apache.directory.api.ldap.model.exception.LdapException;
@@ -150,7 +150,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -247,7 +247,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -347,7 +347,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -442,7 +442,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -540,7 +540,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -636,7 +636,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -732,7 +732,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -829,7 +829,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -925,7 +925,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -1020,7 +1020,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -1099,7 +1099,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -1146,7 +1146,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -1194,7 +1194,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -1243,7 +1243,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -1293,7 +1293,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -1343,7 +1343,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -1393,7 +1393,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -1446,7 +1446,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -1499,7 +1499,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -1552,7 +1552,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -1604,7 +1604,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -1656,7 +1656,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestTest.java
index a128d5d..1658a74 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestTest.java
@@ -38,7 +38,7 @@ import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.ber.tlv.TLVStateEnum;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.api.LdapEncoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.api.ResponseCarryingException;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.constants.SchemaConstants;
@@ -186,7 +186,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -329,7 +329,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -469,7 +469,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -586,7 +586,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -699,8 +699,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -815,8 +815,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -924,8 +924,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -1076,8 +1076,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         ByteBuffer streamJava5 = ByteBuffer.allocate( asn1BERJava5.length );
         streamJava5.put( asn1BERJava5 );
 
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( streamJava6, ldapMessageContainer );
 
@@ -1207,8 +1207,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -1319,8 +1319,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.put( asn1BER );
         stream.flip();
 
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -1381,8 +1381,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -1410,8 +1410,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -1491,8 +1491,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a SearchRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -1639,8 +1639,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         try
         {
@@ -1683,8 +1683,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -1760,8 +1760,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
     }
@@ -1792,8 +1792,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -1869,8 +1869,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
     }
@@ -1902,8 +1902,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -1978,8 +1978,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
     }
@@ -2012,8 +2012,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -2093,8 +2093,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
     }
@@ -2128,8 +2128,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -2165,8 +2165,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -2202,8 +2202,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -2239,8 +2239,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -2276,8 +2276,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -2313,8 +2313,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -2350,8 +2350,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -2390,8 +2390,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -2433,8 +2433,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -2509,8 +2509,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -2584,8 +2584,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -2647,8 +2647,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -2686,8 +2686,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -2725,8 +2725,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -2767,8 +2767,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -2817,8 +2817,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -2913,8 +2913,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -2997,8 +2997,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -3096,8 +3096,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -3194,8 +3194,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -3300,8 +3300,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -3413,8 +3413,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -3531,8 +3531,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -3656,8 +3656,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -3777,8 +3777,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -3903,8 +3903,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -4027,8 +4027,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -4124,8 +4124,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -4192,8 +4192,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -4287,8 +4287,8 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -4379,7 +4379,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultDoneTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultDoneTest.java
index ee6c1ff..8bb589f 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultDoneTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultDoneTest.java
@@ -32,7 +32,7 @@ import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.api.LdapEncoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
@@ -84,7 +84,7 @@ public class SearchResultDoneTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a SearchResultDone Container
-        LdapMessageContainerDirect<SearchResultDone> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchResultDone> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -144,7 +144,7 @@ public class SearchResultDoneTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchResultDone> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchResultDone> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -198,7 +198,7 @@ public class SearchResultDoneTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchResultDone> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchResultDone> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchResultDone message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -234,7 +234,7 @@ public class SearchResultDoneTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a SearchResultDone Container
-        LdapMessageContainerDirect<SearchResultDone> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchResultDone> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultEntryTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultEntryTest.java
index 165df17..b4583df 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultEntryTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultEntryTest.java
@@ -33,7 +33,7 @@ import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.api.LdapEncoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.entry.Attribute;
 import org.apache.directory.api.ldap.model.entry.Entry;
@@ -95,8 +95,8 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchResultEntry> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -173,8 +173,8 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchResultEntry> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -209,8 +209,8 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
 
         // We can't compare the encodings, the order of the attributes has
         // changed
-        LdapMessageContainerDirect<SearchResultEntry> ldapMessageContainer2 =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchResultEntry> ldapMessageContainer2 =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( result, ldapMessageContainer2 );
 
@@ -264,8 +264,8 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchResultEntry> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -304,8 +304,8 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
 
         // We can't compare the encodings, the order of the attributes has
         // changed
-        LdapMessageContainerDirect<SearchResultEntry> ldapMessageContainer2 =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchResultEntry> ldapMessageContainer2 =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( buffer.getBytes(), ldapMessageContainer2 );
 
@@ -338,8 +338,8 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchResultEntry> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
     }
@@ -370,8 +370,8 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchResultEntry> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
     }
@@ -403,8 +403,8 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchResultEntry> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
     }
@@ -439,8 +439,8 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchResultEntry> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -492,8 +492,8 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchResultEntry> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
     }
@@ -535,8 +535,8 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchResultEntry> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
     }
@@ -573,8 +573,8 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchResultEntry> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
     }
@@ -612,8 +612,8 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchResultEntry> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
     }
@@ -652,8 +652,8 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchResultEntry> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -720,8 +720,8 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchResultEntry> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -794,8 +794,8 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchResultEntry> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -870,8 +870,8 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchResultEntry> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -946,8 +946,8 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchResultEntry> ldapMessageContainer =
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultReferenceTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultReferenceTest.java
index 96c3351..d8dd833 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultReferenceTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultReferenceTest.java
@@ -36,7 +36,7 @@ import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.api.LdapEncoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.Referral;
@@ -113,8 +113,8 @@ public class SearchResultReferenceTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchResultReference> ldapMessageContainer = 
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchResultReference> ldapMessageContainer = 
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -229,8 +229,8 @@ public class SearchResultReferenceTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchResultReference> ldapMessageContainer = 
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchResultReference> ldapMessageContainer = 
+            new LdapMessageContainer<>( codec );
 
         ldapMessageContainer.clean();
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -306,8 +306,8 @@ public class SearchResultReferenceTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<SearchResultReference> ldapMessageContainer = 
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchResultReference> ldapMessageContainer = 
+            new LdapMessageContainer<>( codec );
 
         // Decode a SearchResultReference message
         ldapDecoder.decode( stream, ldapMessageContainer );
@@ -337,8 +337,8 @@ public class SearchResultReferenceTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<SearchResultReference> ldapMessageContainer = 
-            new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<SearchResultReference> ldapMessageContainer = 
+            new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/unbind/UnBindRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/unbind/UnBindRequestTest.java
index d68c9b8..21b654c 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/unbind/UnBindRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/unbind/UnBindRequestTest.java
@@ -32,7 +32,7 @@ import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.api.LdapEncoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.UnbindRequest;
@@ -71,7 +71,7 @@ public class UnBindRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<UnbindRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<UnbindRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -113,7 +113,7 @@ public class UnBindRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a BindRequest Container
-        LdapMessageContainerDirect<UnbindRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<UnbindRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         ldapDecoder.decode( stream, ldapMessageContainer );
 
@@ -159,7 +159,7 @@ public class UnBindRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<UnbindRequest> ldapMessageContainer = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<UnbindRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a UnbindRequest message
         ldapDecoder.decode( stream, ldapMessageContainer );
diff --git a/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/extended/ExtendedRequestTest.java b/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/extended/ExtendedRequestTest.java
index 85c1bd4..5e68f91 100644
--- a/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/extended/ExtendedRequestTest.java
+++ b/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/extended/ExtendedRequestTest.java
@@ -32,7 +32,7 @@ import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.api.LdapEncoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.extras.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.extras.extended.ads_impl.cancel.CancelFactory;
 import org.apache.directory.api.ldap.extras.extended.ads_impl.startTls.StartTlsFactory;
@@ -94,7 +94,7 @@ public class ExtendedRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ExtendedRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ExtendedRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
         ldapDecoder.decode( stream, container );
@@ -152,7 +152,7 @@ public class ExtendedRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ExtendedRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ExtendedRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
         ldapDecoder.decode( stream, container );
@@ -218,7 +218,7 @@ public class ExtendedRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ExtendedRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ExtendedRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
         ldapDecoder.decode( stream, container );
@@ -272,7 +272,7 @@ public class ExtendedRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ExtendedRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ExtendedRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
         ldapDecoder.decode( stream, container );
@@ -301,7 +301,7 @@ public class ExtendedRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ExtendedRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ExtendedRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
         ldapDecoder.decode( stream, container );
@@ -333,7 +333,7 @@ public class ExtendedRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ExtendedRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ExtendedRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
         ldapDecoder.decode( stream, container );
@@ -365,7 +365,7 @@ public class ExtendedRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ExtendedRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ExtendedRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
         ldapDecoder.decode( stream, container );
@@ -415,7 +415,7 @@ public class ExtendedRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ExtendedRequest> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ExtendedRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
         ldapDecoder.decode( stream, container );
diff --git a/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/extended/ExtendedResponseTest.java b/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/extended/ExtendedResponseTest.java
index fee5a19..f3d4572 100644
--- a/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/extended/ExtendedResponseTest.java
+++ b/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/extended/ExtendedResponseTest.java
@@ -32,7 +32,7 @@ import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.api.LdapEncoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.extras.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.extras.extended.ads_impl.gracefulDisconnect.GracefulDisconnectFactory;
 import org.apache.directory.api.ldap.extras.extended.gracefulDisconnect.GracefulDisconnectResponse;
@@ -103,7 +103,7 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ExtendedResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ExtendedResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
         ldapDecoder.decode( stream, container );
@@ -179,7 +179,7 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ExtendedResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ExtendedResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
         ldapDecoder.decode( stream, container );
@@ -244,7 +244,7 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ExtendedResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ExtendedResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
         ldapDecoder.decode( stream, container );
@@ -307,7 +307,7 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ExtendedResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ExtendedResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
         ldapDecoder.decode( stream, container );
@@ -362,7 +362,7 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ExtendedResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ExtendedResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
         ldapDecoder.decode( stream, container );
@@ -400,7 +400,7 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ExtendedResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ExtendedResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
         ldapDecoder.decode( stream, container );
@@ -439,7 +439,7 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ExtendedResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ExtendedResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
         ldapDecoder.decode( stream, container );
@@ -478,7 +478,7 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ExtendedResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ExtendedResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
         ldapDecoder.decode( stream, container );
@@ -544,7 +544,7 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ExtendedResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ExtendedResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
         ldapDecoder.decode( stream, container );
@@ -612,7 +612,7 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ExtendedResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ExtendedResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
         ldapDecoder.decode( stream, container );
@@ -698,7 +698,7 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainerDirect<ExtendedResponse> container = new LdapMessageContainerDirect<>( codec );
+        LdapMessageContainer<ExtendedResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
         ldapDecoder.decode( stream, container );
diff --git a/ldap/net/mina/src/main/java/org/apache/directory/api/ldap/codec/protocol/mina/LdapProtocolDecoder.java b/ldap/net/mina/src/main/java/org/apache/directory/api/ldap/codec/protocol/mina/LdapProtocolDecoder.java
index 2a2939e..a20ee1c 100644
--- a/ldap/net/mina/src/main/java/org/apache/directory/api/ldap/codec/protocol/mina/LdapProtocolDecoder.java
+++ b/ldap/net/mina/src/main/java/org/apache/directory/api/ldap/codec/protocol/mina/LdapProtocolDecoder.java
@@ -29,7 +29,7 @@ import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.ber.tlv.TLVStateEnum;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.LdapDecoder;
-import org.apache.directory.api.ldap.codec.api.LdapMessageContainerDirect;
+import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.api.ResponseCarryingException;
 import org.apache.directory.api.ldap.model.constants.Loggers;
 import org.apache.directory.api.ldap.model.exception.ResponseCarryingMessageException;
@@ -74,8 +74,8 @@ public class LdapProtocolDecoder implements ProtocolDecoder
     public void decode( IoSession session, IoBuffer in, ProtocolDecoderOutput out ) throws Exception
     {
         @SuppressWarnings("unchecked")
-        LdapMessageContainerDirect<AbstractMessage> messageContainer =
-            ( LdapMessageContainerDirect<AbstractMessage> )
+        LdapMessageContainer<AbstractMessage> messageContainer =
+            ( LdapMessageContainer<AbstractMessage> )
             session.getAttribute( LdapDecoder.MESSAGE_CONTAINER_ATTR );
 
         if ( session.containsAttribute( LdapDecoder.MAX_PDU_SIZE_ATTR ) )
@@ -108,7 +108,7 @@ public class LdapProtocolDecoder implements ProtocolDecoder
      * @param decodedMessages The list of decoded messages
      * @throws DecoderException If the decoding failed
      */
-    private void decode( ByteBuffer buffer, LdapMessageContainerDirect<AbstractMessage> messageContainer,
+    private void decode( ByteBuffer buffer, LdapMessageContainer<AbstractMessage> messageContainer,
         List<Message> decodedMessages ) throws DecoderException
     {
         buffer.mark();