diff --git a/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/AllTagConstants.java b/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/AllTagConstants.java
index 7504f31..4b0c213 100644
--- a/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/AllTagConstants.java
+++ b/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/AllTagConstants.java
@@ -27,9 +27,11 @@
             SanselanConstants
 {
     public static final List<TagInfo> ALL_TAGS = Collections.unmodifiableList(
-            TagConstantsUtils.mergeTagLists(TiffTagConstants.ALL_TIFF_TAGS,
+            TagConstantsUtils.mergeTagLists(
+                    Tiff4TagConstants.ALL_TIFF_4_TAGS,
+                    TiffTagConstants.ALL_TIFF_TAGS,
                     ExifTagConstants.ALL_EXIF_TAGS,
-                    TiffClassFTagConstants.ALL_TIFF_CLASS_F_TAGS,
+                    Rfc2301TagConstants.ALL_RFC_2301_TAGS,
                     AdobePageMaker6TagConstants.ALL_ADOBE_PAGEMAKER_6_TAG_CONSTANTS,
                     GpsTagConstants.ALL_GPS_TAGS));
 
diff --git a/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/ExifTagConstants.java b/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/ExifTagConstants.java
index f0b0d1a..0bad046 100644
--- a/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/ExifTagConstants.java
+++ b/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/ExifTagConstants.java
@@ -83,38 +83,8 @@
     public static final TagInfoLong EXIF_TAG_JPG_FROM_RAW_LENGTH_SUB_IFD2 = new TagInfoLong(
             "Jpg From Raw Length", 0x0117, 1,
             TiffDirectoryType.EXIF_DIRECTORY_SUB_IFD2);
-    public static final TagInfoShort EXIF_TAG_COLOR_RESPONSE_UNIT = new TagInfoShort(
-            "Color Response Unit", 0x012c, 1,
-            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
     public static final TagInfoUndefined EXIF_TAG_JPEGTABLES = new TagInfoUndefined("JPEGTables",
             0x015b, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
-    public static final TagInfoLong EXIF_TAG_GLOBAL_PARAMETERS_IFD = new TagInfoLong(
-            "Global Parameters IFD", 0x0190, 1,
-            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN, true);
-    public static final TagInfoLong EXIF_TAG_PROFILE_TYPE = new TagInfoLong(
-            "Profile Type", 0x0191, 1,
-            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
-    public static final int PROFILE_TYPE_VALUE_UNSPECIFIED = 0;
-    public static final int PROFILE_TYPE_VALUE_GROUP_3_FAX = 1;
-    public static final TagInfoByte EXIF_TAG_FAX_PROFILE = new TagInfoByte(
-            "Fax Profile", 0x0192, 1,
-            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
-    public static final int FAX_PROFILE_VALUE_UNKNOWN = 0;
-    public static final int FAX_PROFILE_VALUE_MINIMAL_B_AND_W_LOSSLESS_S = 1;
-    public static final int FAX_PROFILE_VALUE_EXTENDED_B_AND_W_LOSSLESS_F = 2;
-    public static final int FAX_PROFILE_VALUE_LOSSLESS_JBIG_B_AND_W_J = 3;
-    public static final int FAX_PROFILE_VALUE_LOSSY_COLOR_AND_GRAYSCALE_C = 4;
-    public static final int FAX_PROFILE_VALUE_LOSSLESS_COLOR_AND_GRAYSCALE_L = 5;
-    public static final int FAX_PROFILE_VALUE_MIXED_RASTER_CONTENT_M = 6;
-    public static final TagInfoLong EXIF_TAG_CODING_METHODS = new TagInfoLong(
-            "Coding Methods", 0x0193, 1,
-            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
-    public static final TagInfoByte EXIF_TAG_VERSION_YEAR = new TagInfoByte(
-            "Version Year", 0x0194, 4,
-            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
-    public static final TagInfoByte EXIF_TAG_MODE_NUMBER = new TagInfoByte(
-            "Mode Number", 0x0195, 1,
-            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
     public static final TagInfoRational EXIF_TAG_DECODE = new TagInfoRational("Decode", 0x01b1,
             -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
     public static final TagInfoShort EXIF_TAG_DEFAULT_IMAGE_COLOR = new TagInfoShort(
@@ -1050,11 +1020,8 @@
                     EXIF_TAG_PREVIEW_IMAGE_LENGTH_IFD0,
                     EXIF_TAG_PREVIEW_IMAGE_LENGTH_SUB_IFD1,
                     EXIF_TAG_JPG_FROM_RAW_LENGTH_SUB_IFD2,
-                    EXIF_TAG_COLOR_RESPONSE_UNIT,
                     EXIF_TAG_JPEGTABLES,
-                    EXIF_TAG_GLOBAL_PARAMETERS_IFD, EXIF_TAG_PROFILE_TYPE,
-                    EXIF_TAG_FAX_PROFILE, EXIF_TAG_CODING_METHODS,
-                    EXIF_TAG_VERSION_YEAR, EXIF_TAG_MODE_NUMBER, EXIF_TAG_DECODE,
+                    EXIF_TAG_DECODE,
                     EXIF_TAG_DEFAULT_IMAGE_COLOR,
                     EXIF_TAG_PREVIEW_IMAGE_START_MAKER_NOTES,
                     EXIF_TAG_JPG_FROM_RAW_START_SUB_IFD,
diff --git a/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/Rfc2301TagConstants.java b/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/Rfc2301TagConstants.java
new file mode 100644
index 0000000..b8bf821
--- /dev/null
+++ b/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/Rfc2301TagConstants.java
@@ -0,0 +1,82 @@
+package org.apache.commons.sanselan.formats.tiff.constants;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfo;
+import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfoByte;
+import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfoLong;
+import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfoShort;
+import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfoShortOrLong;
+
+/**
+ * RFC 2301: File Format for Internet Fax
+ * <BR>
+ * www.ietf.org/rfc/rfc2301.txt
+ * <BR>
+ * Also subsumes  "The spirit of TIFF class F"
+ * <BR>
+ * http://cool.conservation-us.org/bytopic/imaging/std/tiff-f.html
+ */
+public interface Rfc2301TagConstants extends TiffFieldTypeConstants {
+    public static final TagInfoShortOrLong TIFF_TAG_BAD_FAX_LINES = new TagInfoShortOrLong(
+            "Bad Fax Lines", 0x0146, 1,
+            TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+    
+    public static final TagInfoShort TIFF_TAG_CLEAN_FAX_DATA = new TagInfoShort(
+            "Clean Fax Data", 0x0147, 1,
+            TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+    public static final int CLEAN_FAX_DATA_VALUE_CLEAN = 0;
+    public static final int CLEAN_FAX_DATA_VALUE_REGENERATED = 1;
+    public static final int CLEAN_FAX_DATA_VALUE_UNCLEAN = 2;
+    
+    public static final TagInfoShortOrLong TIFF_TAG_CONSECUTIVE_BAD_FAX_LINES = new TagInfoShortOrLong(
+            "Consecutive Bad Fax Lines", 0x0148,
+            1, TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+    public static final TagInfoLong TIFF_TAG_GLOBAL_PARAMETERS_IFD = new TagInfoLong(
+            "Global Parameters IFD", 0x0190, 1,
+            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN, true);
+    
+    public static final TagInfoLong TIFF_TAG_PROFILE_TYPE = new TagInfoLong(
+            "Profile Type", 0x0191, 1,
+            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
+    public static final int PROFILE_TYPE_VALUE_UNSPECIFIED = 0;
+    public static final int PROFILE_TYPE_VALUE_GROUP_3_FAX = 1;
+    
+    public static final TagInfoByte TIFF_TAG_FAX_PROFILE = new TagInfoByte(
+            "Fax Profile", 0x0192, 1,
+            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
+    public static final int FAX_PROFILE_VALUE_UNKNOWN = 0;
+    public static final int FAX_PROFILE_VALUE_MINIMAL_B_AND_W_LOSSLESS_S = 1;
+    public static final int FAX_PROFILE_VALUE_EXTENDED_B_AND_W_LOSSLESS_F = 2;
+    public static final int FAX_PROFILE_VALUE_LOSSLESS_JBIG_B_AND_W_J = 3;
+    public static final int FAX_PROFILE_VALUE_LOSSY_COLOR_AND_GRAYSCALE_C = 4;
+    public static final int FAX_PROFILE_VALUE_LOSSLESS_COLOR_AND_GRAYSCALE_L = 5;
+    public static final int FAX_PROFILE_VALUE_MIXED_RASTER_CONTENT_M = 6;
+    
+    public static final TagInfoLong TIFF_TAG_CODING_METHODS = new TagInfoLong(
+            "Coding Methods", 0x0193, 1,
+            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
+    
+    public static final TagInfoByte TIFF_TAG_VERSION_YEAR = new TagInfoByte(
+            "Version Year", 0x0194, 4,
+            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
+    
+    public static final TagInfoByte TIFF_TAG_MODE_NUMBER = new TagInfoByte(
+            "Mode Number", 0x0195, 1,
+            TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
+
+    public static final List<TagInfo> ALL_RFC_2301_TAGS =
+            Collections.unmodifiableList(Arrays.asList(
+                    TIFF_TAG_BAD_FAX_LINES,
+                    TIFF_TAG_CLEAN_FAX_DATA,
+                    TIFF_TAG_CONSECUTIVE_BAD_FAX_LINES,
+                    TIFF_TAG_GLOBAL_PARAMETERS_IFD,
+                    TIFF_TAG_PROFILE_TYPE,
+                    TIFF_TAG_FAX_PROFILE,
+                    TIFF_TAG_CODING_METHODS,
+                    TIFF_TAG_VERSION_YEAR,
+                    TIFF_TAG_MODE_NUMBER));
+}
diff --git a/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/Tiff4TagConstants.java b/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/Tiff4TagConstants.java
new file mode 100644
index 0000000..cfc66e9
--- /dev/null
+++ b/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/Tiff4TagConstants.java
@@ -0,0 +1,28 @@
+package org.apache.commons.sanselan.formats.tiff.constants;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfo;
+import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfoShort;
+
+/**
+ * Tags in TIFF4 but NOT in TIFF6.
+ * <BR>
+ * http://cool.conservation-us.org/bytopic/imaging/std/tiff4.html
+ */
+public class Tiff4TagConstants {
+    public static final TagInfoShort TIFF_TAG_COLOR_RESPONSE_UNIT = new TagInfoShort(
+            "Color Response Unit", 0x12C, 1,
+            TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+    public static final int COLOR_RESPONSE_UNIT_VALUE_0_1 = 1;
+    public static final int COLOR_RESPONSE_UNIT_VALUE_0_01 = 2;
+    public static final int COLOR_RESPONSE_UNIT_VALUE_0_001 = 3;
+    public static final int COLOR_RESPONSE_UNIT_VALUE_0_0001 = 4;
+    public static final int COLOR_RESPONSE_UNIT_VALUE_0_00001 = 5;
+    
+    public static final List<TagInfo> ALL_TIFF_4_TAGS =
+            Collections.unmodifiableList(Arrays.asList(
+                    new TagInfo[] {TIFF_TAG_COLOR_RESPONSE_UNIT}));
+}
diff --git a/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/TiffClassFTagConstants.java b/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/TiffClassFTagConstants.java
deleted file mode 100644
index c1661cc..0000000
--- a/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/TiffClassFTagConstants.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.apache.commons.sanselan.formats.tiff.constants;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfo;
-import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfoShort;
-import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfoShortOrLong;
-
-/**
- * "The spirit of TIFF class F"
- * http://cool.conservation-us.org/bytopic/imaging/std/tiff-f.html
- */
-public interface TiffClassFTagConstants extends TiffFieldTypeConstants {
-    public static final TagInfoShortOrLong TIFF_TAG_BAD_FAX_LINES = new TagInfoShortOrLong(
-            "Bad Fax Lines", 0x0146, 1,
-            TiffDirectoryType.TIFF_DIRECTORY_ROOT);
-    
-    public static final TagInfoShort TIFF_TAG_CLEAN_FAX_DATA = new TagInfoShort(
-            "Clean Fax Data", 0x0147, 1,
-            TiffDirectoryType.TIFF_DIRECTORY_ROOT);
-    public static final int CLEAN_FAX_DATA_VALUE_CLEAN = 0;
-    public static final int CLEAN_FAX_DATA_VALUE_REGENERATED = 1;
-    public static final int CLEAN_FAX_DATA_VALUE_UNCLEAN = 2;
-    
-    public static final TagInfoShortOrLong TIFF_TAG_CONSECUTIVE_BAD_FAX_LINES = new TagInfoShortOrLong(
-            "Consecutive Bad Fax Lines", 0x0148,
-            1, TiffDirectoryType.TIFF_DIRECTORY_ROOT);
-
-    public static final List<TagInfo> ALL_TIFF_CLASS_F_TAGS =
-            Collections.unmodifiableList(Arrays.asList(
-                    TIFF_TAG_BAD_FAX_LINES, TIFF_TAG_CLEAN_FAX_DATA,
-                    TIFF_TAG_CONSECUTIVE_BAD_FAX_LINES));
-}
diff --git a/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/TiffTagConstants.java b/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/TiffTagConstants.java
index 5059e68..925f1ee 100644
--- a/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/TiffTagConstants.java
+++ b/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/TiffTagConstants.java
@@ -33,6 +33,8 @@
 
 /**
  * Tags from the TIFF6 specification.
+ * <BR>
+ * http://partners.adobe.com/public/developer/en/tiff/TIFF6.pdf
  */
 public interface TiffTagConstants
         extends
@@ -232,10 +234,10 @@
             "Gray Response Unit", 0x122, 1,
             TiffDirectoryType.TIFF_DIRECTORY_ROOT);
     public static final int GRAY_RESPONSE_UNIT_VALUE_0_1 = 1;
-    public static final int GRAY_RESPONSE_UNIT_VALUE_0_001 = 2;
-    public static final int GRAY_RESPONSE_UNIT_VALUE_0_0001 = 3;
-    public static final int GRAY_RESPONSE_UNIT_VALUE_1E_05 = 4;
-    public static final int GRAY_RESPONSE_UNIT_VALUE_1E_06 = 5;
+    public static final int GRAY_RESPONSE_UNIT_VALUE_0_01 = 2;
+    public static final int GRAY_RESPONSE_UNIT_VALUE_0_001 = 3;
+    public static final int GRAY_RESPONSE_UNIT_VALUE_0_0001 = 4;
+    public static final int GRAY_RESPONSE_UNIT_VALUE_0_00001 = 5;
 
     public static final TagInfoShort TIFF_TAG_GRAY_RESPONSE_CURVE = new TagInfoShort(
             "Gray Response Curve", 0x123, -1,
diff --git a/src/test/java/org/apache/commons/sanselan/formats/tiff/TiffTagIntegrityTest.java b/src/test/java/org/apache/commons/sanselan/formats/tiff/TiffTagIntegrityTest.java
index e98a478..8fb5067 100644
--- a/src/test/java/org/apache/commons/sanselan/formats/tiff/TiffTagIntegrityTest.java
+++ b/src/test/java/org/apache/commons/sanselan/formats/tiff/TiffTagIntegrityTest.java
@@ -23,7 +23,7 @@
 import org.apache.commons.sanselan.formats.tiff.constants.AdobePageMaker6TagConstants;
 import org.apache.commons.sanselan.formats.tiff.constants.ExifTagConstants;
 import org.apache.commons.sanselan.formats.tiff.constants.GpsTagConstants;
-import org.apache.commons.sanselan.formats.tiff.constants.TiffClassFTagConstants;
+import org.apache.commons.sanselan.formats.tiff.constants.Rfc2301TagConstants;
 import org.apache.commons.sanselan.formats.tiff.constants.TiffTagConstants;
 import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfo;
 
@@ -32,7 +32,7 @@
         verifyFields(TiffTagConstants.class, TiffTagConstants.ALL_TIFF_TAGS);
         verifyFields(GpsTagConstants.class, GpsTagConstants.ALL_GPS_TAGS);
         verifyFields(ExifTagConstants.class, ExifTagConstants.ALL_EXIF_TAGS);
-        verifyFields(TiffClassFTagConstants.class, TiffClassFTagConstants.ALL_TIFF_CLASS_F_TAGS);
+        verifyFields(Rfc2301TagConstants.class, Rfc2301TagConstants.ALL_RFC_2301_TAGS);
         verifyFields(AdobePageMaker6TagConstants.class, AdobePageMaker6TagConstants.ALL_ADOBE_PAGEMAKER_6_TAG_CONSTANTS);
     }
     
