diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/wordperfect/WP6TextExtractor.java b/tika-parsers/src/main/java/org/apache/tika/parser/wordperfect/WP6TextExtractor.java
index baf999a..4442608 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/wordperfect/WP6TextExtractor.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/wordperfect/WP6TextExtractor.java
@@ -17,6 +17,9 @@
 import java.io.IOException;
 import java.io.InputStream;
 
+import org.apache.log4j.LogManager;
+import org.apache.log4j.Logger;
+import org.apache.tika.exception.TikaException;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.metadata.WordPerfect;
 import org.apache.tika.sax.XHTMLContentHandler;
@@ -29,9 +32,14 @@
  */
 class WP6TextExtractor {
 
+    private static final Logger LOG = 
+            LogManager.getLogger(WP6TextExtractor.class);
+    
+    public static final int MIN_SUPPORTED_MAJOR_VERSION = 2;
+    
     public void extract(
             InputStream input, XHTMLContentHandler xhtml, Metadata metadata) 
-            throws IOException, SAXException {
+            throws IOException, SAXException, TikaException {
         WPInputStream in = new WPInputStream(input);
         
         WP6FileHeader header = parseFileHeader(in);
@@ -178,17 +186,17 @@
     }
     
     private WP6FileHeader parseFileHeader(WPInputStream in) 
-            throws IOException {
+            throws IOException, TikaException {
         WP6FileHeader header = new WP6FileHeader();
 
         // File header
         in.mark(30);
         header.setFileId(in.readWPString(4));         // 1-4
         header.setDocAreaPointer(in.readWPLong());    // 5-8
-        header.setProductType(in.readWP());             // 9
+        header.setProductType(in.readWP());           // 9
         header.setFileType(in.readWPChar());          // 10
-        header.setMajorVersion(in.readWP());            // 11
-        header.setMinorVersion(in.readWP());            // 12
+        header.setMajorVersion(in.readWP());          // 11
+        header.setMinorVersion(in.readWP());          // 12
         header.setEncrypted(in.readWPShort() != 0);   // 13-14
         header.setIndexAreaPointer(in.readWPShort()); // 15-16
         try {
@@ -199,20 +207,28 @@
         }
         in.reset();
         
-        //TODO header may be shared between corel products, so move validation
-        //specific to each product elsewhere?
-        //TODO convert to logs only, and let it fail elsewhere?
-//        if (!WP6Constants.WP6_FILE_ID.equals(header.getFileId())) {
-//            throw new IOException("Not a WordPerfect file. File must start "
-//                    + "with " + WP6Constants.WP6_FILE_ID + " but was "
-//                    + header.getFileId());
-//        }
-//        if (WP6Constants.WP6_PRODUCT_TYPE != header.getProductType()) {
-//            throw new IOException("Not a WordPerfect file. Product type "
-//                    + "must be " + WP6Constants.WP6_PRODUCT_TYPE + " but was "
-//                    + header.getProductType());
-//        }
-        //TODO perform file type validation?
+        // In the event that the same header is shared between different Corel
+        // products/versions, adapt this logic to match each product/version.
+        if (!WP6Constants.WP6_FILE_ID.equals(header.getFileId())) {
+            throw new TikaException("Not a WordPerfect file. File must start "
+                    + "with " + WP6Constants.WP6_FILE_ID + " but was "
+                    + header.getFileId());
+        }
+        if (WP6Constants.WP6_PRODUCT_TYPE != header.getProductType()) {
+            throw new TikaException("Not a WordPerfect file. Product type "
+                    + "must be " + WP6Constants.WP6_PRODUCT_TYPE + " but was "
+                    + header.getProductType());
+        }
+        if (header.getMajorVersion() < MIN_SUPPORTED_MAJOR_VERSION) {
+            throw new TikaException("Not a supported WordPerfect file format "
+                    + "version. Major version should be 2 or possibly higher "
+                    + "(WordPerfect 6.0+) but was " + header.getMajorVersion());
+        }
+        if (header.getMajorVersion() > 2) {
+            // TO help troubleshoot if greater versions are well supported.
+            LOG.debug("WordPerfect major version " + header.getMajorVersion()
+                    + " encountered. Verify extracted content.");
+        }
         return header;
     }
 
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/wordperfect/WordPerfectParser.java b/tika-parsers/src/main/java/org/apache/tika/parser/wordperfect/WordPerfectParser.java
index 105e803..f63300e 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/wordperfect/WordPerfectParser.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/wordperfect/WordPerfectParser.java
@@ -14,6 +14,7 @@
  */
 package org.apache.tika.parser.wordperfect;
 
+import java.io.BufferedInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Arrays;
@@ -21,6 +22,9 @@
 import java.util.HashSet;
 import java.util.Set;
 
+import javax.xml.bind.DatatypeConverter;
+
+import org.apache.commons.io.IOUtils;
 import org.apache.tika.exception.TikaException;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.mime.MediaType;
@@ -39,6 +43,11 @@
 
     private static final long serialVersionUID = 8941810225917012232L;
 
+    // This byte signature fragment is only found in version 5.x of WordPerfect
+    // (and maybe older?). It is found at byte index 17 to 22.
+    private static final byte[] WP_V5_SIGNATURE_FRAGMENT = 
+            DatatypeConverter.parseHexBinary("FBFF05003200");
+    
     private static final Set<MediaType> SUPPORTED_TYPES =
             Collections.unmodifiableSet(new HashSet<MediaType>(Arrays.asList(
                     MediaType.application("vnd.wordperfect"),
@@ -58,17 +67,37 @@
             Metadata metadata, ParseContext context)
             throws IOException, SAXException, TikaException {
 
+        BufferedInputStream bufStream = IOUtils.buffer(stream, 32);
+        
+        verifyVersion(bufStream);
+        
         if (metadata.get(Metadata.CONTENT_TYPE) == null) {
             metadata.set(Metadata.CONTENT_TYPE, "application/wordperfect");
         }
-        
+                
         XHTMLContentHandler xhtml =
                 new XHTMLContentHandler(handler, metadata);
         xhtml.startDocument();
 
         WP6TextExtractor extractor = new WP6TextExtractor();
-        extractor.extract(stream, xhtml, metadata);
+        extractor.extract(bufStream, xhtml, metadata);
 
         xhtml.endDocument();
     }
+    
+    private void verifyVersion(InputStream buf)
+            throws IOException, TikaException {
+        // Ensure we are not dealing with < 6.0 versions (not yet supported)
+        buf.mark(32);
+        buf.skip(16);
+        byte[] signatureFragment = new byte[WP_V5_SIGNATURE_FRAGMENT.length];
+        buf.read(signatureFragment);
+        buf.reset();
+
+        if (Arrays.equals(WP_V5_SIGNATURE_FRAGMENT, signatureFragment)) {
+            throw new TikaException("Unsupported WordPerfect file format. "
+                    + "The file signature suggests a version older than 6.0 "
+                    + "(not yet supported).");
+        }
+    }
 }
