diff --git a/status-printer/src/main/java/org/apache/felix/status/PrinterMode.java b/status-printer/src/main/java/org/apache/felix/status/PrinterMode.java
index 164faa1..071da5b 100644
--- a/status-printer/src/main/java/org/apache/felix/status/PrinterMode.java
+++ b/status-printer/src/main/java/org/apache/felix/status/PrinterMode.java
@@ -26,6 +26,6 @@
     TEXT,          // plain text
     HTML_BODY,     // HTML which can be placed inside a HTML body element (no external references)
     JSON,          // JSON output
-    ZIP_FILE_BIN,  // file content for a zip
+    ZIP_FILE_TEXT, // file content for a zip
     ZIP_FILE_JSON  // json file content for a zip
 }
diff --git a/status-printer/src/main/java/org/apache/felix/status/ZipAttachmentProvider.java b/status-printer/src/main/java/org/apache/felix/status/ZipAttachmentProvider.java
index b78243b..76f328d 100644
--- a/status-printer/src/main/java/org/apache/felix/status/ZipAttachmentProvider.java
+++ b/status-printer/src/main/java/org/apache/felix/status/ZipAttachmentProvider.java
@@ -31,7 +31,7 @@
  * as a {@link StatusPrinter} but not as a
  * {@link ZipAttachmentProvider} service and the provider
  * should either support {@link PrinterMode.ZIP_FILE_JSON}
- * or {@link PrinterMode.ZIP_FILE_BIN}
+ * or {@link PrinterMode.ZIP_FILE_TEXT}
  */
 public interface ZipAttachmentProvider extends StatusPrinter {
 
diff --git a/status-printer/src/main/java/org/apache/felix/status/impl/AbstractWebConsolePlugin.java b/status-printer/src/main/java/org/apache/felix/status/impl/AbstractWebConsolePlugin.java
index bf4ac58..49596c9 100644
--- a/status-printer/src/main/java/org/apache/felix/status/impl/AbstractWebConsolePlugin.java
+++ b/status-printer/src/main/java/org/apache/felix/status/impl/AbstractWebConsolePlugin.java
@@ -141,7 +141,7 @@
             zip.closeEntry();
 
             final ZipConfigurationWriter pw = new ZipConfigurationWriter( zip );
-            printConfigurationStatus( pw, PrinterMode.ZIP_FILE_BIN, handler );
+            printConfigurationStatus( pw, PrinterMode.ZIP_FILE_TEXT, handler );
             pw.counter = 0;
             printConfigurationStatus( pw, PrinterMode.ZIP_FILE_JSON, handler );
 
@@ -220,7 +220,7 @@
             if ( handler.supports(PrinterMode.JSON) ) {
                 pw.print("<button type=\"button\" class=\"downloadJson\" style=\"float: right; margin-right: 30px; margin-top: 5px;\">Download As JSON</button>");
             }
-            if ( handler.supports(PrinterMode.ZIP_FILE_BIN) || handler.supports(PrinterMode.ZIP_FILE_JSON) ) {
+            if ( handler.supports(PrinterMode.ZIP_FILE_TEXT) || handler.supports(PrinterMode.ZIP_FILE_JSON) ) {
                 pw.print("<button type=\"button\" class=\"downloadZip\" style=\"float: right; margin-right: 30px; margin-top: 5px;\">Download As Zip</button>");
             }
             if ( handler.supports(PrinterMode.TEXT ) ) {
@@ -456,7 +456,7 @@
                 final StatusPrinterHandler handler)
         throws IOException {
             final String title = getFormattedTitle(handler.getTitle());
-            if ( mode == PrinterMode.ZIP_FILE_BIN ) {
+            if ( mode == PrinterMode.ZIP_FILE_TEXT ) {
                 super.printStatus(mode, handler);
                 handler.addAttachments(title.concat("/"), this.zip);
             } else {
@@ -469,7 +469,7 @@
                 flush();
 
                 zip.closeEntry();
-                if ( !handler.supports(PrinterMode.ZIP_FILE_BIN) ) {
+                if ( !handler.supports(PrinterMode.ZIP_FILE_TEXT) ) {
                     handler.addAttachments(title.concat("/"), this.zip);
                 }
             }
diff --git a/status-printer/src/main/java/org/apache/felix/status/impl/webconsole/ConfigurationPrinterAdapter.java b/status-printer/src/main/java/org/apache/felix/status/impl/webconsole/ConfigurationPrinterAdapter.java
index 071689d..f41b586 100644
--- a/status-printer/src/main/java/org/apache/felix/status/impl/webconsole/ConfigurationPrinterAdapter.java
+++ b/status-printer/src/main/java/org/apache/felix/status/impl/webconsole/ConfigurationPrinterAdapter.java
@@ -183,7 +183,7 @@
     public String[] getPrinterModes() {
         final Set<String> list = new HashSet<String>();
         if ( this.match(ConsoleConstants.MODE_TXT) || this.match(ConsoleConstants.MODE_ZIP) ) {
-            list.add(PrinterMode.ZIP_FILE_BIN.name());
+            list.add(PrinterMode.ZIP_FILE_TEXT.name());
         }
         if ( this.match(ConsoleConstants.MODE_WEB) ) {
             if ( !escapeHtml ) {
diff --git a/status-printer/src/main/java/org/apache/felix/status/impl/webconsole/WebConsoleAdapter.java b/status-printer/src/main/java/org/apache/felix/status/impl/webconsole/WebConsoleAdapter.java
index b5e0dac..9fa457c 100644
--- a/status-printer/src/main/java/org/apache/felix/status/impl/webconsole/WebConsoleAdapter.java
+++ b/status-printer/src/main/java/org/apache/felix/status/impl/webconsole/WebConsoleAdapter.java
@@ -113,7 +113,7 @@
                         m = ConsoleConstants.MODE_WEB;
                     } else if ( mode == PrinterMode.TEXT ) {
                         m = ConsoleConstants.MODE_TXT;
-                    } else if ( mode == PrinterMode.ZIP_FILE_BIN ) {
+                    } else if ( mode == PrinterMode.ZIP_FILE_TEXT ) {
                         m = ConsoleConstants.MODE_ZIP;
                     } else {
                         m = null;
