diff --git a/dom/src/main/java/org/apache/james/mime4j/message/DefaultMessageBuilder.java b/dom/src/main/java/org/apache/james/mime4j/message/DefaultMessageBuilder.java
index db4babe..6221a30 100644
--- a/dom/src/main/java/org/apache/james/mime4j/message/DefaultMessageBuilder.java
+++ b/dom/src/main/java/org/apache/james/mime4j/message/DefaultMessageBuilder.java
@@ -304,9 +304,7 @@
                     strict ? DefaultFieldParser.getParser() : LenientFieldParser.getParser(), mon);
             BodyFactory bf = bodyFactory != null ? bodyFactory : new BasicBodyFactory();
             MimeStreamParser parser = new MimeStreamParser(cfg, mon, bdb);
-            // EntityBuilder expect the parser will send ParserFields for the well known fields
-            // It will throw exceptions, otherwise.
-            parser.setContentHandler(new EntityBuilder(message, bf));
+            parser.setContentHandler(new ParserStreamContentHandler(message, bf));
             parser.setContentDecoding(contentDecoding);
             if (flatMode) {
                 parser.setFlat();
diff --git a/dom/src/main/java/org/apache/james/mime4j/message/MessageBuilder.java b/dom/src/main/java/org/apache/james/mime4j/message/MessageBuilder.java
index 1f163cb..31a6c40 100644
--- a/dom/src/main/java/org/apache/james/mime4j/message/MessageBuilder.java
+++ b/dom/src/main/java/org/apache/james/mime4j/message/MessageBuilder.java
@@ -881,7 +881,7 @@
         MimeStreamParser parser = new MimeStreamParser(currentConfig, currentMonitor, currentBodyDescBuilder);
 
         Message message = new MessageImpl();
-        parser.setContentHandler(new EntityBuilder(message, currentBodyFactory));
+        parser.setContentHandler(new ParserStreamContentHandler(message, currentBodyFactory));
         parser.setContentDecoding(!rawContent);
         if (flatMode) {
             parser.setFlat();
diff --git a/dom/src/main/java/org/apache/james/mime4j/message/EntityBuilder.java b/dom/src/main/java/org/apache/james/mime4j/message/ParserStreamContentHandler.java
similarity index 88%
rename from dom/src/main/java/org/apache/james/mime4j/message/EntityBuilder.java
rename to dom/src/main/java/org/apache/james/mime4j/message/ParserStreamContentHandler.java
index a405ca3..5dc3ccd 100644
--- a/dom/src/main/java/org/apache/james/mime4j/message/EntityBuilder.java
+++ b/dom/src/main/java/org/apache/james/mime4j/message/ParserStreamContentHandler.java
@@ -39,14 +39,14 @@
  * A <code>ContentHandler</code> for building an <code>Entity</code> to be
  * used in conjunction with a {@link org.apache.james.mime4j.parser.MimeStreamParser}.
  */
-class EntityBuilder implements ContentHandler {
+class ParserStreamContentHandler implements ContentHandler {
 
     private final Entity entity;
-    private MessageImplFactory messageImplFactory;
+    private final MessageImplFactory messageImplFactory;
     private final BodyFactory bodyFactory;
     private final Stack<Object> stack;
 
-    EntityBuilder(
+    ParserStreamContentHandler(
             final Entity entity,
             final BodyFactory bodyFactory) {
         this.entity = entity;
@@ -55,7 +55,7 @@
         this.stack = new Stack<Object>();
     }
 
-    EntityBuilder(
+    ParserStreamContentHandler(
             final Entity entity,
             final MessageImplFactory messageImplFactory,
             final BodyFactory bodyFactory) {
@@ -118,25 +118,7 @@
     public void body(BodyDescriptor bd, final InputStream is) throws MimeException, IOException {
         expect(Entity.class);
 
-        // NO NEED TO MANUALLY RUN DECODING.
-        // The parser has a "setContentDecoding" method. We should
-        // simply instantiate the MimeStreamParser with that method.
-
-        // final String enc = bd.getTransferEncoding();
-
         final Body body;
-
-        /*
-        final InputStream decodedStream;
-        if (MimeUtil.ENC_BASE64.equals(enc)) {
-            decodedStream = new Base64InputStream(is);
-        } else if (MimeUtil.ENC_QUOTED_PRINTABLE.equals(enc)) {
-            decodedStream = new QuotedPrintableInputStream(is);
-        } else {
-            decodedStream = is;
-        }
-        */
-
         if (bd.getMimeType().startsWith("text/")) {
             body = bodyFactory.textBody(is, bd.getCharset());
         } else {
