You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ta...@apache.org on 2020/08/20 09:40:54 UTC

[tika] branch branch_2x updated: WIP -- moved all the parsers, still need to fix a bunch of stuff and move unit tests

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

tallison pushed a commit to branch branch_2x
in repository https://gitbox.apache.org/repos/asf/tika.git


The following commit(s) were added to refs/heads/branch_2x by this push:
     new 60345a8  WIP -- moved all the parsers, still need to fix a bunch of stuff and move unit tests
60345a8 is described below

commit 60345a8e4c8819d97f124d4709ba5bc8e706b79d
Author: tallison <ta...@apache.org>
AuthorDate: Thu Aug 20 05:39:58 2020 -0400

    WIP -- moved all the parsers, still need to fix a bunch of stuff and move unit tests
---
 CHANGES.txt                                        |    2 +
 .../src/main/java/org/apache/tika/io/IOUtils.java  |   19 +
 .../org/apache/tika/metadata}/MachineMetadata.java |    2 +-
 .../tika/example}/PickBestTextEncodingParser.java  |    2 +-
 tika-parent/pom.xml                                |    2 +-
 tika-parser-integration-tests/pom.xml              |   54 +
 .../tests}/apple/AppleSingleFileParserTest.java    |    3 +-
 .../tika/parser/tests/apple/PListParserTest.java   |   24 +
 .../tika/parser/tests/mail/MboxParserTest.java     |   49 +
 .../tika/parser/tests/mail/RFC822ParserTest.java   |  151 +
 .../tests/microsoft/ooxml/OOXMLParserTest.java     |    2 +
 .../tika/parser/tests/odf/ODFParserTest.java       |  197 +
 .../tika/parser/tests/pdf/PDFParserTest.java       |   29 +
 tika-parser-modules/pom.xml                        |   29 +-
 .../tika-parser-advancedmedia-module/pom.xml       |   97 +
 .../tika/parser/captioning/CaptionObject.java      |    0
 .../captioning/tf/TensorflowRESTCaptioner.java     |    3 +-
 .../tika/parser/pot/PooledTimeSeriesParser.java    |    0
 .../tika/parser/recognition/ObjectRecogniser.java  |    0
 .../recognition/ObjectRecognitionParser.java       |    0
 .../tika/parser/recognition/RecognisedObject.java  |    0
 .../recognition/tf/TensorflowImageRecParser.java   |    0
 .../recognition/tf/TensorflowRESTRecogniser.java   |    3 +-
 .../tf/TensorflowRESTVideoRecogniser.java          |    0
 .../tika/parser/captioning/tf/caption_generator.py |    0
 .../apache/tika/parser/captioning/tf/im2txtapi.py  |    0
 .../tika/parser/captioning/tf/model_info.xml       |    0
 .../tika/parser/captioning/tf/model_wrapper.py     |    0
 .../apache/tika/parser/captioning/tf/vocabulary.py |    0
 .../tika/parser/recognition/tf/inception_v4.py     |    0
 .../tika/parser/recognition/tf/inceptionapi.py     |    0
 .../tika/parser/recognition/tf/video_util.py       |    0
 .../recognition/tika-config-tflow-im2txt-rest.xml  |    0
 .../parser/recognition/tika-config-tflow-rest.xml  |    0
 .../recognition/tika-config-tflow-video-rest.xml   |    0
 .../tika/parser/recognition/tika-config-tflow.xml  |    0
 .../recognition/ObjectRecognitionParserTest.java   |    0
 .../tf/TensorflowImageRecParserTest.java           |    0
 .../tf/TensorflowVideoRecParserTest.java           |    0
 .../pom.xml                                        |   34 +-
 .../tika/detect/apple/iwork/IWorkDetector.java     |  108 +
 .../tika/parser/apple/AppleSingleFileParser.java   |   22 +-
 .../apache/tika/parser/apple/BPListDetector.java   |    4 +-
 .../org/apache/tika/parser/apple/PListParser.java  |    1 -
 .../tika/parser/iwork/AutoPageNumberUtils.java     |    0
 .../tika/parser/iwork/IWorkPackageParser.java      |    2 +-
 .../tika/parser/iwork/KeynoteContentHandler.java   |    0
 .../tika/parser/iwork/NumbersContentHandler.java   |    0
 .../tika/parser/iwork/PagesContentHandler.java     |    0
 .../parser/iwork/iwana/IWork13PackageParser.java   |    0
 .../parser/iwork/iwana/IWork18PackageParser.java   |    0
 .../services/org.apache.tika.detect.Detector       |    2 +-
 ...org.apache.tika.detect.zip.ZipContainerDetector |    3 +-
 .../services/org.apache.tika.parser.Parser         |    9 +-
 .../apache/tika/parser/apple/PListParserTest.java  |   10 -
 .../tika/parser/iwork/AutoPageNumberUtilsTest.java |    1 +
 .../apache/tika/parser/iwork/IWorkParserTest.java  |    1 +
 .../tika/parser/iwork/iwana/IWork13ParserTest.java |    0
 .../resources/test-documents/tableHeaders.numbers  |  Bin
 .../resources/test-documents/tableNames.numbers    |  Bin
 .../test-documents/testAppleSingleFile.pdf         |  Bin
 .../resources/test-documents/testBPList.bplist     |  Bin
 .../resources/test-documents/testBulletPoints.key  |  Bin
 .../test/resources/test-documents/testKeynote.key  |  Bin
 .../resources/test-documents/testKeynote2013.key   |  Bin
 .../resources/test-documents/testKeynote2018.key   |  Bin
 .../test-documents/testMasterSlideTable.key        |  Bin
 .../resources/test-documents/testNumbers.numbers   |  Bin
 .../test-documents/testNumbers2013.numbers         |  Bin
 .../test-documents/testNumbersCharts.numbers       |  Bin
 .../test/resources/test-documents/testPages.pages  |  Bin
 .../resources/test-documents/testPages2013.pages   |  Bin
 .../test-documents/testPagesComments.pages         |  Bin
 .../testPagesHeadersFootersAlphaLower.pages        |  Bin
 .../testPagesHeadersFootersAlphaUpper.pages        |  Bin
 .../testPagesHeadersFootersFootnotes.pages         |  Bin
 .../testPagesHeadersFootersRomanLower.pages        |  Bin
 .../testPagesHeadersFootersRomanUpper.pages        |  Bin
 .../resources/test-documents/testPagesLayout.pages |  Bin
 .../test-documents/testPagesPwdProtected.pages     |  Bin
 .../test/resources/test-documents/testTables.key   |  Bin
 .../resources/test-documents/testTextBoxes.key     |  Bin
 .../test-documents/testWEBARCHIVE.webarchive       |    0
 .../org/apache/tika/parser/video/FLVParser.java    |    0
 .../services/org.apache.tika.parser.Parser         |    1 +
 .../apache/tika/parser/video/FLVParserTest.java    |    0
 .../src/test/resources/test-documents/testFLV.flv  |  Bin
 tika-parser-modules/tika-parser-cad-module/pom.xml |   22 +
 .../java/org/apache/tika/parser/dwg/DWGParser.java |    0
 .../java/org/apache/tika/parser/prt/PRTParser.java |    0
 .../services/org.apache.tika.parser.Parser         |    4 +-
 .../org/apache/tika/parser/dwg/DWGParserTest.java  |    0
 .../org/apache/tika/parser/prt/PRTParserTest.java  |    0
 .../test/resources/test-documents/testCADKEY.prt   |  Bin
 .../test/resources/test-documents/testCADKEY2.prt  |  Bin
 .../test/resources/test-documents/testDWG2000.dwg  |  Bin
 .../test/resources/test-documents/testDWG2004.dwg  |  Bin
 .../test-documents/testDWG2004_no_header.dwg       |  Bin
 .../test/resources/test-documents/testDWG2007.dwg  |  Bin
 .../test/resources/test-documents/testDWG2010.dwg  |  Bin
 .../test-documents/testDWG2010_custom_props.dwg    |  Bin
 .../resources/test-documents/testDWGmech2004.dwg   |  Bin
 .../resources/test-documents/testDWGmech2004DX.dwg |  Bin
 .../resources/test-documents/testDWGmech2005.dwg   |  Bin
 .../resources/test-documents/testDWGmech2006.dwg   |  Bin
 .../resources/test-documents/testDWGmech2007.dwg   |  Bin
 .../resources/test-documents/testDWGmech2008.dwg   |  Bin
 .../resources/test-documents/testDWGmech2009.dwg   |  Bin
 .../resources/test-documents/testDWGmech2010.dwg   |  Bin
 .../resources/test-documents/testDWGmech2011.dwg   |  Bin
 .../test/resources/test-documents/testDWGmech6.dwg |  Bin
 .../pom.xml                                        |   46 +-
 .../org/apache/tika/parser/asm/ClassParser.java    |    0
 .../apache/tika/parser/asm/XHTMLClassVisitor.java  |    0
 .../apache/tika/parser/code/SourceCodeParser.java  |    0
 .../tika/parser/executable/ExecutableParser.java   |   20 +-
 .../services/org.apache.tika.parser.Parser         |    5 +-
 .../apache/tika/parser/asm/ClassParserTest.java    |    0
 .../tika/parser/code/SourceCodeParserTest.java     |    0
 .../test-documents/AppleSingleFileParser.class     |  Bin
 .../test-documents/AutoDetectParser.class          |  Bin
 .../src/test/resources/test-documents/testC.c      |    0
 .../src/test/resources/test-documents/testCPP.cpp  |    0
 .../resources/test-documents/testGROOVY.groovy     |   16 +-
 .../test/resources/test-documents/testJAVA.java    |    0
 .../src/test/resources/test-documents/testJS.js    |    0
 .../test/resources/test-documents/testJS_HTML.js   |    0
 .../tika-parser-crypto-module/pom.xml              |   15 +
 .../org/apache/tika/parser/crypto/Pkcs7Parser.java |    0
 .../org/apache/tika/parser/crypto/TSDParser.java   |    0
 .../pom.xml                                        |   24 +-
 .../apache/tika/parser/jdbc/AbstractDBParser.java  |    4 +-
 .../apache/tika/parser/jdbc/JDBCTableReader.java   |    6 +-
 .../tika/parser/sqlite}/SQLite3DBParser.java       |    4 +-
 .../apache/tika/parser/sqlite}/SQLite3Parser.java  |    4 +-
 .../tika/parser/sqlite}/SQLite3TableReader.java    |    3 +-
 .../tika-parser-digest-commons/pom.xml             |   15 +
 .../parser/digestutils}/BouncyCastleDigester.java  |    2 +-
 .../tika/parser/digestutils}/CommonsDigester.java  |    2 +-
 .../tika-parser-html-module/pom.xml                |    2 +-
 .../apache/tika/parser/mailcommons}/MailUtil.java  |    2 +-
 .../tika/parser/mailcommons}/MailUtilTest.java     |    3 +-
 .../pom.xml                                        |   41 +-
 .../tika/parser/mail/MailContentHandler.java       |    7 +-
 .../org/apache/tika/parser/mail/RFC822Parser.java  |    0
 .../org/apache/tika/parser/mbox/MboxParser.java    |    5 +-
 .../services/org.apache.tika.parser.Parser         |    5 +-
 .../apache/tika/parser/mail/RFC822ParserTest.java  |  104 -
 .../apache/tika/parser/mbox/MboxParserTest.java    |   14 -
 .../mail/tika-config-extract-all-alternatives.xml  |    0
 .../src/test/resources/test-documents/complex.mbox |    0
 .../src/test/resources/test-documents/headers.mbox |    0
 .../test/resources/test-documents/multiline.mbox   |    0
 .../src/test/resources/test-documents/quoted.mbox  |    0
 .../src/test/resources/test-documents/simple.mbox  |    0
 .../test/resources/test-documents/single_mail.mbox |   50 +-
 .../test-documents/testEmailWithPNGAtt.eml         |    0
 .../resources/test-documents/testGroupWiseEml.eml  |  116 +-
 .../resources/test-documents/testMBOX_complex.mbox |    0
 .../test-documents/testMBOX_lengthy_x-headers.mbox |    0
 .../src/test/resources/test-documents/testRFC822   |   82 +-
 .../resources/test-documents/testRFC822-CC-BCC     |    0
 .../test/resources/test-documents/testRFC822-big   |    0
 .../test-documents/testRFC822-limitedheaders       |   18 +-
 .../test-documents/testRFC822-mixed-simple         |    0
 .../testRFC822-mixed-with-pdf-inline               |    0
 .../resources/test-documents/testRFC822-multipart  |  222 +-
 .../resources/test-documents/testRFC822-txt-body   |    0
 .../resources/test-documents/testRFC822_base64     |   16 +-
 .../resources/test-documents/testRFC822_date_utf8  |    0
 .../resources/test-documents/testRFC822_dkim.eml   |    0
 .../test/resources/test-documents/testRFC822_eml   |    0
 .../test-documents/testRFC822_encrypted_zip        |  122 +-
 .../test-documents/testRFC822_i18nheaders          |   18 +-
 .../resources/test-documents/testRFC822_normal_zip |  122 +-
 .../resources/test-documents/testRFC822_oddfrom    | 4210 ++++++++++----------
 .../resources/test-documents/testRFC822_quoted     |   26 +-
 .../testRFC822_simple_inline_body.txt              |    0
 .../resources/test-documents/testRFC822_x-.eml     |    0
 .../tika-parser-math-module/pom.xml                |   27 +
 .../java/org/apache/tika/parser/mat/MatParser.java |    0
 .../org/apache/tika/parser/sas/SAS7BDATParser.java |    4 +-
 .../services/org.apache.tika.parser.Parser         |    3 +-
 .../org/apache/tika/parser/mat/MatParserTest.java  |    0
 .../apache/tika/parser/sas/SAS7BDATParserTest.java |    2 +-
 .../breidamerkurjokull_radar_profiles_2009.mat     |  Bin
 .../resources/test-documents/test-columnar.sas.xml |  226 +-
 .../test-documents/test-columnar.sas7bdat          |  Bin
 .../src/test/resources/test-documents/testMATLAB.m |    0
 .../resources/test-documents/testMATLAB_barcast.m  |  766 ++--
 .../resources/test-documents/testMATLAB_wtsgaus.m  |  104 +-
 .../src/test/resources/test-documents/testSAS.sas  |    0
 .../test/resources/test-documents/testSAS.sas7bdat |  Bin
 .../src/test/resources/test-documents/testSAS.sd2  |  Bin
 .../src/test/resources/test-documents/testSAS.xpt  |  Bin
 .../src/test/resources/test-documents/testSAS2.sas |  140 +-
 .../resources/test-documents/test_mat_text.mat     |  Bin
 .../tika-parser-microsoft-module/pom.xml           |    5 +
 .../parser/microsoft/POIFSContainerDetector.java   |   19 -
 .../tika/parser/microsoft/chm}/ChmAccessor.java    |    2 +-
 .../tika/parser/microsoft/chm}/ChmAssert.java      |   10 +-
 .../tika/parser/microsoft/chm}/ChmBlockInfo.java   |    7 +-
 .../tika/parser/microsoft/chm}/ChmCommons.java     |    7 +-
 .../tika/parser/microsoft/chm}/ChmConstants.java   |    2 +-
 .../microsoft/chm}/ChmDirectoryListingSet.java     |    5 +-
 .../tika/parser/microsoft/chm}/ChmExtractor.java   |   14 +-
 .../tika/parser/microsoft/chm}/ChmItsfHeader.java  |    5 +-
 .../tika/parser/microsoft/chm}/ChmItspHeader.java  |    6 +-
 .../tika/parser/microsoft/chm}/ChmLzxBlock.java    |    9 +-
 .../tika/parser/microsoft/chm}/ChmLzxState.java    |    9 +-
 .../parser/microsoft/chm}/ChmLzxcControlData.java  |    5 +-
 .../parser/microsoft/chm}/ChmLzxcResetTable.java   |    5 +-
 .../tika/parser/microsoft}/chm/ChmParser.java      |    4 +-
 .../parser/microsoft/chm}/ChmParsingException.java |    2 +-
 .../tika/parser/microsoft/chm}/ChmPmgiHeader.java  |    6 +-
 .../tika/parser/microsoft/chm}/ChmPmglHeader.java  |    5 +-
 .../tika/parser/microsoft/chm}/ChmSection.java     |    3 +-
 .../tika/parser/microsoft/chm}/ChmWrapper.java     |    9 +-
 .../microsoft/chm}/DirectoryListingEntry.java      |    4 +-
 .../parser/microsoft/pst}/OutlookPSTParser.java    |    2 +-
 .../services/org.apache.tika.parser.Parser         |    2 +
 .../parser/microsoft}/chm/TestChmBlockInfo.java    |   12 +-
 .../parser/microsoft}/chm/TestChmExtraction.java   |    6 +-
 .../parser/microsoft}/chm/TestChmExtractor.java    |    6 +-
 .../parser/microsoft}/chm/TestChmItsfHeader.java   |    5 +-
 .../parser/microsoft}/chm/TestChmItspHeader.java   |    6 +-
 .../parser/microsoft}/chm/TestChmLzxState.java     |   10 +-
 .../microsoft}/chm/TestChmLzxcControlData.java     |    9 +-
 .../microsoft}/chm/TestChmLzxcResetTable.java      |   10 +-
 .../microsoft}/chm/TestDirectoryListingEntry.java  |    4 +-
 .../tika/parser/microsoft}/chm/TestParameters.java |    6 +-
 .../tika/parser/microsoft}/chm/TestPmgiHeader.java |    3 +-
 .../tika/parser/microsoft}/chm/TestPmglHeader.java |    5 +-
 .../microsoft/pst}/OutlookPSTParserTest.java       |    2 +-
 .../test/resources/test-documents/chm/IMJPCL.CHM   |  Bin
 .../test/resources/test-documents/chm/IMJPCLE.CHM  |  Bin
 .../test/resources/test-documents/chm/IMTCEN.CHM   |  Bin
 .../test/resources/test-documents/chm/admin.chm    |  Bin
 .../test/resources/test-documents/chm/cmak_ops.CHM |  Bin
 .../test/resources/test-documents/chm/comexp.CHM   |  Bin
 .../test/resources/test-documents/chm/gpedit.CHM   |  Bin
 .../test/resources/test-documents/chm/tcpip.CHM    |  Bin
 .../resources/test-documents/chm/wmicontrol.CHM    |  Bin
 .../src/test/resources/test-documents/testChm.chm  |  Bin
 .../src/test/resources/test-documents/testChm2.chm |  Bin
 .../src/test/resources/test-documents/testChm3.chm |  Bin
 .../test/resources/test-documents/testChm_oom.chm  |  Bin
 .../src/test/resources/test-documents/testPST.pst  |  Bin
 .../test-documents/testPST_variousBodyTypes.pst    |  Bin
 .../pom.xml                                        |   19 +-
 .../apache/tika/detect/ole/MiscOLEDetector.java    |  218 +
 .../java/org/apache/tika/parser/dbf/DBFCell.java   |    0
 .../apache/tika/parser/dbf/DBFColumnHeader.java    |    0
 .../org/apache/tika/parser/dbf/DBFFileHeader.java  |    0
 .../java/org/apache/tika/parser/dbf/DBFParser.java |    0
 .../java/org/apache/tika/parser/dbf/DBFReader.java |    0
 .../java/org/apache/tika/parser/dbf/DBFRow.java    |    0
 .../apache/tika/parser/dif/DIFContentHandler.java  |    0
 .../java/org/apache/tika/parser/dif/DIFParser.java |    2 +-
 .../apache/tika/parser/epub/EpubContentParser.java |    0
 .../org/apache/tika/parser/epub/EpubParser.java    |    0
 .../apache/tika/parser/hwp/HwpStreamReader.java    |    0
 .../apache/tika/parser/hwp/HwpTextExtractorV5.java |    1 -
 .../org/apache/tika/parser/hwp/HwpV5Parser.java    |    0
 .../parser/odf/FlatOpenDocumentMacroHandler.java   |    0
 .../tika/parser/odf/FlatOpenDocumentParser.java    |    2 +-
 .../parser/odf/NSNormalizerContentHandler.java     |    0
 .../tika/parser/odf/OpenDocumentBodyHandler.java   |    0
 .../tika/parser/odf/OpenDocumentContentParser.java |   13 +-
 .../tika/parser/odf/OpenDocumentMacroHandler.java  |    0
 .../tika/parser/odf/OpenDocumentMetaParser.java    |    0
 .../apache/tika/parser/odf/OpenDocumentParser.java |    5 +-
 .../tika/parser/wordperfect/QPWTextExtractor.java  |    1 -
 .../tika/parser/wordperfect/QuattroProParser.java  |  144 +-
 .../tika/parser/wordperfect/WP5Charsets.java       |    0
 .../wordperfect/WP5DocumentAreaExtractor.java      |    0
 .../tika/parser/wordperfect/WP6Charsets.java       |    0
 .../wordperfect/WP6DocumentAreaExtractor.java      |    0
 .../wordperfect/WPDocumentAreaExtractor.java       |    0
 .../tika/parser/wordperfect/WPInputStream.java     |    0
 .../tika/parser/wordperfect/WPPrefixArea.java      |    0
 .../parser/wordperfect/WPPrefixAreaExtractor.java  |    0
 .../tika/parser/wordperfect/WordPerfectParser.java |  336 +-
 .../services/org.apache.tika.detect.Detector       |    2 +-
 .../services/org.apache.tika.parser.Parser         |   12 +-
 .../org/apache/tika/parser/dif/DIFParserTest.java  |    0
 .../apache/tika/parser/hwp/HwpV5ParserTest.java    |    2 -
 .../org/apache/tika/parser/odf/ODFParserTest.java  |  176 +-
 .../tika/parser/wordperfect/QuattroProTest.java    |    0
 .../tika/parser/wordperfect/WPInputStreamTest.java |    0
 .../tika/parser/wordperfect/WordPerfectTest.java   |    0
 .../apache/tika/parser/odf/tika-config-macros.xml  |    0
 .../apache/tika/parser/wordperfect/tika-config.xml |    0
 .../test/resources/test-documents/testFooter.ods   |  Bin
 .../test/resources/test-documents/testFooter.odt   |  Bin
 .../resources/test-documents/testHWP-v5-dist.hwp   |  Bin
 .../test/resources/test-documents/testHWP-v5b.hwp  |  Bin
 .../test/resources/test-documents/testHWP_3.0.hwp  |  Bin
 .../test/resources/test-documents/testHWP_5.0.hwp  |  Bin
 .../resources/test-documents/testMasterFooter.odp  |  Bin
 .../test-documents/testNPEOpenDocument.odt         |  Bin
 .../resources/test-documents/testODFwithOOo3.odt   |  Bin
 .../resources/test-documents/testODPMacro.fodp     |    0
 .../test/resources/test-documents/testODPMacro.odp |  Bin
 .../test/resources/test-documents/testODP_NPE.odp  |  Bin 0 -> 431290 bytes
 .../resources/test-documents/testODSMacro.fods     |    0
 .../test/resources/test-documents/testODSMacro.ods |  Bin
 .../resources/test-documents/testODT-TIKA-6000.odt |  Bin
 .../resources/test-documents/testODTEmbedded.odt   |  Bin
 .../resources/test-documents/testODTMacro.fodt     |    0
 .../test/resources/test-documents/testODTMacro.odt |  Bin
 .../resources/test-documents/testODTNoMeta.odt     |  Bin
 .../resources/test-documents/testODTStyles2.odt    |  Bin
 .../resources/test-documents/testODTStyles3.odt    |  Bin
 .../test-documents/testODTnotaZipFile.odt          |    0
 .../test-documents/testOpenOffice-autotext.bau     |  Bin
 .../test-documents/testOpenOffice-extension.oxt    |  Bin
 .../resources/test-documents/testOpenOffice2.odf   |  Bin
 .../resources/test-documents/testOpenOffice2.odt   |  Bin
 .../test-documents/testOpenOfficeInAZip.zip        |  Bin
 .../test/resources/test-documents/testQUATTRO.qpw  |  Bin
 .../test/resources/test-documents/testQUATTRO.wb3  |  Bin
 .../test/resources/test-documents/testQuattro.wb1  |  Bin
 .../test/resources/test-documents/testQuattro.wb2  |  Bin
 .../test/resources/test-documents/testQuattro.wq1  |  Bin
 .../test/resources/test-documents/testQuattro.wq2  |  Bin
 .../test/resources/test-documents/testStyles.odt   |  Bin
 .../resources/test-documents/testWordPerfect.wpd   |  Bin
 .../test-documents/testWordPerfect_42.doc          |  Bin
 .../test-documents/testWordPerfect_5_0.wp          |  Bin
 .../test-documents/testWordPerfect_5_1.wp          |  Bin
 .../tika-parser-news-module/pom.xml                |   33 +
 .../org/apache/tika/parser/feed/FeedParser.java    |    2 +-
 .../apache/tika/parser/iptc/IptcAnpaParser.java    |    0
 tika-parser-modules/tika-parser-nlp-module/pom.xml |  279 ++
 .../parser/ctakes/CTAKESAnnotationProperty.java    |    0
 .../apache/tika/parser/ctakes/CTAKESConfig.java    |    0
 .../tika/parser/ctakes/CTAKESContentHandler.java   |    0
 .../apache/tika/parser/ctakes/CTAKESParser.java    |    0
 .../tika/parser/ctakes/CTAKESSerializer.java       |    0
 .../org/apache/tika/parser/ctakes/CTAKESUtils.java |    0
 .../org/apache/tika/parser/geo}/GeoParser.java     |    2 +-
 .../apache/tika/parser/geo}/GeoParserConfig.java   |    2 +-
 .../java/org/apache/tika/parser/geo}/GeoTag.java   |    2 +-
 .../tika/parser/geo}/NameEntityExtractor.java      |    2 +-
 .../parser/geo}/gazetteer/GeoGazetteerClient.java  |    2 +-
 .../tika/parser/geo}/gazetteer/Location.java       |    2 +-
 .../tika/parser/journal/GrobidRESTParser.java      |    0
 .../apache/tika/parser/journal/JournalParser.java  |    0
 .../apache/tika/parser/journal/TEIDOMParser.java   |    0
 .../org/apache/tika/parser/ner/NERecogniser.java   |    0
 .../apache/tika/parser/ner/NamedEntityParser.java  |    0
 .../parser/ner/corenlp/CoreNLPNERecogniser.java    |    3 +-
 .../tika/parser/ner/grobid/GrobidNERecogniser.java |    0
 .../tika/parser/ner/mitie/MITIENERecogniser.java   |    0
 .../tika/parser/ner/nltk/NLTKNERecogniser.java     |    0
 .../parser/ner/opennlp/OpenNLPNERecogniser.java    |    0
 .../tika/parser/ner/opennlp/OpenNLPNameFinder.java |    0
 .../tika/parser/ner/regex/RegexNERecogniser.java   |    0
 .../parser/sentiment/SentimentAnalysisParser.java  |    0
 .../tika/parser/ctakes/CTAKESConfig.properties     |    0
 .../tika/parser/geo}/GeoTopicConfig.properties     |    0
 .../tika/parser/journal/GrobidExtractor.properties |    0
 .../tika/parser/ner/grobid/GrobidServer.properties |    0
 .../tika/parser/ner/nltk/NLTKServer.properties     |    0
 .../org/apache/tika/parser/ner/regex/ner-regex.txt |    0
 tika-parser-modules/tika-parser-ocr-module/pom.xml |   23 +-
 .../tika/parser/ocr/TesseractOCRParserTest.java    |   18 +
 .../org/apache/tika/config/TIKA-2705-tesseract.xml |    0
 .../src/test/resources/test-documents/testOCR.docx |  Bin
 .../src/test/resources/test-documents/testOCR.jpg  |  Bin
 .../src/test/resources/test-documents/testOCR.pptx |  Bin
 .../resources/test-documents/testOCR_spacing.png   |  Bin
 .../tika-parser-scientific-module/pom.xml          |   15 +
 .../apache/tika/parser/envi/EnviHeaderParser.java  |    0
 .../org/apache/tika/parser/gdal/GDALParser.java    |    0
 .../geoinfo/GeographicInformationParser.java       |    0
 .../org/apache/tika/parser/grib/GribParser.java    |    0
 .../java/org/apache/tika/parser/hdf/HDFParser.java |    0
 .../org/apache/tika/parser/isatab/ISATabUtils.java |    0
 .../apache/tika/parser/isatab/ISArchiveParser.java |    0
 .../apache/tika/parser/netcdf/NetCDFParser.java    |    0
 .../org/apache/tika/parser/strings/FileConfig.java |    0
 .../tika/parser/strings/Latin1StringsParser.java   |    0
 .../apache/tika/parser/strings/StringsConfig.java  |    0
 .../tika/parser/strings/StringsEncoding.java       |    0
 .../apache/tika/parser/strings/StringsParser.java  |    0
 .../tika/parser/xliff/XLIFF12ContentHandler.java   |    0
 .../apache/tika/parser/xliff/XLIFF12Parser.java    |    3 +-
 .../org/apache/tika/parser/xliff/XLZParser.java    |    0
 .../apache/tika/parser/xml/MetadataHandler.java    |   85 +
 .../services/org.apache.tika.parser.Parser         |    9 +-
 .../tika/parser/xliff/XLIFF12ParserTest.java       |    0
 .../apache/tika/parser/xliff/XLZParserTest.java    |    0
 .../test/resources/test-documents/testXLIFF12.xlf  |    0
 .../test/resources/test-documents/testXLIFF12.xlz  |  Bin
 .../detect/zip/DeprecatedZipContainerDetector.java |   28 -
 tika-parsers/pom.xml                               |  104 +-
 .../tika/parser/opendocument/OpenOfficeParser.java |   28 -
 .../org/apache/tika/parser/rtf/GroupState.java     |   68 -
 .../org/apache/tika/parser/rtf/ListDescriptor.java |   35 -
 .../apache/tika/parser/rtf/RTFEmbObjHandler.java   |  251 --
 .../apache/tika/parser/rtf/RTFObjDataParser.java   |  342 --
 .../java/org/apache/tika/parser/rtf/RTFParser.java |  125 -
 .../org/apache/tika/parser/rtf/TextExtractor.java  | 1540 -------
 .../services/org.apache.tika.parser.Parser         |    4 +-
 .../org/apache/tika/xmp/convert/TikaToXMP.java     |    1 -
 407 files changed, 5126 insertions(+), 6561 deletions(-)

diff --git a/CHANGES.txt b/CHANGES.txt
index 9172f04..3684d99 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,6 +1,8 @@
 Release 2.0.0 - ???
    BREAKING CHANGES in 2.0.0
 
+   * ChmParser was moved to org.apache.tika.parser.microsoft.chm
+
    * RTFParser was moved to org.apache.tika.parser.microsoft.rtf
 
    * Remove deprecated Metadata keys/properties (TIKA-1974).
diff --git a/tika-core/src/main/java/org/apache/tika/io/IOUtils.java b/tika-core/src/main/java/org/apache/tika/io/IOUtils.java
index 23c88d0..b5ffd2e 100644
--- a/tika-core/src/main/java/org/apache/tika/io/IOUtils.java
+++ b/tika-core/src/main/java/org/apache/tika/io/IOUtils.java
@@ -942,6 +942,25 @@ public class IOUtils {
     }
 
     /**
+     * Reads bytes from an input stream.
+     * This implementation guarantees that it will read as many bytes
+     * as possible before giving up; this may not always be the case for
+     * subclasses of {@link InputStream}.
+     *
+     * @param input where to read input from
+     * @param buffer destination
+     * @param offset initial offset into buffer
+     * @param length length to read, must be &gt;= 0
+     * @return actual length read; may be less than requested if EOF was reached
+     * @throws IOException if a read error occurs
+     * @since 2.2
+     */
+    public static int read(final InputStream input, final byte[] buffer)
+            throws IOException {
+        return read(input, buffer, 0, buffer.length);
+    }
+
+    /**
      * Wrapper around {@link #read(InputStream, byte[], int, int)}.
      *
      *
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/executable/MachineMetadata.java b/tika-core/src/main/java/org/apache/tika/metadata/MachineMetadata.java
similarity index 99%
rename from tika-parsers/src/main/java/org/apache/tika/parser/executable/MachineMetadata.java
rename to tika-core/src/main/java/org/apache/tika/metadata/MachineMetadata.java
index 06a4d16..55fe925 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/executable/MachineMetadata.java
+++ b/tika-core/src/main/java/org/apache/tika/metadata/MachineMetadata.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.tika.parser.executable;
+package org.apache.tika.metadata;
 
 import org.apache.tika.metadata.Property;
 
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/multiple/PickBestTextEncodingParser.java b/tika-example/src/main/java/org/apache/tika/example/PickBestTextEncodingParser.java
similarity index 99%
rename from tika-parsers/src/main/java/org/apache/tika/parser/multiple/PickBestTextEncodingParser.java
rename to tika-example/src/main/java/org/apache/tika/example/PickBestTextEncodingParser.java
index 1044298..74ef76d 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/multiple/PickBestTextEncodingParser.java
+++ b/tika-example/src/main/java/org/apache/tika/example/PickBestTextEncodingParser.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.tika.parser.multiple;
+package org.apache.tika.example;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/tika-parent/pom.xml b/tika-parent/pom.xml
index c985dfc..6c1b1a6 100644
--- a/tika-parent/pom.xml
+++ b/tika-parent/pom.xml
@@ -341,7 +341,7 @@
     <gson.version>2.8.6</gson.version>
     <guava.version>29.0-jre</guava.version>
     <osgi.core.version>6.0.0</osgi.core.version>
-
+    <log4j.version>1.2.17</log4j.version>
     <cxf.version>3.3.6</cxf.version>
     <slf4j.version>1.7.28</slf4j.version>
     <jackson.version>2.11.0</jackson.version>
diff --git a/tika-parser-integration-tests/pom.xml b/tika-parser-integration-tests/pom.xml
index 04cebc6..5d2ef15 100644
--- a/tika-parser-integration-tests/pom.xml
+++ b/tika-parser-integration-tests/pom.xml
@@ -34,6 +34,12 @@
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
+            <artifactId>tika-parser-apple-module</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
             <artifactId>tika-parser-html-module</artifactId>
             <version>${project.version}</version>
             <scope>test</scope>
@@ -46,6 +52,12 @@
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
+            <artifactId>tika-parser-mail-module</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
             <artifactId>tika-parser-microsoft-module</artifactId>
             <version>${project.version}</version>
             <scope>test</scope>
@@ -80,10 +92,23 @@
             <version>${project.version}</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>log4j</groupId>
+            <artifactId>log4j</artifactId>
+            <version>${log4j.version}</version>
+            <scope>test</scope>
+        </dependency>
 
         <!-- include the test-documents -->
         <dependency>
             <groupId>${project.groupId}</groupId>
+            <artifactId>tika-parser-apple-module</artifactId>
+            <version>${project.version}</version>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
             <artifactId>tika-parser-html-module</artifactId>
             <version>${project.version}</version>
             <type>test-jar</type>
@@ -98,6 +123,20 @@
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
+            <artifactId>tika-parser-image-module</artifactId>
+            <version>${project.version}</version>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>tika-parser-mail-module</artifactId>
+            <version>${project.version}</version>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
             <artifactId>tika-parser-microsoft-module</artifactId>
             <version>${project.version}</version>
             <type>test-jar</type>
@@ -105,6 +144,20 @@
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
+            <artifactId>tika-parser-ocr-module</artifactId>
+            <version>${project.version}</version>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>tika-parser-pdf-module</artifactId>
+            <version>${project.version}</version>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
             <artifactId>tika-parser-pkg-module</artifactId>
             <version>${project.version}</version>
             <type>test-jar</type>
@@ -117,6 +170,7 @@
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
+
     </dependencies>
 
 </project>
\ No newline at end of file
diff --git a/tika-parsers/src/test/java/org/apache/tika/parser/apple/AppleSingleFileParserTest.java b/tika-parser-integration-tests/src/test/java/org/apache/tika/parser/tests/apple/AppleSingleFileParserTest.java
similarity index 94%
rename from tika-parsers/src/test/java/org/apache/tika/parser/apple/AppleSingleFileParserTest.java
rename to tika-parser-integration-tests/src/test/java/org/apache/tika/parser/tests/apple/AppleSingleFileParserTest.java
index 8a1c831..134d21e 100644
--- a/tika-parsers/src/test/java/org/apache/tika/parser/apple/AppleSingleFileParserTest.java
+++ b/tika-parser-integration-tests/src/test/java/org/apache/tika/parser/tests/apple/AppleSingleFileParserTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.tika.parser.apple;
+package org.apache.tika.parser.tests.apple;
 
 
 import static org.junit.Assert.assertEquals;
@@ -27,6 +27,7 @@ import org.apache.tika.TikaTest;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.metadata.TikaCoreProperties;
 import org.apache.tika.parser.RecursiveParserWrapper;
+import org.apache.tika.parser.apple.AppleSingleFileParser;
 import org.apache.tika.parser.pdf.PDFParser;
 import org.junit.Test;
 
diff --git a/tika-parser-integration-tests/src/test/java/org/apache/tika/parser/tests/apple/PListParserTest.java b/tika-parser-integration-tests/src/test/java/org/apache/tika/parser/tests/apple/PListParserTest.java
new file mode 100644
index 0000000..79f7862
--- /dev/null
+++ b/tika-parser-integration-tests/src/test/java/org/apache/tika/parser/tests/apple/PListParserTest.java
@@ -0,0 +1,24 @@
+package org.apache.tika.parser.tests.apple;
+
+import org.apache.tika.TikaTest;
+import org.apache.tika.metadata.Metadata;
+import org.apache.tika.sax.AbstractRecursiveParserWrapperHandler;
+import org.junit.Test;
+
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+
+public class PListParserTest extends TikaTest {
+    @Test
+    public void testWebArchive() throws Exception {
+        List<Metadata> metadataList = getRecursiveMetadata("testWEBARCHIVE.webarchive");
+        assertEquals(12, metadataList.size());
+        Metadata m0 = metadataList.get(0);
+        assertEquals("application/x-bplist-webarchive", m0.get(Metadata.CONTENT_TYPE));
+        Metadata m1 = metadataList.get(1);
+        String content = m1.get(AbstractRecursiveParserWrapperHandler.TIKA_CONTENT);
+        assertContains("December 2008: Apache Tika Release", content);
+    }
+
+}
diff --git a/tika-parser-integration-tests/src/test/java/org/apache/tika/parser/tests/mail/MboxParserTest.java b/tika-parser-integration-tests/src/test/java/org/apache/tika/parser/tests/mail/MboxParserTest.java
new file mode 100644
index 0000000..061c687
--- /dev/null
+++ b/tika-parser-integration-tests/src/test/java/org/apache/tika/parser/tests/mail/MboxParserTest.java
@@ -0,0 +1,49 @@
+package org.apache.tika.parser.tests.mail;
+
+import org.apache.tika.TikaTest;
+import org.apache.tika.detect.TypeDetector;
+import org.apache.tika.metadata.Metadata;
+import org.apache.tika.parser.AutoDetectParser;
+import org.apache.tika.parser.ParseContext;
+import org.apache.tika.parser.Parser;
+import org.apache.tika.parser.mbox.MboxParser;
+import org.apache.tika.sax.BodyContentHandler;
+import org.junit.Before;
+import org.junit.Test;
+import org.xml.sax.ContentHandler;
+
+import java.io.InputStream;
+
+import static org.junit.Assert.assertEquals;
+
+public class MboxParserTest extends TikaTest {
+
+    protected ParseContext recursingContext;
+    private Parser autoDetectParser;
+    private TypeDetector typeDetector;
+    private MboxParser mboxParser;
+
+    @Before
+    public void setUp() throws Exception {
+        typeDetector = new TypeDetector();
+        autoDetectParser = new AutoDetectParser(typeDetector);
+        recursingContext = new ParseContext();
+        recursingContext.set(Parser.class, autoDetectParser);
+
+        mboxParser = new MboxParser();
+        mboxParser.setTracking(true);
+    }
+    @Test
+    public void testOverrideDetector() throws Exception {
+        ContentHandler handler = new BodyContentHandler();
+        Metadata metadata = new Metadata();
+        ParseContext context = new ParseContext();
+
+        try (InputStream stream = getResourceAsStream("/test-documents/single_mail.mbox")) {
+            mboxParser.parse(stream, handler, metadata, context);
+        }
+
+        Metadata firstMail = mboxParser.getTrackingMetadata().get(0);
+        assertEquals("message/rfc822", firstMail.get(Metadata.CONTENT_TYPE));
+    }
+}
diff --git a/tika-parser-integration-tests/src/test/java/org/apache/tika/parser/tests/mail/RFC822ParserTest.java b/tika-parser-integration-tests/src/test/java/org/apache/tika/parser/tests/mail/RFC822ParserTest.java
new file mode 100644
index 0000000..bf9f269
--- /dev/null
+++ b/tika-parser-integration-tests/src/test/java/org/apache/tika/parser/tests/mail/RFC822ParserTest.java
@@ -0,0 +1,151 @@
+package org.apache.tika.parser.tests.mail;
+
+import org.apache.tika.TikaTest;
+import org.apache.tika.config.TikaConfig;
+import org.apache.tika.metadata.Metadata;
+import org.apache.tika.metadata.TikaCoreProperties;
+import org.apache.tika.parser.AutoDetectParser;
+import org.apache.tika.parser.ParseContext;
+import org.apache.tika.parser.Parser;
+import org.apache.tika.parser.PasswordProvider;
+import org.apache.tika.sax.AbstractRecursiveParserWrapperHandler;
+import org.apache.tika.sax.BodyContentHandler;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.xml.sax.ContentHandler;
+
+import java.io.InputStream;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assume.assumeTrue;
+
+public class RFC822ParserTest extends TikaTest {
+
+    private static InputStream getStream(String name) {
+        InputStream stream = Thread.currentThread().getContextClassLoader()
+                .getResourceAsStream(name);
+        assertNotNull("Test file not found " + name, stream);
+        return stream;
+    }
+
+    //legacy RFC822 behavior...extract every alternative part
+    private static Parser EXTRACT_ALL_ALTERNATIVES_PARSER;
+    private static TikaConfig TIKA_CONFIG;
+
+    @BeforeClass
+    public static void setUp() throws Exception {
+
+        try (InputStream is = getStream("org/apache/tika/parser/mail/tika-config-extract-all-alternatives.xml")) {
+            TIKA_CONFIG = new TikaConfig(is);
+        }
+        EXTRACT_ALL_ALTERNATIVES_PARSER = new AutoDetectParser(TIKA_CONFIG);
+    }
+
+    /**
+     * Test TIKA-1028 - Ensure we can get the contents of an
+     * un-encrypted zip file
+     */
+    @Test
+    public void testNormalZipAttachment() throws Exception {
+        Metadata metadata = new Metadata();
+        ParseContext context = new ParseContext();
+        context.set(Parser.class, EXTRACT_ALL_ALTERNATIVES_PARSER);
+        InputStream stream = getStream("test-documents/testRFC822_normal_zip");
+        ContentHandler handler = new BodyContentHandler();
+        EXTRACT_ALL_ALTERNATIVES_PARSER.parse(stream, handler, metadata, context);
+
+        // Check we go the metadata
+        assertEquals("Juha Haaga <ju...@gmail.com>", metadata.get(Metadata.MESSAGE_FROM));
+        assertEquals("Test mail for Tika", metadata.get(TikaCoreProperties.TITLE));
+
+        // Check we got the message text, for both Plain Text and HTML
+        assertContains("Includes a normal, unencrypted zip file", handler.toString());
+        assertContains("This is the Plain Text part", handler.toString());
+        assertContains("This is the HTML part", handler.toString());
+
+        // We get both name and contents of the zip file's contents
+        assertContains("text.txt", handler.toString());
+        assertContains("TEST DATA FOR TIKA.", handler.toString());
+        assertContains("This is text inside an unencrypted zip file", handler.toString());
+        assertContains("TIKA-1028", handler.toString());
+        assertEquals("<ju...@gmail.com>", metadata.get("Message:Raw-Header:Return-Path"));
+    }
+
+    /**
+     * Test TIKA-1028 - If the mail contains an encrypted attachment (or
+     * an attachment that others triggers an error), parsing should carry
+     * on for the remainder regardless
+     */
+    @Test
+    public void testEncryptedZipAttachment() throws Exception {
+        Metadata metadata = new Metadata();
+        ParseContext context = new ParseContext();
+        context.set(Parser.class, EXTRACT_ALL_ALTERNATIVES_PARSER);
+        InputStream stream = getStream("test-documents/testRFC822_encrypted_zip");
+        ContentHandler handler = new BodyContentHandler();
+        EXTRACT_ALL_ALTERNATIVES_PARSER.parse(stream, handler, metadata, context);
+
+        // Check we go the metadata
+        assertEquals("Juha Haaga <ju...@gmail.com>", metadata.get(Metadata.MESSAGE_FROM));
+        assertEquals("Test mail for Tika", metadata.get(TikaCoreProperties.TITLE));
+
+        // Check we got the message text, for both Plain Text and HTML
+        assertContains("Includes encrypted zip file", handler.toString());
+        assertContains("password is \"test\".", handler.toString());
+        assertContains("This is the Plain Text part", handler.toString());
+        assertContains("This is the HTML part", handler.toString());
+
+        // We won't get the contents of the zip file, but we will get the name
+        assertContains("text.txt", handler.toString());
+        assertNotContained("ENCRYPTED ZIP FILES", handler.toString());
+
+        // Try again, this time with the password supplied
+        // Check that we also get the zip's contents as well
+        context.set(PasswordProvider.class, new PasswordProvider() {
+            public String getPassword(Metadata metadata) {
+                return "test";
+            }
+        });
+        stream = getStream("test-documents/testRFC822_encrypted_zip");
+        handler = new BodyContentHandler();
+        EXTRACT_ALL_ALTERNATIVES_PARSER.parse(stream, handler, metadata, context);
+
+        assertContains("Includes encrypted zip file", handler.toString());
+        assertContains("password is \"test\".", handler.toString());
+        assertContains("This is the Plain Text part", handler.toString());
+        assertContains("This is the HTML part", handler.toString());
+
+        // We do get the name of the file in the encrypted zip file
+        assertContains("text.txt", handler.toString());
+
+        // TODO Upgrade to a version of Commons Compress with Encryption
+        //  support, then verify we get the contents of the text file
+        //  held within the encrypted zip
+        assumeTrue(false); // No Zip Encryption support yet
+        assertContains("TEST DATA FOR TIKA.", handler.toString());
+        assertContains("ENCRYPTED ZIP FILES", handler.toString());
+        assertContains("TIKA-1028", handler.toString());
+    }
+
+
+    @Test
+    public void testMainBody() throws Exception {
+        //test that the first text or html chunk is processed in the main body
+        //not treated as an attachment. TIKA-2547
+        List<Metadata> metadataList = getRecursiveMetadata("testRFC822_oddfrom");
+        assertEquals(7, metadataList.size());
+        assertContains("Air Quality Planning", metadataList.get(0).get(AbstractRecursiveParserWrapperHandler.TIKA_CONTENT));
+
+        //Make sure text alternative doesn't get treated as an attachment
+        metadataList = getRecursiveMetadata("testRFC822_normal_zip");
+        assertEquals(3, metadataList.size());
+        assertContains("This is the HTML part", metadataList.get(0).get(AbstractRecursiveParserWrapperHandler.TIKA_CONTENT));
+        assertEquals("application/zip", metadataList.get(2).get(Metadata.CONTENT_TYPE));
+
+        metadataList = getRecursiveMetadata("testRFC822-txt-body");
+        assertEquals(2, metadataList.size());
+        assertContains("body 1", metadataList.get(0).get(AbstractRecursiveParserWrapperHandler.TIKA_CONTENT));
+    }
+}
diff --git a/tika-parser-integration-tests/src/test/java/org/apache/tika/parser/tests/microsoft/ooxml/OOXMLParserTest.java b/tika-parser-integration-tests/src/test/java/org/apache/tika/parser/tests/microsoft/ooxml/OOXMLParserTest.java
index 0edd3c3..79d9d2d 100644
--- a/tika-parser-integration-tests/src/test/java/org/apache/tika/parser/tests/microsoft/ooxml/OOXMLParserTest.java
+++ b/tika-parser-integration-tests/src/test/java/org/apache/tika/parser/tests/microsoft/ooxml/OOXMLParserTest.java
@@ -5,6 +5,7 @@ import org.apache.tika.metadata.Metadata;
 import org.apache.tika.parser.ParseContext;
 import org.apache.tika.parser.RecursiveParserWrapper;
 import org.apache.tika.parser.microsoft.OfficeParserConfig;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import java.util.List;
@@ -41,6 +42,7 @@ public class OOXMLParserTest extends TikaTest {
         assertContains("Hello World", pdfMetadata2.get(RecursiveParserWrapper.TIKA_CONTENT));
     }
 
+    @Ignore("TODO figure out why this doesn't work")
     @Test(expected = org.apache.tika.exception.TikaException.class)
     public void testCorruptedZip() throws Exception {
         //TIKA_2446
diff --git a/tika-parser-integration-tests/src/test/java/org/apache/tika/parser/tests/odf/ODFParserTest.java b/tika-parser-integration-tests/src/test/java/org/apache/tika/parser/tests/odf/ODFParserTest.java
new file mode 100644
index 0000000..dd0225e
--- /dev/null
+++ b/tika-parser-integration-tests/src/test/java/org/apache/tika/parser/tests/odf/ODFParserTest.java
@@ -0,0 +1,197 @@
+package org.apache.tika.parser.tests.odf;
+
+import org.apache.tika.TikaTest;
+import org.apache.tika.config.TikaConfig;
+import org.apache.tika.exception.TikaException;
+import org.apache.tika.metadata.Metadata;
+import org.apache.tika.metadata.PagedText;
+import org.apache.tika.metadata.TikaCoreProperties;
+import org.apache.tika.parser.AutoDetectParser;
+import org.apache.tika.parser.Parser;
+import org.apache.tika.sax.AbstractRecursiveParserWrapperHandler;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.xml.sax.SAXException;
+
+import java.io.IOException;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+
+public class ODFParserTest extends TikaTest {
+    private static Parser MACRO_PARSER;
+
+    @BeforeClass
+    public static void setUp() throws IOException, TikaException, SAXException {
+        MACRO_PARSER = new AutoDetectParser(new TikaConfig
+                (ODFParserTest.class.getResourceAsStream("tika-config-macros.xml")));
+    }
+
+    @Test
+    public void testMacroODT() throws Exception {
+        List<Metadata> metadataList = getRecursiveMetadata("testODTMacro.odt", MACRO_PARSER);
+        assertEquals(5, metadataList.size());
+        Metadata parent = metadataList.get(0);
+
+        assertContains("<p>Hello dear user,</p>",
+                parent.get(AbstractRecursiveParserWrapperHandler.TIKA_CONTENT));
+        assertEquals("application/vnd.oasis.opendocument.text",
+                parent.get(Metadata.CONTENT_TYPE));
+
+        //make sure metadata came through
+        assertEquals("LibreOffice/6.4.4.2$Linux_X86_64 LibreOffice_project/40$Build-2",
+                parent.get("generator"));
+        assertEquals(1, parent.getInt(PagedText.N_PAGES).intValue());
+
+        Metadata macro1 = metadataList.get(1);
+        assertEquals("MACRO", macro1.get(TikaCoreProperties.EMBEDDED_RESOURCE_TYPE_KEY));
+        assertContains("If WsGQFM Or 2 Then", macro1.get(AbstractRecursiveParserWrapperHandler.TIKA_CONTENT));
+        assertEquals("test", macro1.get(TikaCoreProperties.RESOURCE_NAME_KEY));
+
+        Metadata macro2 = metadataList.get(2);
+        assertEquals("MACRO", macro2.get(TikaCoreProperties.EMBEDDED_RESOURCE_TYPE_KEY));
+        assertContains("If WsGQFM Or 1 Then", macro2.get(AbstractRecursiveParserWrapperHandler.TIKA_CONTENT));
+        assertEquals("test2", macro2.get(TikaCoreProperties.RESOURCE_NAME_KEY));
+
+        Metadata image = metadataList.get(3);
+        assertEquals("image/png", image.get(Metadata.CONTENT_TYPE));
+    }
+
+    @Test
+    public void testMacroODTandXMLHandler() throws Exception {
+        String xml = getXML("testODTMacro.odt", MACRO_PARSER).xml;
+        assertContains("Hello dear user", xml);
+        assertContains("If WsGQFM Or 1", xml);
+        assertContains("If WsGQFM Or 2 Then", xml);
+    }
+
+    @Test
+    public void testMacroODTandXMLHandlerDefault() throws Exception {
+        //test to make sure that macros aren't extracted by the default AutoDetectParser
+        String xml = getXML("testODTMacro.odt").xml;
+        assertContains("Hello dear user", xml);
+        assertNotContained("If WsGQFM Or 1", xml);
+        assertNotContained("If WsGQFM Or 2 Then", xml);
+    }
+
+    @Test
+    public void testMacroODS() throws Exception {
+        List<Metadata> metadataList = getRecursiveMetadata("testODSMacro.ods", MACRO_PARSER);
+        assertEquals(4, metadataList.size());
+        Metadata parent = metadataList.get(0);
+
+        assertContains("<tr>",
+                parent.get(AbstractRecursiveParserWrapperHandler.TIKA_CONTENT));
+        assertEquals("application/vnd.oasis.opendocument.spreadsheet",
+                parent.get(Metadata.CONTENT_TYPE));
+
+        Metadata macro = metadataList.get(1);
+        assertEquals("MACRO", macro.get(TikaCoreProperties.EMBEDDED_RESOURCE_TYPE_KEY));
+        assertContains("If WsGQFM Or 2 Then", macro.get(AbstractRecursiveParserWrapperHandler.TIKA_CONTENT));
+        assertEquals("test1", macro.get(TikaCoreProperties.RESOURCE_NAME_KEY));
+
+        Metadata image = metadataList.get(2);
+        assertEquals("image/png", image.get(Metadata.CONTENT_TYPE));
+    }
+
+    @Test
+    public void testMacroODP() throws Exception {
+        List<Metadata> metadataList = getRecursiveMetadata("testODPMacro.odp", MACRO_PARSER);
+        assertEquals(3, metadataList.size());
+        Metadata parent = metadataList.get(0);
+
+        assertContains("<p",
+                parent.get(AbstractRecursiveParserWrapperHandler.TIKA_CONTENT));
+        assertEquals("application/vnd.oasis.opendocument.presentation",
+                parent.get(Metadata.CONTENT_TYPE));
+        //make sure metadata came through
+        assertEquals("LibreOffice/6.4.3.2$MacOSX_X86_64 LibreOffice_project/747b5d0ebf89f41c860ec2a39efd7cb15b54f2d8",
+                parent.get("generator"));
+
+        assertEquals("2", parent.get("editing-cycles"));
+
+        Metadata macro = metadataList.get(1);
+        assertEquals("MACRO", macro.get(TikaCoreProperties.EMBEDDED_RESOURCE_TYPE_KEY));
+        assertContains("If WsGQFM Or 2 Then", macro.get(AbstractRecursiveParserWrapperHandler.TIKA_CONTENT));
+        assertEquals("testmodule", macro.get(TikaCoreProperties.RESOURCE_NAME_KEY));
+        assertEquals("testmodule", macro.get(TikaCoreProperties.RESOURCE_NAME_KEY));
+
+    }
+
+    @Test
+    public void testMacroFODT() throws Exception {
+        List<Metadata> metadataList = getRecursiveMetadata("testODTMacro.fodt", MACRO_PARSER);
+        assertEquals(3, metadataList.size());
+        Metadata parent = metadataList.get(0);
+
+        assertContains("<p>Hello dear user,</p>",
+                parent.get(AbstractRecursiveParserWrapperHandler.TIKA_CONTENT));
+        assertEquals("application/vnd.oasis.opendocument.flat.text",
+                parent.get(Metadata.CONTENT_TYPE));
+
+        //make sure metadata came through
+        assertEquals("LibreOffice/6.4.3.2$MacOSX_X86_64 LibreOffice_project/747b5d0ebf89f41c860ec2a39efd7cb15b54f2d8",
+                parent.get("generator"));
+        assertEquals(1, parent.getInt(PagedText.N_PAGES).intValue());
+
+        Metadata macro = metadataList.get(1);
+        assertEquals("MACRO", macro.get(TikaCoreProperties.EMBEDDED_RESOURCE_TYPE_KEY));
+        assertContains("If WsGQFM Or 2 Then", macro.get(AbstractRecursiveParserWrapperHandler.TIKA_CONTENT));
+        assertEquals("test", macro.get(TikaCoreProperties.RESOURCE_NAME_KEY));
+
+        Metadata image = metadataList.get(2);
+        assertEquals("image/png", image.get(Metadata.CONTENT_TYPE));
+    }
+
+
+    @Test
+    public void testMacroFODTandXMLOutput() throws Exception {
+        String xml = getXML("testODTMacro.fodt", MACRO_PARSER).xml;
+        assertContains("Hello dear user", xml);
+        assertContains("If WsGQFM Or 2", xml);
+    }
+
+    @Test
+    public void testMacroFODS() throws Exception {
+        List<Metadata> metadataList = getRecursiveMetadata("testODSMacro.fods", MACRO_PARSER);
+        assertEquals(3, metadataList.size());
+        Metadata parent = metadataList.get(0);
+
+        assertContains("<tr>",
+                parent.get(AbstractRecursiveParserWrapperHandler.TIKA_CONTENT));
+        assertEquals("application/vnd.oasis.opendocument.flat.spreadsheet",
+                parent.get(Metadata.CONTENT_TYPE));
+
+        Metadata macro = metadataList.get(1);
+        assertEquals("MACRO", macro.get(TikaCoreProperties.EMBEDDED_RESOURCE_TYPE_KEY));
+        assertContains("If WsGQFM Or 2 Then", macro.get(AbstractRecursiveParserWrapperHandler.TIKA_CONTENT));
+        assertEquals("test1", macro.get(TikaCoreProperties.RESOURCE_NAME_KEY));
+
+        Metadata image = metadataList.get(2);
+        assertEquals("image/png", image.get(Metadata.CONTENT_TYPE));
+    }
+
+    @Test
+    public void testMacroFODP() throws Exception {
+        List<Metadata> metadataList = getRecursiveMetadata("testODPMacro.fodp", MACRO_PARSER);
+        assertEquals(2, metadataList.size());
+        Metadata parent = metadataList.get(0);
+
+        assertContains("<p",
+                parent.get(AbstractRecursiveParserWrapperHandler.TIKA_CONTENT));
+        assertEquals("application/vnd.oasis.opendocument.flat.presentation",
+                parent.get(Metadata.CONTENT_TYPE));
+        //make sure metadata came through
+        assertEquals("LibreOffice/6.4.3.2$MacOSX_X86_64 LibreOffice_project/747b5d0ebf89f41c860ec2a39efd7cb15b54f2d8",
+                parent.get("generator"));
+
+        assertEquals("3", parent.get("editing-cycles"));
+
+        Metadata macro = metadataList.get(1);
+        assertEquals("MACRO", macro.get(TikaCoreProperties.EMBEDDED_RESOURCE_TYPE_KEY));
+        assertContains("If WsGQFM Or 2 Then", macro.get(AbstractRecursiveParserWrapperHandler.TIKA_CONTENT));
+        assertEquals("test", macro.get(TikaCoreProperties.RESOURCE_NAME_KEY));
+
+    }
+
+}
diff --git a/tika-parser-integration-tests/src/test/java/org/apache/tika/parser/tests/pdf/PDFParserTest.java b/tika-parser-integration-tests/src/test/java/org/apache/tika/parser/tests/pdf/PDFParserTest.java
index 83a8201..ad9cb8e 100644
--- a/tika-parser-integration-tests/src/test/java/org/apache/tika/parser/tests/pdf/PDFParserTest.java
+++ b/tika-parser-integration-tests/src/test/java/org/apache/tika/parser/tests/pdf/PDFParserTest.java
@@ -1,5 +1,7 @@
 package org.apache.tika.parser.tests.pdf;
 
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
 import org.apache.tika.TikaTest;
 import org.apache.tika.config.TikaConfig;
 import org.apache.tika.extractor.ContainerExtractor;
@@ -12,11 +14,15 @@ import org.apache.tika.parser.AutoDetectParser;
 import org.apache.tika.parser.ParseContext;
 import org.apache.tika.parser.Parser;
 import org.apache.tika.parser.RecursiveParserWrapper;
+import org.apache.tika.parser.ocr.TesseractOCRConfig;
+import org.apache.tika.parser.ocr.TesseractOCRParser;
 import org.apache.tika.parser.pdf.PDFParserConfig;
 import org.apache.tika.parser.xml.XMLProfiler;
 import org.apache.tika.sax.AbstractRecursiveParserWrapperHandler;
 import org.apache.tika.sax.BasicContentHandlerFactory;
 import org.apache.tika.sax.RecursiveParserWrapperHandler;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 import java.io.InputStream;
@@ -30,7 +36,30 @@ import static org.junit.Assert.fail;
 import static org.junit.Assume.assumeTrue;
 
 public class PDFParserTest extends TikaTest {
+    public static Level PDFBOX_LOG_LEVEL = Level.INFO;
 
+    private static Boolean hasTesseract = null;
+
+    public static boolean canRunOCR() {
+        if (hasTesseract != null) {
+            return hasTesseract;
+        }
+        hasTesseract = new TesseractOCRParser().hasTesseract(new TesseractOCRConfig());
+        return hasTesseract;
+    }
+
+    @BeforeClass
+    public static void setup() {
+        //remember default logging level, but turn off for PDFParserTest
+        PDFBOX_LOG_LEVEL = Logger.getLogger("org.apache.pdfbox").getLevel();
+        Logger.getLogger("org.apache.pdfbox").setLevel(Level.OFF);
+    }
+
+    @AfterClass
+    public static void tearDown() {
+        //return to regular logging level
+        Logger.getLogger("org.apache.pdfbox").setLevel(PDFBOX_LOG_LEVEL);
+    }
     public static final MediaType TYPE_TEXT = MediaType.TEXT_PLAIN;
     public static final MediaType TYPE_EMF = MediaType.image("emf");
     public static final MediaType TYPE_PDF = MediaType.application("pdf");
diff --git a/tika-parser-modules/pom.xml b/tika-parser-modules/pom.xml
index 47e2a94..3304432 100644
--- a/tika-parser-modules/pom.xml
+++ b/tika-parser-modules/pom.xml
@@ -40,14 +40,17 @@
         <mime4j.version>0.8.3</mime4j.version>
         <pdfbox.version>2.0.20</pdfbox.version>
         <jempbox.version>1.8.16</jempbox.version>
-
+        <tagsoup.version>1.2.1</tagsoup.version>
         <commons.exec.version>1.3</commons.exec.version>
         <commons.logging.version>1.2</commons.logging.version>
+        <commons.collections4.version>4.4</commons.collections4.version>
         <!-- used by POI, PDFBox and Jackcess ...try to sync -->
         <bouncycastle.version>1.65</bouncycastle.version>
-
-        <log4j.version>1.2.17</log4j.version>
-
+        <parso.version>2.0.11</parso.version>
+        <httpcomponents.version>4.5.12</httpcomponents.version>
+        <openjson.version>1.0.12</openjson.version>
+        <javax.annotation.version>1.3.2</javax.annotation.version>
+        <json.simple.version>1.1.1</json.simple.version>
     </properties>
 
     <dependencies>
@@ -71,19 +74,33 @@
         </dependency>
     </dependencies>
     <modules>
+        <module>tika-parser-digest-commons</module>
+        <module>tika-parser-mail-commons</module>
         <module>tika-parser-xmp-commons</module>
         <module>tika-parser-zip-commons</module>
+
+        <module>tika-parser-ocr-module</module>
         <module>tika-parser-audiovideo-module</module>
+        <module>tika-parser-code-module</module>
         <module>tika-parser-html-module</module>
         <module>tika-parser-image-module</module>
         <module>tika-parser-text-module</module>
         <module>tika-parser-font-module</module>
         <module>tika-parser-microsoft-module</module>
         <module>tika-parser-pkg-module</module>
-        <module>tika-parser-mail-commons</module>
         <module>tika-parser-xml-module</module>
-        <module>tika-parser-ocr-module</module>
         <module>tika-parser-pdf-module</module>
+        <module>tika-parser-math-module</module>
+        <module>tika-parser-apple-module</module>
+        <module>tika-parser-cad-module</module>
+        <module>tika-parser-mail-module</module>
+        <module>tika-parser-miscoffice-module</module>
+        <module>tika-parser-news-module</module>
+        <module>tika-parser-advancedmedia-module</module>
+        <module>tika-parser-nlp-module</module>
+        <module>tika-parser-scientific-module</module>
+        <module>tika-parser-db-module</module>
+        <module>tika-parser-crypto-module</module>
     </modules>
 
 </project>
\ No newline at end of file
diff --git a/tika-parser-modules/tika-parser-advancedmedia-module/pom.xml b/tika-parser-modules/tika-parser-advancedmedia-module/pom.xml
new file mode 100644
index 0000000..6aaa9ae
--- /dev/null
+++ b/tika-parser-modules/tika-parser-advancedmedia-module/pom.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>tika-parser-modules</artifactId>
+        <groupId>org.apache.tika</groupId>
+        <version>2.0.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>tika-parser-advancedvideo-modules</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>tika-parser-audiovideo-module</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.googlecode.json-simple</groupId>
+            <artifactId>json-simple</artifactId>
+            <version>1.1.1</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>junit</groupId>
+                    <artifactId>junit</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+            <version>${httpcomponents.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>commons-logging</groupId>
+                    <artifactId>commons-logging</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>commons-codec</groupId>
+                    <artifactId>commons-codec</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+            <version>${codec.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpmime</artifactId>
+            <version>${httpcomponents.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.github.openjson</groupId>
+            <artifactId>openjson</artifactId>
+            <version>1.0.12</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.ws.rs</groupId>
+            <artifactId>javax.ws.rs-api</artifactId>
+            <version>2.1.1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-exec</artifactId>
+            <version>${commons.exec.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+            <version>${commons.lang3.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-rs-client</artifactId>
+            <version>${cxf.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>javax.annotation</groupId>
+                    <artifactId>javax.annotation-api</artifactId>
+                </exclusion>
+            </exclusions>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.annotation</groupId>
+            <artifactId>javax.annotation-api</artifactId>
+            <version>${javax.annotation.version}</version>
+        </dependency>
+
+    </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/captioning/CaptionObject.java b/tika-parser-modules/tika-parser-advancedmedia-module/src/main/java/org/apache/tika/parser/captioning/CaptionObject.java
similarity index 100%
rename from tika-parsers/src/main/java/org/apache/tika/parser/captioning/CaptionObject.java
rename to tika-parser-modules/tika-parser-advancedmedia-module/src/main/java/org/apache/tika/parser/captioning/CaptionObject.java
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/captioning/tf/TensorflowRESTCaptioner.java b/tika-parser-modules/tika-parser-advancedmedia-module/src/main/java/org/apache/tika/parser/captioning/tf/TensorflowRESTCaptioner.java
similarity index 98%
rename from tika-parsers/src/main/java/org/apache/tika/parser/captioning/tf/TensorflowRESTCaptioner.java
rename to tika-parser-modules/tika-parser-advancedmedia-module/src/main/java/org/apache/tika/parser/captioning/tf/TensorflowRESTCaptioner.java
index 5fd9d9a..04292ee 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/captioning/tf/TensorflowRESTCaptioner.java
+++ b/tika-parser-modules/tika-parser-advancedmedia-module/src/main/java/org/apache/tika/parser/captioning/tf/TensorflowRESTCaptioner.java
@@ -21,6 +21,7 @@ import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URI;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
@@ -147,7 +148,7 @@ public class TensorflowRESTCaptioner implements ObjectRecogniser {
 
             HttpResponse response = client.execute(request);
             try (InputStream reply = response.getEntity().getContent()) {
-                String replyMessage = IOUtils.toString(reply);
+                String replyMessage = IOUtils.toString(reply, StandardCharsets.UTF_8);
                 if (response.getStatusLine().getStatusCode() == 200) {
                     JSONObject jReply = (JSONObject) new JSONParser().parse(replyMessage);
                     JSONArray jCaptions = (JSONArray) jReply.get("captions");
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/pot/PooledTimeSeriesParser.java b/tika-parser-modules/tika-parser-advancedmedia-module/src/main/java/org/apache/tika/parser/pot/PooledTimeSeriesParser.java
similarity index 100%
rename from tika-parsers/src/main/java/org/apache/tika/parser/pot/PooledTimeSeriesParser.java
rename to tika-parser-modules/tika-parser-advancedmedia-module/src/main/java/org/apache/tika/parser/pot/PooledTimeSeriesParser.java
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/recognition/ObjectRecogniser.java b/tika-parser-modules/tika-parser-advancedmedia-module/src/main/java/org/apache/tika/parser/recognition/ObjectRecogniser.java
similarity index 100%
rename from tika-parsers/src/main/java/org/apache/tika/parser/recognition/ObjectRecogniser.java
rename to tika-parser-modules/tika-parser-advancedmedia-module/src/main/java/org/apache/tika/parser/recognition/ObjectRecogniser.java
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/recognition/ObjectRecognitionParser.java b/tika-parser-modules/tika-parser-advancedmedia-module/src/main/java/org/apache/tika/parser/recognition/ObjectRecognitionParser.java
similarity index 100%
rename from tika-parsers/src/main/java/org/apache/tika/parser/recognition/ObjectRecognitionParser.java
rename to tika-parser-modules/tika-parser-advancedmedia-module/src/main/java/org/apache/tika/parser/recognition/ObjectRecognitionParser.java
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/recognition/RecognisedObject.java b/tika-parser-modules/tika-parser-advancedmedia-module/src/main/java/org/apache/tika/parser/recognition/RecognisedObject.java
similarity index 100%
rename from tika-parsers/src/main/java/org/apache/tika/parser/recognition/RecognisedObject.java
rename to tika-parser-modules/tika-parser-advancedmedia-module/src/main/java/org/apache/tika/parser/recognition/RecognisedObject.java
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/recognition/tf/TensorflowImageRecParser.java b/tika-parser-modules/tika-parser-advancedmedia-module/src/main/java/org/apache/tika/parser/recognition/tf/TensorflowImageRecParser.java
similarity index 100%
rename from tika-parsers/src/main/java/org/apache/tika/parser/recognition/tf/TensorflowImageRecParser.java
rename to tika-parser-modules/tika-parser-advancedmedia-module/src/main/java/org/apache/tika/parser/recognition/tf/TensorflowImageRecParser.java
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/recognition/tf/TensorflowRESTRecogniser.java b/tika-parser-modules/tika-parser-advancedmedia-module/src/main/java/org/apache/tika/parser/recognition/tf/TensorflowRESTRecogniser.java
similarity index 98%
rename from tika-parsers/src/main/java/org/apache/tika/parser/recognition/tf/TensorflowRESTRecogniser.java
rename to tika-parser-modules/tika-parser-advancedmedia-module/src/main/java/org/apache/tika/parser/recognition/tf/TensorflowRESTRecogniser.java
index 41e2d00..3a2350c 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/recognition/tf/TensorflowRESTRecogniser.java
+++ b/tika-parser-modules/tika-parser-advancedmedia-module/src/main/java/org/apache/tika/parser/recognition/tf/TensorflowRESTRecogniser.java
@@ -21,6 +21,7 @@ import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URI;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
@@ -152,7 +153,7 @@ public class TensorflowRESTRecogniser implements ObjectRecogniser {
 
             HttpResponse response = client.execute(request);
             try (InputStream reply = response.getEntity().getContent()) {
-                String replyMessage = IOUtils.toString(reply);
+                String replyMessage = IOUtils.toString(reply, StandardCharsets.UTF_8);
                 if (response.getStatusLine().getStatusCode() == 200) {
                     JSONObject jReply = new JSONObject(replyMessage);
                     JSONArray jClasses = jReply.getJSONArray("classnames");
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/recognition/tf/TensorflowRESTVideoRecogniser.java b/tika-parser-modules/tika-parser-advancedmedia-module/src/main/java/org/apache/tika/parser/recognition/tf/TensorflowRESTVideoRecogniser.java
similarity index 100%
rename from tika-parsers/src/main/java/org/apache/tika/parser/recognition/tf/TensorflowRESTVideoRecogniser.java
rename to tika-parser-modules/tika-parser-advancedmedia-module/src/main/java/org/apache/tika/parser/recognition/tf/TensorflowRESTVideoRecogniser.java
diff --git a/tika-parsers/src/main/resources/org/apache/tika/parser/captioning/tf/caption_generator.py b/tika-parser-modules/tika-parser-advancedmedia-module/src/main/resources/org/apache/tika/parser/captioning/tf/caption_generator.py
similarity index 100%
rename from tika-parsers/src/main/resources/org/apache/tika/parser/captioning/tf/caption_generator.py
rename to tika-parser-modules/tika-parser-advancedmedia-module/src/main/resources/org/apache/tika/parser/captioning/tf/caption_generator.py
diff --git a/tika-parsers/src/main/resources/org/apache/tika/parser/captioning/tf/im2txtapi.py b/tika-parser-modules/tika-parser-advancedmedia-module/src/main/resources/org/apache/tika/parser/captioning/tf/im2txtapi.py
similarity index 100%
rename from tika-parsers/src/main/resources/org/apache/tika/parser/captioning/tf/im2txtapi.py
rename to tika-parser-modules/tika-parser-advancedmedia-module/src/main/resources/org/apache/tika/parser/captioning/tf/im2txtapi.py
diff --git a/tika-parsers/src/main/resources/org/apache/tika/parser/captioning/tf/model_info.xml b/tika-parser-modules/tika-parser-advancedmedia-module/src/main/resources/org/apache/tika/parser/captioning/tf/model_info.xml
similarity index 100%
rename from tika-parsers/src/main/resources/org/apache/tika/parser/captioning/tf/model_info.xml
rename to tika-parser-modules/tika-parser-advancedmedia-module/src/main/resources/org/apache/tika/parser/captioning/tf/model_info.xml
diff --git a/tika-parsers/src/main/resources/org/apache/tika/parser/captioning/tf/model_wrapper.py b/tika-parser-modules/tika-parser-advancedmedia-module/src/main/resources/org/apache/tika/parser/captioning/tf/model_wrapper.py
similarity index 100%
rename from tika-parsers/src/main/resources/org/apache/tika/parser/captioning/tf/model_wrapper.py
rename to tika-parser-modules/tika-parser-advancedmedia-module/src/main/resources/org/apache/tika/parser/captioning/tf/model_wrapper.py
diff --git a/tika-parsers/src/main/resources/org/apache/tika/parser/captioning/tf/vocabulary.py b/tika-parser-modules/tika-parser-advancedmedia-module/src/main/resources/org/apache/tika/parser/captioning/tf/vocabulary.py
similarity index 100%
rename from tika-parsers/src/main/resources/org/apache/tika/parser/captioning/tf/vocabulary.py
rename to tika-parser-modules/tika-parser-advancedmedia-module/src/main/resources/org/apache/tika/parser/captioning/tf/vocabulary.py
diff --git a/tika-parsers/src/main/resources/org/apache/tika/parser/recognition/tf/inception_v4.py b/tika-parser-modules/tika-parser-advancedmedia-module/src/main/resources/org/apache/tika/parser/recognition/tf/inception_v4.py
similarity index 100%
rename from tika-parsers/src/main/resources/org/apache/tika/parser/recognition/tf/inception_v4.py
rename to tika-parser-modules/tika-parser-advancedmedia-module/src/main/resources/org/apache/tika/parser/recognition/tf/inception_v4.py
diff --git a/tika-parsers/src/main/resources/org/apache/tika/parser/recognition/tf/inceptionapi.py b/tika-parser-modules/tika-parser-advancedmedia-module/src/main/resources/org/apache/tika/parser/recognition/tf/inceptionapi.py
similarity index 100%
rename from tika-parsers/src/main/resources/org/apache/tika/parser/recognition/tf/inceptionapi.py
rename to tika-parser-modules/tika-parser-advancedmedia-module/src/main/resources/org/apache/tika/parser/recognition/tf/inceptionapi.py
diff --git a/tika-parsers/src/main/resources/org/apache/tika/parser/recognition/tf/video_util.py b/tika-parser-modules/tika-parser-advancedmedia-module/src/main/resources/org/apache/tika/parser/recognition/tf/video_util.py
similarity index 100%
rename from tika-parsers/src/main/resources/org/apache/tika/parser/recognition/tf/video_util.py
rename to tika-parser-modules/tika-parser-advancedmedia-module/src/main/resources/org/apache/tika/parser/recognition/tf/video_util.py
diff --git a/tika-parsers/src/test/resources/org/apache/tika/parser/recognition/tika-config-tflow-im2txt-rest.xml b/tika-parser-modules/tika-parser-advancedmedia-module/src/main/resources/org/apache/tika/parser/recognition/tika-config-tflow-im2txt-rest.xml
similarity index 100%
rename from tika-parsers/src/test/resources/org/apache/tika/parser/recognition/tika-config-tflow-im2txt-rest.xml
rename to tika-parser-modules/tika-parser-advancedmedia-module/src/main/resources/org/apache/tika/parser/recognition/tika-config-tflow-im2txt-rest.xml
diff --git a/tika-parsers/src/test/resources/org/apache/tika/parser/recognition/tika-config-tflow-rest.xml b/tika-parser-modules/tika-parser-advancedmedia-module/src/main/resources/org/apache/tika/parser/recognition/tika-config-tflow-rest.xml
similarity index 100%
rename from tika-parsers/src/test/resources/org/apache/tika/parser/recognition/tika-config-tflow-rest.xml
rename to tika-parser-modules/tika-parser-advancedmedia-module/src/main/resources/org/apache/tika/parser/recognition/tika-config-tflow-rest.xml
diff --git a/tika-parsers/src/test/resources/org/apache/tika/parser/recognition/tika-config-tflow-video-rest.xml b/tika-parser-modules/tika-parser-advancedmedia-module/src/main/resources/org/apache/tika/parser/recognition/tika-config-tflow-video-rest.xml
similarity index 100%
rename from tika-parsers/src/test/resources/org/apache/tika/parser/recognition/tika-config-tflow-video-rest.xml
rename to tika-parser-modules/tika-parser-advancedmedia-module/src/main/resources/org/apache/tika/parser/recognition/tika-config-tflow-video-rest.xml
diff --git a/tika-parsers/src/test/resources/org/apache/tika/parser/recognition/tika-config-tflow.xml b/tika-parser-modules/tika-parser-advancedmedia-module/src/main/resources/org/apache/tika/parser/recognition/tika-config-tflow.xml
similarity index 100%
rename from tika-parsers/src/test/resources/org/apache/tika/parser/recognition/tika-config-tflow.xml
rename to tika-parser-modules/tika-parser-advancedmedia-module/src/main/resources/org/apache/tika/parser/recognition/tika-config-tflow.xml
diff --git a/tika-parsers/src/test/java/org/apache/tika/parser/recognition/ObjectRecognitionParserTest.java b/tika-parser-modules/tika-parser-advancedmedia-module/src/test/java/org/apache/tika/parser/recognition/ObjectRecognitionParserTest.java
similarity index 100%
rename from tika-parsers/src/test/java/org/apache/tika/parser/recognition/ObjectRecognitionParserTest.java
rename to tika-parser-modules/tika-parser-advancedmedia-module/src/test/java/org/apache/tika/parser/recognition/ObjectRecognitionParserTest.java
diff --git a/tika-parsers/src/test/java/org/apache/tika/parser/recognition/tf/TensorflowImageRecParserTest.java b/tika-parser-modules/tika-parser-advancedmedia-module/src/test/java/org/apache/tika/parser/recognition/tf/TensorflowImageRecParserTest.java
similarity index 100%
rename from tika-parsers/src/test/java/org/apache/tika/parser/recognition/tf/TensorflowImageRecParserTest.java
rename to tika-parser-modules/tika-parser-advancedmedia-module/src/test/java/org/apache/tika/parser/recognition/tf/TensorflowImageRecParserTest.java
diff --git a/tika-parsers/src/test/java/org/apache/tika/parser/recognition/tf/TensorflowVideoRecParserTest.java b/tika-parser-modules/tika-parser-advancedmedia-module/src/test/java/org/apache/tika/parser/recognition/tf/TensorflowVideoRecParserTest.java
similarity index 100%
rename from tika-parsers/src/test/java/org/apache/tika/parser/recognition/tf/TensorflowVideoRecParserTest.java
rename to tika-parser-modules/tika-parser-advancedmedia-module/src/test/java/org/apache/tika/parser/recognition/tf/TensorflowVideoRecParserTest.java
diff --git a/tika-parser-modules/tika-parser-html-module/pom.xml b/tika-parser-modules/tika-parser-apple-module/pom.xml
similarity index 59%
copy from tika-parser-modules/tika-parser-html-module/pom.xml
copy to tika-parser-modules/tika-parser-apple-module/pom.xml
index 73d06b6..14a2242 100644
--- a/tika-parser-modules/tika-parser-html-module/pom.xml
+++ b/tika-parser-modules/tika-parser-apple-module/pom.xml
@@ -9,38 +9,20 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>tika-parser-html-module</artifactId>
+    <artifactId>tika-parser-apple-module</artifactId>
 
     <dependencies>
         <dependency>
-            <groupId>org.ccil.cowan.tagsoup</groupId>
-            <artifactId>tagsoup</artifactId>
-            <version>1.2.1</version>
-        </dependency>
-        <dependency>
-            <groupId>de.l3s.boilerpipe</groupId>
-            <artifactId>boilerpipe</artifactId>
-            <version>1.1.0</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-codec</groupId>
-            <artifactId>commons-codec</artifactId>
-            <version>${codec.version}</version>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>tika-parser-zip-commons</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-            <version>${commons.io.version}</version>
+            <groupId>com.googlecode.plist</groupId>
+            <artifactId>dd-plist</artifactId>
+            <version>1.23</version>
         </dependency>
 
-        <!-- test scope -->
-        <!-- this is required for basic encoding detection -->
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>tika-parser-text-module</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
     <build>
         <plugins>
@@ -50,7 +32,7 @@
                 <configuration>
                     <archive>
                         <manifestEntries>
-                            <Automatic-Module-Name>org.apache.tika.parser.html</Automatic-Module-Name>
+                            <Automatic-Module-Name>org.apache.tika.parser.apple</Automatic-Module-Name>
                         </manifestEntries>
                     </archive>
                 </configuration>
diff --git a/tika-parser-modules/tika-parser-apple-module/src/main/java/org/apache/tika/detect/apple/iwork/IWorkDetector.java b/tika-parser-modules/tika-parser-apple-module/src/main/java/org/apache/tika/detect/apple/iwork/IWorkDetector.java
new file mode 100644
index 0000000..49e8329
--- /dev/null
+++ b/tika-parser-modules/tika-parser-apple-module/src/main/java/org/apache/tika/detect/apple/iwork/IWorkDetector.java
@@ -0,0 +1,108 @@
+package org.apache.tika.detect.apple.iwork;
+
+import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
+import org.apache.commons.compress.archivers.zip.ZipFile;
+import org.apache.tika.detect.zip.StreamingDetectContext;
+import org.apache.tika.detect.zip.ZipContainerDetector;
+import org.apache.tika.io.TikaInputStream;
+import org.apache.tika.mime.MediaType;
+import org.apache.tika.parser.iwork.IWorkPackageParser;
+import org.apache.tika.parser.iwork.iwana.IWork13PackageParser;
+import org.apache.tika.parser.iwork.iwana.IWork18PackageParser;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashSet;
+import java.util.Set;
+
+public class IWorkDetector implements ZipContainerDetector {
+
+
+    private static MediaType detectIWork13(ZipFile zip) {
+        if (zip.getEntry(IWork13PackageParser.IWORK13_COMMON_ENTRY) != null) {
+            return IWork13PackageParser.IWork13DocumentType.detect(zip);
+        }
+        return null;
+    }
+
+    private static MediaType detectIWork18(ZipFile zip) {
+        return IWork18PackageParser.IWork18DocumentType.detect(zip);
+    }
+
+    private static MediaType detectIWork(ZipFile zip) {
+        if (zip.getEntry(IWorkPackageParser.IWORK_COMMON_ENTRY) != null) {
+            // Locate the appropriate index file entry, and reads from that
+            // the root element of the document. That is used to the identify
+            // the correct type of the keynote container.
+            for (String entryName : IWorkPackageParser.IWORK_CONTENT_ENTRIES) {
+                IWorkPackageParser.IWORKDocumentType type =
+                        IWorkPackageParser.IWORKDocumentType.detectType(zip.getEntry(entryName), zip);
+                if (type != null) {
+                    return type.getType();
+                }
+            }
+
+            // Not sure, fallback to the container type
+            return MediaType.application("vnd.apple.iwork");
+        } else {
+            return null;
+        }
+    }
+
+    @Override
+    public MediaType detect(ZipFile zipFile, TikaInputStream tis) throws IOException {
+        MediaType mt = detectIWork18(zipFile);
+        if (mt != null) {
+            return mt;
+        }
+        mt = detectIWork13(zipFile);
+        if (mt != null) {
+            return mt;
+        }
+        return detectIWork(zipFile);
+    }
+
+    @Override
+    public MediaType streamingDetectUpdate(ZipArchiveEntry zae, InputStream zis, StreamingDetectContext detectContext) {
+        String name = zae.getName();
+        EntryNames entryNames = detectContext.get(EntryNames.class);
+        if (entryNames == null) {
+            entryNames = new EntryNames();
+            detectContext.set(EntryNames.class, entryNames);
+        }
+        entryNames.names.add(name);
+        if (IWorkPackageParser.IWORK_CONTENT_ENTRIES.contains(name)) {
+            IWorkPackageParser.IWORKDocumentType type =
+                    IWorkPackageParser.IWORKDocumentType.detectType(zis);
+            if (type != null) {
+                return type.getType();
+            }
+        }
+        MediaType mt = IWork18PackageParser.IWork18DocumentType.detectIfPossible(zae);
+        if (mt != null) {
+            return mt;
+        }
+        mt = IWork13PackageParser.IWork13DocumentType.detectIfPossible(zae);
+        if (mt != null) {
+            return mt;
+        }
+        return null;
+    }
+
+    @Override
+    public MediaType streamingDetectFinal(StreamingDetectContext detectContext) {
+        EntryNames entryNames = detectContext.get(EntryNames.class);
+        if (entryNames == null) {
+            return null;
+        }
+        //general iworks
+        if (entryNames.names.contains(IWorkPackageParser.IWORK_COMMON_ENTRY)) {
+            return MediaType.application("vnd.apple.iwork");
+        }
+        return null;
+    }
+
+    private static class EntryNames {
+        Set<String> names = new HashSet<>();
+    }
+}
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/apple/AppleSingleFileParser.java b/tika-parser-modules/tika-parser-apple-module/src/main/java/org/apache/tika/parser/apple/AppleSingleFileParser.java
similarity index 98%
rename from tika-parsers/src/main/java/org/apache/tika/parser/apple/AppleSingleFileParser.java
rename to tika-parser-modules/tika-parser-apple-module/src/main/java/org/apache/tika/parser/apple/AppleSingleFileParser.java
index f32e501..c1007f2 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/apple/AppleSingleFileParser.java
+++ b/tika-parser-modules/tika-parser-apple-module/src/main/java/org/apache/tika/parser/apple/AppleSingleFileParser.java
@@ -16,22 +16,13 @@
  */
 package org.apache.tika.parser.apple;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.io.input.CloseShieldInputStream;
 import org.apache.tika.exception.TikaException;
 import org.apache.tika.exception.TikaMemoryLimitException;
 import org.apache.tika.extractor.EmbeddedDocumentExtractor;
 import org.apache.tika.extractor.EmbeddedDocumentUtil;
+import org.apache.tika.io.CloseShieldInputStream;
 import org.apache.tika.io.EndianUtils;
+import org.apache.tika.io.IOUtils;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.metadata.TikaCoreProperties;
 import org.apache.tika.mime.MediaType;
@@ -41,6 +32,15 @@ import org.apache.tika.sax.XHTMLContentHandler;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.SAXException;
 
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Set;
+
 /**
  * Parser that strips the header off of AppleSingle and AppleDouble
  * files.
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/apple/BPListDetector.java b/tika-parser-modules/tika-parser-apple-module/src/main/java/org/apache/tika/parser/apple/BPListDetector.java
similarity index 98%
rename from tika-parsers/src/main/java/org/apache/tika/parser/apple/BPListDetector.java
rename to tika-parser-modules/tika-parser-apple-module/src/main/java/org/apache/tika/parser/apple/BPListDetector.java
index 24b6bb8..e45d89f 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/apple/BPListDetector.java
+++ b/tika-parser-modules/tika-parser-apple-module/src/main/java/org/apache/tika/parser/apple/BPListDetector.java
@@ -20,9 +20,9 @@ import com.dd.plist.NSDictionary;
 import com.dd.plist.NSObject;
 import com.dd.plist.PropertyListFormatException;
 import com.dd.plist.PropertyListParser;
-import org.apache.poi.util.IOUtils;
 import org.apache.tika.detect.Detector;
 import org.apache.tika.io.IOExceptionWithCause;
+import org.apache.tika.io.IOUtils;
 import org.apache.tika.io.TikaInputStream;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.mime.MediaType;
@@ -83,7 +83,7 @@ public class BPListDetector implements Detector {
         byte[] bytes = new byte[8];
 
         try {
-            int read = IOUtils.readFully(input, bytes);
+            int read = IOUtils.read(input, bytes);
             if (read < 6) {
                 return MediaType.OCTET_STREAM;
             }
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/apple/PListParser.java b/tika-parser-modules/tika-parser-apple-module/src/main/java/org/apache/tika/parser/apple/PListParser.java
similarity index 99%
rename from tika-parsers/src/main/java/org/apache/tika/parser/apple/PListParser.java
rename to tika-parser-modules/tika-parser-apple-module/src/main/java/org/apache/tika/parser/apple/PListParser.java
index a05f03c..c34e516 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/apple/PListParser.java
+++ b/tika-parser-modules/tika-parser-apple-module/src/main/java/org/apache/tika/parser/apple/PListParser.java
@@ -39,7 +39,6 @@ import org.apache.tika.sax.XHTMLContentHandler;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.SAXException;
 
-
 import javax.xml.parsers.ParserConfigurationException;
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/iwork/AutoPageNumberUtils.java b/tika-parser-modules/tika-parser-apple-module/src/main/java/org/apache/tika/parser/iwork/AutoPageNumberUtils.java
similarity index 100%
rename from tika-parsers/src/main/java/org/apache/tika/parser/iwork/AutoPageNumberUtils.java
rename to tika-parser-modules/tika-parser-apple-module/src/main/java/org/apache/tika/parser/iwork/AutoPageNumberUtils.java
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/iwork/IWorkPackageParser.java b/tika-parser-modules/tika-parser-apple-module/src/main/java/org/apache/tika/parser/iwork/IWorkPackageParser.java
similarity index 99%
rename from tika-parsers/src/main/java/org/apache/tika/parser/iwork/IWorkPackageParser.java
rename to tika-parser-modules/tika-parser-apple-module/src/main/java/org/apache/tika/parser/iwork/IWorkPackageParser.java
index 2ffbf56..061c40b 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/iwork/IWorkPackageParser.java
+++ b/tika-parser-modules/tika-parser-apple-module/src/main/java/org/apache/tika/parser/iwork/IWorkPackageParser.java
@@ -20,9 +20,9 @@ import org.apache.commons.compress.archivers.zip.UnsupportedZipFeatureException;
 import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
 import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;
 import org.apache.commons.compress.archivers.zip.ZipFile;
-import org.apache.commons.io.input.CloseShieldInputStream;
 import org.apache.tika.detect.XmlRootExtractor;
 import org.apache.tika.exception.TikaException;
+import org.apache.tika.io.CloseShieldInputStream;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.mime.MediaType;
 import org.apache.tika.parser.AbstractParser;
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/iwork/KeynoteContentHandler.java b/tika-parser-modules/tika-parser-apple-module/src/main/java/org/apache/tika/parser/iwork/KeynoteContentHandler.java
similarity index 100%
rename from tika-parsers/src/main/java/org/apache/tika/parser/iwork/KeynoteContentHandler.java
rename to tika-parser-modules/tika-parser-apple-module/src/main/java/org/apache/tika/parser/iwork/KeynoteContentHandler.java
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/iwork/NumbersContentHandler.java b/tika-parser-modules/tika-parser-apple-module/src/main/java/org/apache/tika/parser/iwork/NumbersContentHandler.java
similarity index 100%
rename from tika-parsers/src/main/java/org/apache/tika/parser/iwork/NumbersContentHandler.java
rename to tika-parser-modules/tika-parser-apple-module/src/main/java/org/apache/tika/parser/iwork/NumbersContentHandler.java
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/iwork/PagesContentHandler.java b/tika-parser-modules/tika-parser-apple-module/src/main/java/org/apache/tika/parser/iwork/PagesContentHandler.java
similarity index 100%
rename from tika-parsers/src/main/java/org/apache/tika/parser/iwork/PagesContentHandler.java
rename to tika-parser-modules/tika-parser-apple-module/src/main/java/org/apache/tika/parser/iwork/PagesContentHandler.java
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/iwork/iwana/IWork13PackageParser.java b/tika-parser-modules/tika-parser-apple-module/src/main/java/org/apache/tika/parser/iwork/iwana/IWork13PackageParser.java
similarity index 100%
rename from tika-parsers/src/main/java/org/apache/tika/parser/iwork/iwana/IWork13PackageParser.java
rename to tika-parser-modules/tika-parser-apple-module/src/main/java/org/apache/tika/parser/iwork/iwana/IWork13PackageParser.java
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/iwork/iwana/IWork18PackageParser.java b/tika-parser-modules/tika-parser-apple-module/src/main/java/org/apache/tika/parser/iwork/iwana/IWork18PackageParser.java
similarity index 100%
rename from tika-parsers/src/main/java/org/apache/tika/parser/iwork/iwana/IWork18PackageParser.java
rename to tika-parser-modules/tika-parser-apple-module/src/main/java/org/apache/tika/parser/iwork/iwana/IWork18PackageParser.java
diff --git a/tika-parsers/src/main/resources/org/apache/tika/parser/ner/nltk/NLTKServer.properties b/tika-parser-modules/tika-parser-apple-module/src/main/resources/META-INF/services/org.apache.tika.detect.Detector
similarity index 94%
copy from tika-parsers/src/main/resources/org/apache/tika/parser/ner/nltk/NLTKServer.properties
copy to tika-parser-modules/tika-parser-apple-module/src/main/resources/META-INF/services/org.apache.tika.detect.Detector
index 5909b69..f3fd873 100644
--- a/tika-parsers/src/main/resources/org/apache/tika/parser/ner/nltk/NLTKServer.properties
+++ b/tika-parser-modules/tika-parser-apple-module/src/main/resources/META-INF/services/org.apache.tika.detect.Detector
@@ -13,4 +13,4 @@
 #  See the License for the specific language governing permissions and
 #  limitations under the License.
 
-nltk.server.url=http://localhost:8881
+org.apache.tika.parser.apple.BPListDetector
diff --git a/tika-parsers/src/main/resources/org/apache/tika/parser/ner/nltk/NLTKServer.properties b/tika-parser-modules/tika-parser-apple-module/src/main/resources/META-INF/services/org.apache.tika.detect.zip.ZipContainerDetector
similarity index 94%
copy from tika-parsers/src/main/resources/org/apache/tika/parser/ner/nltk/NLTKServer.properties
copy to tika-parser-modules/tika-parser-apple-module/src/main/resources/META-INF/services/org.apache.tika.detect.zip.ZipContainerDetector
index 5909b69..d1a90e2 100644
--- a/tika-parsers/src/main/resources/org/apache/tika/parser/ner/nltk/NLTKServer.properties
+++ b/tika-parser-modules/tika-parser-apple-module/src/main/resources/META-INF/services/org.apache.tika.detect.zip.ZipContainerDetector
@@ -12,5 +12,4 @@
 #  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.
-
-nltk.server.url=http://localhost:8881
+org.apache.tika.detect.apple.iwork.IWorkDetector
\ No newline at end of file
diff --git a/tika-parser-modules/tika-parser-audiovideo-module/src/main/resources/META-INF/services/org.apache.tika.parser.Parser b/tika-parser-modules/tika-parser-apple-module/src/main/resources/META-INF/services/org.apache.tika.parser.Parser
similarity index 75%
copy from tika-parser-modules/tika-parser-audiovideo-module/src/main/resources/META-INF/services/org.apache.tika.parser.Parser
copy to tika-parser-modules/tika-parser-apple-module/src/main/resources/META-INF/services/org.apache.tika.parser.Parser
index 535a88a..c922b2e 100644
--- a/tika-parser-modules/tika-parser-audiovideo-module/src/main/resources/META-INF/services/org.apache.tika.parser.Parser
+++ b/tika-parser-modules/tika-parser-apple-module/src/main/resources/META-INF/services/org.apache.tika.parser.Parser
@@ -13,9 +13,10 @@
 #  See the License for the specific language governing permissions and
 #  limitations under the License.
 
-org.apache.tika.parser.audio.AudioParser
-org.apache.tika.parser.audio.MidiParser
-org.apache.tika.parser.mp3.Mp3Parser
-org.apache.tika.parser.mp4.MP4Parser
+org.apache.tika.parser.apple.AppleSingleFileParser
+org.apache.tika.parser.apple.PListParser
+org.apache.tika.parser.iwork.iwana.IWork13PackageParser
+org.apache.tika.parser.iwork.iwana.IWork18PackageParser
+org.apache.tika.parser.iwork.IWorkPackageParser
 
 
diff --git a/tika-parsers/src/test/java/org/apache/tika/parser/apple/PListParserTest.java b/tika-parser-modules/tika-parser-apple-module/src/test/java/org/apache/tika/parser/apple/PListParserTest.java
similarity index 78%
rename from tika-parsers/src/test/java/org/apache/tika/parser/apple/PListParserTest.java
rename to tika-parser-modules/tika-parser-apple-module/src/test/java/org/apache/tika/parser/apple/PListParserTest.java
index 9c60d5b..94ddbe4 100644
--- a/tika-parsers/src/test/java/org/apache/tika/parser/apple/PListParserTest.java
+++ b/tika-parser-modules/tika-parser-apple-module/src/test/java/org/apache/tika/parser/apple/PListParserTest.java
@@ -43,16 +43,6 @@ public class PListParserTest extends TikaTest {
         assertContains("<string>90", content);
     }
 
-    @Test
-    public void testWebArchive() throws Exception {
-        List<Metadata> metadataList = getRecursiveMetadata("testWEBARCHIVE.webarchive");
-        assertEquals(12, metadataList.size());
-        Metadata m0 = metadataList.get(0);
-        assertEquals("application/x-bplist-webarchive", m0.get(Metadata.CONTENT_TYPE));
-        Metadata m1 = metadataList.get(1);
-        String content = m1.get(AbstractRecursiveParserWrapperHandler.TIKA_CONTENT);
-        assertContains("December 2008: Apache Tika Release", content);
-    }
 
     //TODO -- add unit tests for memgraph
     //TODO -- convert existing unit tests to xml plist and add unit tests.
diff --git a/tika-parsers/src/test/java/org/apache/tika/parser/iwork/AutoPageNumberUtilsTest.java b/tika-parser-modules/tika-parser-apple-module/src/test/java/org/apache/tika/parser/iwork/AutoPageNumberUtilsTest.java
similarity index 98%
rename from tika-parsers/src/test/java/org/apache/tika/parser/iwork/AutoPageNumberUtilsTest.java
rename to tika-parser-modules/tika-parser-apple-module/src/test/java/org/apache/tika/parser/iwork/AutoPageNumberUtilsTest.java
index 25dfc44..65e7121 100644
--- a/tika-parsers/src/test/java/org/apache/tika/parser/iwork/AutoPageNumberUtilsTest.java
+++ b/tika-parser-modules/tika-parser-apple-module/src/test/java/org/apache/tika/parser/iwork/AutoPageNumberUtilsTest.java
@@ -18,6 +18,7 @@ package org.apache.tika.parser.iwork;
 
 import static org.junit.Assert.assertEquals;
 
+import org.apache.tika.parser.iwork.AutoPageNumberUtils;
 import org.junit.Test;
 
 /**
diff --git a/tika-parsers/src/test/java/org/apache/tika/parser/iwork/IWorkParserTest.java b/tika-parser-modules/tika-parser-apple-module/src/test/java/org/apache/tika/parser/iwork/IWorkParserTest.java
similarity index 99%
rename from tika-parsers/src/test/java/org/apache/tika/parser/iwork/IWorkParserTest.java
rename to tika-parser-modules/tika-parser-apple-module/src/test/java/org/apache/tika/parser/iwork/IWorkParserTest.java
index cefc5ef..95ef375 100644
--- a/tika-parsers/src/test/java/org/apache/tika/parser/iwork/IWorkParserTest.java
+++ b/tika-parser-modules/tika-parser-apple-module/src/test/java/org/apache/tika/parser/iwork/IWorkParserTest.java
@@ -179,6 +179,7 @@ public class IWorkParserTest extends TikaTest {
     // TIKA-904
     @Test
     public void testPagesLayoutMode() throws Exception {
+        debug(getRecursiveMetadata("testPagesLayout.pages"));
         String content = getText("testPagesLayout.pages");
         assertContains("text box 1 - here is some text", content);
         assertContains("created in a text box in layout mode", content);
diff --git a/tika-parsers/src/test/java/org/apache/tika/parser/iwork/iwana/IWork13ParserTest.java b/tika-parser-modules/tika-parser-apple-module/src/test/java/org/apache/tika/parser/iwork/iwana/IWork13ParserTest.java
similarity index 100%
rename from tika-parsers/src/test/java/org/apache/tika/parser/iwork/iwana/IWork13ParserTest.java
rename to tika-parser-modules/tika-parser-apple-module/src/test/java/org/apache/tika/parser/iwork/iwana/IWork13ParserTest.java
diff --git a/tika-parsers/src/test/resources/test-documents/tableHeaders.numbers b/tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/tableHeaders.numbers
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/tableHeaders.numbers
rename to tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/tableHeaders.numbers
diff --git a/tika-parsers/src/test/resources/test-documents/tableNames.numbers b/tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/tableNames.numbers
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/tableNames.numbers
rename to tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/tableNames.numbers
diff --git a/tika-parsers/src/test/resources/test-documents/testAppleSingleFile.pdf b/tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testAppleSingleFile.pdf
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testAppleSingleFile.pdf
rename to tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testAppleSingleFile.pdf
diff --git a/tika-parsers/src/test/resources/test-documents/testBPList.bplist b/tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testBPList.bplist
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testBPList.bplist
rename to tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testBPList.bplist
diff --git a/tika-parsers/src/test/resources/test-documents/testBulletPoints.key b/tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testBulletPoints.key
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testBulletPoints.key
rename to tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testBulletPoints.key
diff --git a/tika-parsers/src/test/resources/test-documents/testKeynote.key b/tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testKeynote.key
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testKeynote.key
rename to tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testKeynote.key
diff --git a/tika-parsers/src/test/resources/test-documents/testKeynote2013.key b/tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testKeynote2013.key
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testKeynote2013.key
rename to tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testKeynote2013.key
diff --git a/tika-parsers/src/test/resources/test-documents/testKeynote2018.key b/tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testKeynote2018.key
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testKeynote2018.key
rename to tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testKeynote2018.key
diff --git a/tika-parsers/src/test/resources/test-documents/testMasterSlideTable.key b/tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testMasterSlideTable.key
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testMasterSlideTable.key
rename to tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testMasterSlideTable.key
diff --git a/tika-parsers/src/test/resources/test-documents/testNumbers.numbers b/tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testNumbers.numbers
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testNumbers.numbers
rename to tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testNumbers.numbers
diff --git a/tika-parsers/src/test/resources/test-documents/testNumbers2013.numbers b/tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testNumbers2013.numbers
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testNumbers2013.numbers
rename to tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testNumbers2013.numbers
diff --git a/tika-parsers/src/test/resources/test-documents/testNumbersCharts.numbers b/tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testNumbersCharts.numbers
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testNumbersCharts.numbers
rename to tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testNumbersCharts.numbers
diff --git a/tika-parsers/src/test/resources/test-documents/testPages.pages b/tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testPages.pages
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testPages.pages
rename to tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testPages.pages
diff --git a/tika-parsers/src/test/resources/test-documents/testPages2013.pages b/tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testPages2013.pages
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testPages2013.pages
rename to tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testPages2013.pages
diff --git a/tika-parsers/src/test/resources/test-documents/testPagesComments.pages b/tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testPagesComments.pages
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testPagesComments.pages
rename to tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testPagesComments.pages
diff --git a/tika-parsers/src/test/resources/test-documents/testPagesHeadersFootersAlphaLower.pages b/tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testPagesHeadersFootersAlphaLower.pages
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testPagesHeadersFootersAlphaLower.pages
rename to tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testPagesHeadersFootersAlphaLower.pages
diff --git a/tika-parsers/src/test/resources/test-documents/testPagesHeadersFootersAlphaUpper.pages b/tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testPagesHeadersFootersAlphaUpper.pages
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testPagesHeadersFootersAlphaUpper.pages
rename to tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testPagesHeadersFootersAlphaUpper.pages
diff --git a/tika-parsers/src/test/resources/test-documents/testPagesHeadersFootersFootnotes.pages b/tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testPagesHeadersFootersFootnotes.pages
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testPagesHeadersFootersFootnotes.pages
rename to tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testPagesHeadersFootersFootnotes.pages
diff --git a/tika-parsers/src/test/resources/test-documents/testPagesHeadersFootersRomanLower.pages b/tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testPagesHeadersFootersRomanLower.pages
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testPagesHeadersFootersRomanLower.pages
rename to tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testPagesHeadersFootersRomanLower.pages
diff --git a/tika-parsers/src/test/resources/test-documents/testPagesHeadersFootersRomanUpper.pages b/tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testPagesHeadersFootersRomanUpper.pages
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testPagesHeadersFootersRomanUpper.pages
rename to tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testPagesHeadersFootersRomanUpper.pages
diff --git a/tika-parsers/src/test/resources/test-documents/testPagesLayout.pages b/tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testPagesLayout.pages
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testPagesLayout.pages
rename to tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testPagesLayout.pages
diff --git a/tika-parsers/src/test/resources/test-documents/testPagesPwdProtected.pages b/tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testPagesPwdProtected.pages
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testPagesPwdProtected.pages
rename to tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testPagesPwdProtected.pages
diff --git a/tika-parsers/src/test/resources/test-documents/testTables.key b/tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testTables.key
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testTables.key
rename to tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testTables.key
diff --git a/tika-parsers/src/test/resources/test-documents/testTextBoxes.key b/tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testTextBoxes.key
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testTextBoxes.key
rename to tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testTextBoxes.key
diff --git a/tika-parsers/src/test/resources/test-documents/testWEBARCHIVE.webarchive b/tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testWEBARCHIVE.webarchive
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testWEBARCHIVE.webarchive
rename to tika-parser-modules/tika-parser-apple-module/src/test/resources/test-documents/testWEBARCHIVE.webarchive
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/video/FLVParser.java b/tika-parser-modules/tika-parser-audiovideo-module/src/main/java/org/apache/tika/parser/video/FLVParser.java
similarity index 100%
rename from tika-parsers/src/main/java/org/apache/tika/parser/video/FLVParser.java
rename to tika-parser-modules/tika-parser-audiovideo-module/src/main/java/org/apache/tika/parser/video/FLVParser.java
diff --git a/tika-parser-modules/tika-parser-audiovideo-module/src/main/resources/META-INF/services/org.apache.tika.parser.Parser b/tika-parser-modules/tika-parser-audiovideo-module/src/main/resources/META-INF/services/org.apache.tika.parser.Parser
index 535a88a..53bc7ab 100644
--- a/tika-parser-modules/tika-parser-audiovideo-module/src/main/resources/META-INF/services/org.apache.tika.parser.Parser
+++ b/tika-parser-modules/tika-parser-audiovideo-module/src/main/resources/META-INF/services/org.apache.tika.parser.Parser
@@ -17,5 +17,6 @@ org.apache.tika.parser.audio.AudioParser
 org.apache.tika.parser.audio.MidiParser
 org.apache.tika.parser.mp3.Mp3Parser
 org.apache.tika.parser.mp4.MP4Parser
+org.apache.tika.parser.video.FLVParser
 
 
diff --git a/tika-parsers/src/test/java/org/apache/tika/parser/video/FLVParserTest.java b/tika-parser-modules/tika-parser-audiovideo-module/src/test/java/org/apache/tika/parser/video/FLVParserTest.java
similarity index 100%
rename from tika-parsers/src/test/java/org/apache/tika/parser/video/FLVParserTest.java
rename to tika-parser-modules/tika-parser-audiovideo-module/src/test/java/org/apache/tika/parser/video/FLVParserTest.java
diff --git a/tika-parsers/src/test/resources/test-documents/testFLV.flv b/tika-parser-modules/tika-parser-audiovideo-module/src/test/resources/test-documents/testFLV.flv
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testFLV.flv
rename to tika-parser-modules/tika-parser-audiovideo-module/src/test/resources/test-documents/testFLV.flv
diff --git a/tika-parser-modules/tika-parser-cad-module/pom.xml b/tika-parser-modules/tika-parser-cad-module/pom.xml
new file mode 100644
index 0000000..3a96b6d
--- /dev/null
+++ b/tika-parser-modules/tika-parser-cad-module/pom.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>tika-parser-modules</artifactId>
+        <groupId>org.apache.tika</groupId>
+        <version>2.0.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>tika-parser-cad-module</artifactId>
+
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi</artifactId>
+            <version>${poi.version}</version>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/dwg/DWGParser.java b/tika-parser-modules/tika-parser-cad-module/src/main/java/org/apache/tika/parser/dwg/DWGParser.java
similarity index 100%
rename from tika-parsers/src/main/java/org/apache/tika/parser/dwg/DWGParser.java
rename to tika-parser-modules/tika-parser-cad-module/src/main/java/org/apache/tika/parser/dwg/DWGParser.java
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/prt/PRTParser.java b/tika-parser-modules/tika-parser-cad-module/src/main/java/org/apache/tika/parser/prt/PRTParser.java
similarity index 100%
rename from tika-parsers/src/main/java/org/apache/tika/parser/prt/PRTParser.java
rename to tika-parser-modules/tika-parser-cad-module/src/main/java/org/apache/tika/parser/prt/PRTParser.java
diff --git a/tika-parsers/src/main/resources/org/apache/tika/parser/ner/nltk/NLTKServer.properties b/tika-parser-modules/tika-parser-cad-module/src/main/resources/META-INF/services/org.apache.tika.parser.Parser
similarity index 91%
copy from tika-parsers/src/main/resources/org/apache/tika/parser/ner/nltk/NLTKServer.properties
copy to tika-parser-modules/tika-parser-cad-module/src/main/resources/META-INF/services/org.apache.tika.parser.Parser
index 5909b69..1af4369 100644
--- a/tika-parsers/src/main/resources/org/apache/tika/parser/ner/nltk/NLTKServer.properties
+++ b/tika-parser-modules/tika-parser-cad-module/src/main/resources/META-INF/services/org.apache.tika.parser.Parser
@@ -13,4 +13,6 @@
 #  See the License for the specific language governing permissions and
 #  limitations under the License.
 
-nltk.server.url=http://localhost:8881
+org.apache.tika.parser.dwg.DWGParser
+org.apache.tika.parser.prt.PRTParser
+
diff --git a/tika-parsers/src/test/java/org/apache/tika/parser/dwg/DWGParserTest.java b/tika-parser-modules/tika-parser-cad-module/src/test/java/org/apache/tika/parser/dwg/DWGParserTest.java
similarity index 100%
rename from tika-parsers/src/test/java/org/apache/tika/parser/dwg/DWGParserTest.java
rename to tika-parser-modules/tika-parser-cad-module/src/test/java/org/apache/tika/parser/dwg/DWGParserTest.java
diff --git a/tika-parsers/src/test/java/org/apache/tika/parser/prt/PRTParserTest.java b/tika-parser-modules/tika-parser-cad-module/src/test/java/org/apache/tika/parser/prt/PRTParserTest.java
similarity index 100%
rename from tika-parsers/src/test/java/org/apache/tika/parser/prt/PRTParserTest.java
rename to tika-parser-modules/tika-parser-cad-module/src/test/java/org/apache/tika/parser/prt/PRTParserTest.java
diff --git a/tika-parsers/src/test/resources/test-documents/testCADKEY.prt b/tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testCADKEY.prt
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testCADKEY.prt
rename to tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testCADKEY.prt
diff --git a/tika-parsers/src/test/resources/test-documents/testCADKEY2.prt b/tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testCADKEY2.prt
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testCADKEY2.prt
rename to tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testCADKEY2.prt
diff --git a/tika-parsers/src/test/resources/test-documents/testDWG2000.dwg b/tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWG2000.dwg
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testDWG2000.dwg
rename to tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWG2000.dwg
diff --git a/tika-parsers/src/test/resources/test-documents/testDWG2004.dwg b/tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWG2004.dwg
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testDWG2004.dwg
rename to tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWG2004.dwg
diff --git a/tika-parsers/src/test/resources/test-documents/testDWG2004_no_header.dwg b/tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWG2004_no_header.dwg
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testDWG2004_no_header.dwg
rename to tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWG2004_no_header.dwg
diff --git a/tika-parsers/src/test/resources/test-documents/testDWG2007.dwg b/tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWG2007.dwg
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testDWG2007.dwg
rename to tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWG2007.dwg
diff --git a/tika-parsers/src/test/resources/test-documents/testDWG2010.dwg b/tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWG2010.dwg
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testDWG2010.dwg
rename to tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWG2010.dwg
diff --git a/tika-parsers/src/test/resources/test-documents/testDWG2010_custom_props.dwg b/tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWG2010_custom_props.dwg
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testDWG2010_custom_props.dwg
rename to tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWG2010_custom_props.dwg
diff --git a/tika-parsers/src/test/resources/test-documents/testDWGmech2004.dwg b/tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWGmech2004.dwg
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testDWGmech2004.dwg
rename to tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWGmech2004.dwg
diff --git a/tika-parsers/src/test/resources/test-documents/testDWGmech2004DX.dwg b/tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWGmech2004DX.dwg
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testDWGmech2004DX.dwg
rename to tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWGmech2004DX.dwg
diff --git a/tika-parsers/src/test/resources/test-documents/testDWGmech2005.dwg b/tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWGmech2005.dwg
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testDWGmech2005.dwg
rename to tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWGmech2005.dwg
diff --git a/tika-parsers/src/test/resources/test-documents/testDWGmech2006.dwg b/tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWGmech2006.dwg
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testDWGmech2006.dwg
rename to tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWGmech2006.dwg
diff --git a/tika-parsers/src/test/resources/test-documents/testDWGmech2007.dwg b/tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWGmech2007.dwg
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testDWGmech2007.dwg
rename to tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWGmech2007.dwg
diff --git a/tika-parsers/src/test/resources/test-documents/testDWGmech2008.dwg b/tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWGmech2008.dwg
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testDWGmech2008.dwg
rename to tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWGmech2008.dwg
diff --git a/tika-parsers/src/test/resources/test-documents/testDWGmech2009.dwg b/tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWGmech2009.dwg
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testDWGmech2009.dwg
rename to tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWGmech2009.dwg
diff --git a/tika-parsers/src/test/resources/test-documents/testDWGmech2010.dwg b/tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWGmech2010.dwg
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testDWGmech2010.dwg
rename to tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWGmech2010.dwg
diff --git a/tika-parsers/src/test/resources/test-documents/testDWGmech2011.dwg b/tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWGmech2011.dwg
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testDWGmech2011.dwg
rename to tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWGmech2011.dwg
diff --git a/tika-parsers/src/test/resources/test-documents/testDWGmech6.dwg b/tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWGmech6.dwg
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testDWGmech6.dwg
rename to tika-parser-modules/tika-parser-cad-module/src/test/resources/test-documents/testDWGmech6.dwg
diff --git a/tika-parser-modules/tika-parser-html-module/pom.xml b/tika-parser-modules/tika-parser-code-module/pom.xml
similarity index 69%
copy from tika-parser-modules/tika-parser-html-module/pom.xml
copy to tika-parser-modules/tika-parser-code-module/pom.xml
index 73d06b6..a2de5f1 100644
--- a/tika-parser-modules/tika-parser-html-module/pom.xml
+++ b/tika-parser-modules/tika-parser-code-module/pom.xml
@@ -9,39 +9,47 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>tika-parser-html-module</artifactId>
+    <artifactId>tika-parser-code-module</artifactId>
 
     <dependencies>
         <dependency>
-            <groupId>org.ccil.cowan.tagsoup</groupId>
-            <artifactId>tagsoup</artifactId>
-            <version>1.2.1</version>
-        </dependency>
-        <dependency>
-            <groupId>de.l3s.boilerpipe</groupId>
-            <artifactId>boilerpipe</artifactId>
-            <version>1.1.0</version>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>tika-parser-text-module</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
-            <groupId>commons-codec</groupId>
-            <artifactId>commons-codec</artifactId>
-            <version>${codec.version}</version>
+            <groupId>org.codelibs</groupId>
+            <artifactId>jhighlight</artifactId>
+            <version>1.0.3</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>commons-io</groupId>
+                    <artifactId>commons-io</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <dependency>
             <groupId>commons-io</groupId>
             <artifactId>commons-io</artifactId>
             <version>${commons.io.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.ccil.cowan.tagsoup</groupId>
+            <artifactId>tagsoup</artifactId>
+            <version>${tagsoup.version}</version>
+        </dependency>
 
-        <!-- test scope -->
-        <!-- this is required for basic encoding detection -->
+        <!-- WARNING: when you upgrade asm make sure that you update the
+            OpCode in the initializer in org.apache.tika.parser.asm.XHTMLClassVisitor
+            See TIKA-2992.
+        -->
         <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>tika-parser-text-module</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
+            <groupId>org.ow2.asm</groupId>
+            <artifactId>asm</artifactId>
+            <version>8.0.1</version>
         </dependency>
     </dependencies>
+
     <build>
         <plugins>
             <plugin>
@@ -50,7 +58,7 @@
                 <configuration>
                     <archive>
                         <manifestEntries>
-                            <Automatic-Module-Name>org.apache.tika.parser.html</Automatic-Module-Name>
+                            <Automatic-Module-Name>org.apache.tika.parser.code</Automatic-Module-Name>
                         </manifestEntries>
                     </archive>
                 </configuration>
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/asm/ClassParser.java b/tika-parser-modules/tika-parser-code-module/src/main/java/org/apache/tika/parser/asm/ClassParser.java
similarity index 100%
rename from tika-parsers/src/main/java/org/apache/tika/parser/asm/ClassParser.java
rename to tika-parser-modules/tika-parser-code-module/src/main/java/org/apache/tika/parser/asm/ClassParser.java
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/asm/XHTMLClassVisitor.java b/tika-parser-modules/tika-parser-code-module/src/main/java/org/apache/tika/parser/asm/XHTMLClassVisitor.java
similarity index 100%
rename from tika-parsers/src/main/java/org/apache/tika/parser/asm/XHTMLClassVisitor.java
rename to tika-parser-modules/tika-parser-code-module/src/main/java/org/apache/tika/parser/asm/XHTMLClassVisitor.java
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/code/SourceCodeParser.java b/tika-parser-modules/tika-parser-code-module/src/main/java/org/apache/tika/parser/code/SourceCodeParser.java
similarity index 100%
rename from tika-parsers/src/main/java/org/apache/tika/parser/code/SourceCodeParser.java
rename to tika-parser-modules/tika-parser-code-module/src/main/java/org/apache/tika/parser/code/SourceCodeParser.java
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/executable/ExecutableParser.java b/tika-parser-modules/tika-parser-code-module/src/main/java/org/apache/tika/parser/executable/ExecutableParser.java
similarity index 96%
rename from tika-parsers/src/main/java/org/apache/tika/parser/executable/ExecutableParser.java
rename to tika-parser-modules/tika-parser-code-module/src/main/java/org/apache/tika/parser/executable/ExecutableParser.java
index f7f2552..9553262 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/executable/ExecutableParser.java
+++ b/tika-parser-modules/tika-parser-code-module/src/main/java/org/apache/tika/parser/executable/ExecutableParser.java
@@ -24,10 +24,10 @@ import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
 
-import org.apache.poi.util.IOUtils;
-import org.apache.poi.util.LittleEndian;
 import org.apache.tika.exception.TikaException;
 import org.apache.tika.io.EndianUtils;
+import org.apache.tika.io.IOUtils;
+import org.apache.tika.metadata.MachineMetadata;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.metadata.TikaCoreProperties;
 import org.apache.tika.mime.MediaType;
@@ -96,7 +96,7 @@ public class ExecutableParser extends AbstractParser implements MachineMetadata
        IOUtils.readFully(stream, msdosSection);
        
        // Grab the PE header offset
-       int peOffset = LittleEndian.readInt(stream);
+       int peOffset = EndianUtils.readIntLE(stream);
        
        // Sanity check - while it may go anywhere, it's normally in the first few kb
        if (peOffset > 4096 || peOffset < 0x3f) return;
@@ -118,13 +118,13 @@ public class ExecutableParser extends AbstractParser implements MachineMetadata
        }
        
        // Read the header values
-       int machine    = LittleEndian.getUShort(pe, 4);
-       int numSectors = LittleEndian.getUShort(pe, 6);
-       long createdAt = LittleEndian.getInt(pe, 8);
-       long symbolTableOffset = LittleEndian.getInt(pe, 12);
-       long numSymbols = LittleEndian.getInt(pe, 16);
-       int sizeOptHdrs = LittleEndian.getUShort(pe, 20);
-       int characteristcs = LittleEndian.getUShort(pe, 22);
+       int machine    = EndianUtils.getUShortLE(pe, 4);
+       int numSectors = EndianUtils.getUShortLE(pe, 6);
+       long createdAt = EndianUtils.getIntLE(pe, 8);
+       long symbolTableOffset = EndianUtils.getIntLE(pe, 12);
+       long numSymbols = EndianUtils.getIntLE(pe, 16);
+       int sizeOptHdrs = EndianUtils.getUShortLE(pe, 20);
+       int characteristcs = EndianUtils.getUShortLE(pe, 22);
        
        // Turn this into helpful metadata
        Date createdAtD = new Date(createdAt*1000l);
diff --git a/tika-parsers/src/main/resources/org/apache/tika/parser/ner/nltk/NLTKServer.properties b/tika-parser-modules/tika-parser-code-module/src/main/resources/META-INF/services/org.apache.tika.parser.Parser
similarity index 85%
copy from tika-parsers/src/main/resources/org/apache/tika/parser/ner/nltk/NLTKServer.properties
copy to tika-parser-modules/tika-parser-code-module/src/main/resources/META-INF/services/org.apache.tika.parser.Parser
index 5909b69..63604e1 100644
--- a/tika-parsers/src/main/resources/org/apache/tika/parser/ner/nltk/NLTKServer.properties
+++ b/tika-parser-modules/tika-parser-code-module/src/main/resources/META-INF/services/org.apache.tika.parser.Parser
@@ -13,4 +13,7 @@
 #  See the License for the specific language governing permissions and
 #  limitations under the License.
 
-nltk.server.url=http://localhost:8881
+org.apache.tika.parser.asm.ClassParser
+org.apache.tika.parser.code.SourceCodeParser
+org.apache.tika.parser.executable.ExecutableParser
+
diff --git a/tika-parsers/src/test/java/org/apache/tika/parser/asm/ClassParserTest.java b/tika-parser-modules/tika-parser-code-module/src/test/java/org/apache/tika/parser/asm/ClassParserTest.java
similarity index 100%
rename from tika-parsers/src/test/java/org/apache/tika/parser/asm/ClassParserTest.java
rename to tika-parser-modules/tika-parser-code-module/src/test/java/org/apache/tika/parser/asm/ClassParserTest.java
diff --git a/tika-parsers/src/test/java/org/apache/tika/parser/code/SourceCodeParserTest.java b/tika-parser-modules/tika-parser-code-module/src/test/java/org/apache/tika/parser/code/SourceCodeParserTest.java
similarity index 100%
rename from tika-parsers/src/test/java/org/apache/tika/parser/code/SourceCodeParserTest.java
rename to tika-parser-modules/tika-parser-code-module/src/test/java/org/apache/tika/parser/code/SourceCodeParserTest.java
diff --git a/tika-parsers/src/test/resources/test-documents/AppleSingleFileParser.class b/tika-parser-modules/tika-parser-code-module/src/test/resources/test-documents/AppleSingleFileParser.class
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/AppleSingleFileParser.class
rename to tika-parser-modules/tika-parser-code-module/src/test/resources/test-documents/AppleSingleFileParser.class
diff --git a/tika-parsers/src/test/resources/test-documents/AutoDetectParser.class b/tika-parser-modules/tika-parser-code-module/src/test/resources/test-documents/AutoDetectParser.class
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/AutoDetectParser.class
rename to tika-parser-modules/tika-parser-code-module/src/test/resources/test-documents/AutoDetectParser.class
diff --git a/tika-parsers/src/test/resources/test-documents/testC.c b/tika-parser-modules/tika-parser-code-module/src/test/resources/test-documents/testC.c
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testC.c
rename to tika-parser-modules/tika-parser-code-module/src/test/resources/test-documents/testC.c
diff --git a/tika-parsers/src/test/resources/test-documents/testCPP.cpp b/tika-parser-modules/tika-parser-code-module/src/test/resources/test-documents/testCPP.cpp
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testCPP.cpp
rename to tika-parser-modules/tika-parser-code-module/src/test/resources/test-documents/testCPP.cpp
diff --git a/tika-parsers/src/test/resources/test-documents/testGROOVY.groovy b/tika-parser-modules/tika-parser-code-module/src/test/resources/test-documents/testGROOVY.groovy
similarity index 95%
rename from tika-parsers/src/test/resources/test-documents/testGROOVY.groovy
rename to tika-parser-modules/tika-parser-code-module/src/test/resources/test-documents/testGROOVY.groovy
index 91bd5b8..e022b2c 100644
--- a/tika-parsers/src/test/resources/test-documents/testGROOVY.groovy
+++ b/tika-parser-modules/tika-parser-code-module/src/test/resources/test-documents/testGROOVY.groovy
@@ -1,9 +1,9 @@
-//hello.groovy
-println "hello, world"
-for (arg in this.args ) {
-  println "Argument:" + arg;
-}
-// this is a comment
-/* a block comment, commenting out an alternative to above:
-this.args.each{ arg -> println "hello, ${arg}"}
+//hello.groovy
+println "hello, world"
+for (arg in this.args ) {
+  println "Argument:" + arg;
+}
+// this is a comment
+/* a block comment, commenting out an alternative to above:
+this.args.each{ arg -> println "hello, ${arg}"}
 */
\ No newline at end of file
diff --git a/tika-parsers/src/test/resources/test-documents/testJAVA.java b/tika-parser-modules/tika-parser-code-module/src/test/resources/test-documents/testJAVA.java
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testJAVA.java
rename to tika-parser-modules/tika-parser-code-module/src/test/resources/test-documents/testJAVA.java
diff --git a/tika-parsers/src/test/resources/test-documents/testJS.js b/tika-parser-modules/tika-parser-code-module/src/test/resources/test-documents/testJS.js
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testJS.js
rename to tika-parser-modules/tika-parser-code-module/src/test/resources/test-documents/testJS.js
diff --git a/tika-parsers/src/test/resources/test-documents/testJS_HTML.js b/tika-parser-modules/tika-parser-code-module/src/test/resources/test-documents/testJS_HTML.js
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testJS_HTML.js
rename to tika-parser-modules/tika-parser-code-module/src/test/resources/test-documents/testJS_HTML.js
diff --git a/tika-parser-modules/tika-parser-crypto-module/pom.xml b/tika-parser-modules/tika-parser-crypto-module/pom.xml
new file mode 100644
index 0000000..bd5fc7b
--- /dev/null
+++ b/tika-parser-modules/tika-parser-crypto-module/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>tika-parser-modules</artifactId>
+        <groupId>org.apache.tika</groupId>
+        <version>2.0.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>tika-parser-crypto-module</artifactId>
+
+
+</project>
\ No newline at end of file
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/crypto/Pkcs7Parser.java b/tika-parser-modules/tika-parser-crypto-module/src/main/java/org/apache/tika/parser/crypto/Pkcs7Parser.java
similarity index 100%
rename from tika-parsers/src/main/java/org/apache/tika/parser/crypto/Pkcs7Parser.java
rename to tika-parser-modules/tika-parser-crypto-module/src/main/java/org/apache/tika/parser/crypto/Pkcs7Parser.java
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/crypto/TSDParser.java b/tika-parser-modules/tika-parser-crypto-module/src/main/java/org/apache/tika/parser/crypto/TSDParser.java
similarity index 100%
rename from tika-parsers/src/main/java/org/apache/tika/parser/crypto/TSDParser.java
rename to tika-parser-modules/tika-parser-crypto-module/src/main/java/org/apache/tika/parser/crypto/TSDParser.java
diff --git a/tika-parser-modules/tika-parser-ocr-module/pom.xml b/tika-parser-modules/tika-parser-db-module/pom.xml
similarity index 54%
copy from tika-parser-modules/tika-parser-ocr-module/pom.xml
copy to tika-parser-modules/tika-parser-db-module/pom.xml
index ef4a2b0..3f5caa2 100644
--- a/tika-parser-modules/tika-parser-ocr-module/pom.xml
+++ b/tika-parser-modules/tika-parser-db-module/pom.xml
@@ -9,29 +9,19 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>tika-parser-ocr-module</artifactId>
+    <artifactId>tika-parser-db-module</artifactId>
+
 
     <dependencies>
         <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>tika-parser-image-module</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-lang3</artifactId>
-            <version>${commons.lang3.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-exec</artifactId>
-            <version>${commons.exec.version}</version>
-        </dependency>
-        <dependency>
             <groupId>commons-io</groupId>
             <artifactId>commons-io</artifactId>
             <version>${commons.io.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.xerial</groupId>
+            <artifactId>sqlite-jdbc</artifactId>
+            <version>3.31.1</version>
+        </dependency>
     </dependencies>
-
 </project>
\ No newline at end of file
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/jdbc/AbstractDBParser.java b/tika-parser-modules/tika-parser-db-module/src/main/java/org/apache/tika/parser/jdbc/AbstractDBParser.java
similarity index 98%
rename from tika-parsers/src/main/java/org/apache/tika/parser/jdbc/AbstractDBParser.java
rename to tika-parser-modules/tika-parser-db-module/src/main/java/org/apache/tika/parser/jdbc/AbstractDBParser.java
index e30b7bd..08ebcb8 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/jdbc/AbstractDBParser.java
+++ b/tika-parser-modules/tika-parser-db-module/src/main/java/org/apache/tika/parser/jdbc/AbstractDBParser.java
@@ -24,10 +24,10 @@ import java.sql.SQLException;
 import java.util.List;
 import java.util.Set;
 
-import org.apache.commons.io.IOExceptionWithCause;
 import org.apache.tika.exception.CorruptedFileException;
 import org.apache.tika.exception.TikaException;
 import org.apache.tika.extractor.EmbeddedDocumentUtil;
+import org.apache.tika.io.IOExceptionWithCause;
 import org.apache.tika.metadata.Database;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.mime.MediaType;
@@ -40,7 +40,7 @@ import org.xml.sax.SAXException;
 /**
  * Abstract class that handles iterating through tables within a database.
  */
-abstract class AbstractDBParser extends AbstractParser {
+public abstract class AbstractDBParser extends AbstractParser {
 
     private final static byte[] EMPTY_BYTE_ARR = new byte[0];
 
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/jdbc/JDBCTableReader.java b/tika-parser-modules/tika-parser-db-module/src/main/java/org/apache/tika/parser/jdbc/JDBCTableReader.java
similarity index 99%
rename from tika-parsers/src/main/java/org/apache/tika/parser/jdbc/JDBCTableReader.java
rename to tika-parser-modules/tika-parser-db-module/src/main/java/org/apache/tika/parser/jdbc/JDBCTableReader.java
index 171c7ea..535628c 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/jdbc/JDBCTableReader.java
+++ b/tika-parser-modules/tika-parser-db-module/src/main/java/org/apache/tika/parser/jdbc/JDBCTableReader.java
@@ -33,11 +33,11 @@ import java.util.LinkedList;
 import java.util.List;
 
 import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.io.IOExceptionWithCause;
-import org.apache.commons.io.IOUtils;
 import org.apache.tika.config.TikaConfig;
 import org.apache.tika.detect.Detector;
 import org.apache.tika.extractor.EmbeddedDocumentUtil;
+import org.apache.tika.io.IOExceptionWithCause;
+import org.apache.tika.io.IOUtils;
 import org.apache.tika.io.TikaInputStream;
 import org.apache.tika.metadata.Database;
 import org.apache.tika.metadata.Metadata;
@@ -53,7 +53,7 @@ import org.xml.sax.helpers.AttributesImpl;
 /**
  * General base class to iterate through rows of a JDBC table
  */
-class JDBCTableReader {
+public class JDBCTableReader {
 
     private final static Attributes EMPTY_ATTRIBUTES = new AttributesImpl();
     private final Connection connection;
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/jdbc/SQLite3DBParser.java b/tika-parser-modules/tika-parser-db-module/src/main/java/org/apache/tika/parser/sqlite/SQLite3DBParser.java
similarity index 97%
rename from tika-parsers/src/main/java/org/apache/tika/parser/jdbc/SQLite3DBParser.java
rename to tika-parser-modules/tika-parser-db-module/src/main/java/org/apache/tika/parser/sqlite/SQLite3DBParser.java
index b2da617..bb33ad4 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/jdbc/SQLite3DBParser.java
+++ b/tika-parser-modules/tika-parser-db-module/src/main/java/org/apache/tika/parser/sqlite/SQLite3DBParser.java
@@ -1,4 +1,4 @@
-package org.apache.tika.parser.jdbc;
+package org.apache.tika.parser.sqlite;
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -35,6 +35,8 @@ import org.apache.tika.io.TikaInputStream;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.mime.MediaType;
 import org.apache.tika.parser.ParseContext;
+import org.apache.tika.parser.jdbc.AbstractDBParser;
+import org.apache.tika.parser.jdbc.JDBCTableReader;
 import org.sqlite.SQLiteConfig;
 
 /**
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/jdbc/SQLite3Parser.java b/tika-parser-modules/tika-parser-db-module/src/main/java/org/apache/tika/parser/sqlite/SQLite3Parser.java
similarity index 97%
rename from tika-parsers/src/main/java/org/apache/tika/parser/jdbc/SQLite3Parser.java
rename to tika-parser-modules/tika-parser-db-module/src/main/java/org/apache/tika/parser/sqlite/SQLite3Parser.java
index 56c0a93..878f1ee 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/jdbc/SQLite3Parser.java
+++ b/tika-parser-modules/tika-parser-db-module/src/main/java/org/apache/tika/parser/sqlite/SQLite3Parser.java
@@ -1,4 +1,4 @@
-package org.apache.tika.parser.jdbc;
+package org.apache.tika.parser.sqlite;
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -36,7 +36,7 @@ import org.xml.sax.SAXException;
 
 /**
  * This is the main class for parsing SQLite3 files.  When {@link #parse} is called,
- * this creates a new {@link org.apache.tika.parser.jdbc.SQLite3DBParser}.
+ * this creates a new {@link SQLite3DBParser}.
  * <p/>
  * Given potential conflicts of native libraries in web servers, users will
  * need to add org.xerial's sqlite-jdbc jar to the class path for this parser
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/jdbc/SQLite3TableReader.java b/tika-parser-modules/tika-parser-db-module/src/main/java/org/apache/tika/parser/sqlite/SQLite3TableReader.java
similarity index 96%
rename from tika-parsers/src/main/java/org/apache/tika/parser/jdbc/SQLite3TableReader.java
rename to tika-parser-modules/tika-parser-db-module/src/main/java/org/apache/tika/parser/sqlite/SQLite3TableReader.java
index fd5f9d4..659b9e0 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/jdbc/SQLite3TableReader.java
+++ b/tika-parser-modules/tika-parser-db-module/src/main/java/org/apache/tika/parser/sqlite/SQLite3TableReader.java
@@ -1,4 +1,4 @@
-package org.apache.tika.parser.jdbc;
+package org.apache.tika.parser.sqlite;
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -26,6 +26,7 @@ import java.sql.SQLException;
 import org.apache.tika.extractor.EmbeddedDocumentUtil;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.parser.ParseContext;
+import org.apache.tika.parser.jdbc.JDBCTableReader;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.SAXException;
 
diff --git a/tika-parser-modules/tika-parser-digest-commons/pom.xml b/tika-parser-modules/tika-parser-digest-commons/pom.xml
new file mode 100644
index 0000000..12f5292
--- /dev/null
+++ b/tika-parser-modules/tika-parser-digest-commons/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>tika-parser-modules</artifactId>
+        <groupId>org.apache.tika</groupId>
+        <version>2.0.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>tika-parser-digest-commons</artifactId>
+
+
+</project>
\ No newline at end of file
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/utils/BouncyCastleDigester.java b/tika-parser-modules/tika-parser-digest-commons/src/main/java/org/apache/tika/parser/digestutils/BouncyCastleDigester.java
similarity index 98%
rename from tika-parsers/src/main/java/org/apache/tika/parser/utils/BouncyCastleDigester.java
rename to tika-parser-modules/tika-parser-digest-commons/src/main/java/org/apache/tika/parser/digestutils/BouncyCastleDigester.java
index 2b6529c..270774f 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/utils/BouncyCastleDigester.java
+++ b/tika-parser-modules/tika-parser-digest-commons/src/main/java/org/apache/tika/parser/digestutils/BouncyCastleDigester.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.tika.parser.utils;
+package org.apache.tika.parser.digestutils;
 
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/utils/CommonsDigester.java b/tika-parser-modules/tika-parser-digest-commons/src/main/java/org/apache/tika/parser/digestutils/CommonsDigester.java
similarity index 99%
rename from tika-parsers/src/main/java/org/apache/tika/parser/utils/CommonsDigester.java
rename to tika-parser-modules/tika-parser-digest-commons/src/main/java/org/apache/tika/parser/digestutils/CommonsDigester.java
index 58ee184..dd631e4 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/utils/CommonsDigester.java
+++ b/tika-parser-modules/tika-parser-digest-commons/src/main/java/org/apache/tika/parser/digestutils/CommonsDigester.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.tika.parser.utils;
+package org.apache.tika.parser.digestutils;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/tika-parser-modules/tika-parser-html-module/pom.xml b/tika-parser-modules/tika-parser-html-module/pom.xml
index 73d06b6..2227c45 100644
--- a/tika-parser-modules/tika-parser-html-module/pom.xml
+++ b/tika-parser-modules/tika-parser-html-module/pom.xml
@@ -15,7 +15,7 @@
         <dependency>
             <groupId>org.ccil.cowan.tagsoup</groupId>
             <artifactId>tagsoup</artifactId>
-            <version>1.2.1</version>
+            <version>${tagsoup.version}</version>
         </dependency>
         <dependency>
             <groupId>de.l3s.boilerpipe</groupId>
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/mail/MailUtil.java b/tika-parser-modules/tika-parser-mail-commons/src/main/java/org/apache/tika/parser/mailcommons/MailUtil.java
similarity index 98%
rename from tika-parsers/src/main/java/org/apache/tika/parser/mail/MailUtil.java
rename to tika-parser-modules/tika-parser-mail-commons/src/main/java/org/apache/tika/parser/mailcommons/MailUtil.java
index 1fac159..6286c9d 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/mail/MailUtil.java
+++ b/tika-parser-modules/tika-parser-mail-commons/src/main/java/org/apache/tika/parser/mailcommons/MailUtil.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.tika.parser.mail;
+package org.apache.tika.parser.mailcommons;
 
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
diff --git a/tika-parsers/src/test/java/org/apache/tika/parser/mail/MailUtilTest.java b/tika-parser-modules/tika-parser-mail-commons/src/test/java/org/apache/tika/parser/mailcommons/MailUtilTest.java
similarity index 95%
rename from tika-parsers/src/test/java/org/apache/tika/parser/mail/MailUtilTest.java
rename to tika-parser-modules/tika-parser-mail-commons/src/test/java/org/apache/tika/parser/mailcommons/MailUtilTest.java
index 3143ce6..10d37a8 100644
--- a/tika-parsers/src/test/java/org/apache/tika/parser/mail/MailUtilTest.java
+++ b/tika-parser-modules/tika-parser-mail-commons/src/test/java/org/apache/tika/parser/mailcommons/MailUtilTest.java
@@ -15,13 +15,14 @@
  * limitations under the License.
  */
 
-package org.apache.tika.parser.mail;
+package org.apache.tika.parser.mailcommons;
 
 
 import static org.junit.Assert.assertEquals;
 
 import org.apache.tika.metadata.Message;
 import org.apache.tika.metadata.Metadata;
+import org.apache.tika.parser.mailcommons.MailUtil;
 import org.junit.Test;
 
 public class MailUtilTest {
diff --git a/tika-parser-modules/tika-parser-html-module/pom.xml b/tika-parser-modules/tika-parser-mail-module/pom.xml
similarity index 61%
copy from tika-parser-modules/tika-parser-html-module/pom.xml
copy to tika-parser-modules/tika-parser-mail-module/pom.xml
index 73d06b6..5843745 100644
--- a/tika-parser-modules/tika-parser-html-module/pom.xml
+++ b/tika-parser-modules/tika-parser-mail-module/pom.xml
@@ -9,37 +9,42 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>tika-parser-html-module</artifactId>
+    <artifactId>tika-parser-mail-module</artifactId>
 
     <dependencies>
         <dependency>
-            <groupId>org.ccil.cowan.tagsoup</groupId>
-            <artifactId>tagsoup</artifactId>
-            <version>1.2.1</version>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>tika-parser-mail-commons</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
-            <groupId>de.l3s.boilerpipe</groupId>
-            <artifactId>boilerpipe</artifactId>
-            <version>1.1.0</version>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>tika-parser-text-module</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
-            <groupId>commons-codec</groupId>
-            <artifactId>commons-codec</artifactId>
-            <version>${codec.version}</version>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>tika-parser-html-module</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-            <version>${commons.io.version}</version>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-core</artifactId>
+            <version>${mockito.version}</version>
+            <scope>test</scope>
         </dependency>
-
-        <!-- test scope -->
-        <!-- this is required for basic encoding detection -->
         <dependency>
             <groupId>${project.groupId}</groupId>
-            <artifactId>tika-parser-text-module</artifactId>
+            <artifactId>tika-parser-ocr-module</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>tika-parser-ocr-module</artifactId>
             <version>${project.version}</version>
             <scope>test</scope>
+            <type>test-jar</type>
         </dependency>
     </dependencies>
     <build>
@@ -50,7 +55,7 @@
                 <configuration>
                     <archive>
                         <manifestEntries>
-                            <Automatic-Module-Name>org.apache.tika.parser.html</Automatic-Module-Name>
+                            <Automatic-Module-Name>org.apache.tika.parser.mail</Automatic-Module-Name>
                         </manifestEntries>
                     </archive>
                 </configuration>
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/mail/MailContentHandler.java b/tika-parser-modules/tika-parser-mail-module/src/main/java/org/apache/tika/parser/mail/MailContentHandler.java
similarity index 98%
rename from tika-parsers/src/main/java/org/apache/tika/parser/mail/MailContentHandler.java
rename to tika-parser-modules/tika-parser-mail-module/src/main/java/org/apache/tika/parser/mail/MailContentHandler.java
index 277bdbc..1aa2753 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/mail/MailContentHandler.java
+++ b/tika-parser-modules/tika-parser-mail-module/src/main/java/org/apache/tika/parser/mail/MailContentHandler.java
@@ -45,9 +45,9 @@ import org.apache.tika.metadata.TikaCoreProperties;
 import org.apache.tika.mime.MediaType;
 import org.apache.tika.parser.ParseContext;
 import org.apache.tika.parser.Parser;
-import org.apache.tika.parser.csv.csv.TextAndCSVParser;
+import org.apache.tika.parser.csv.TextAndCSVParser;
 import org.apache.tika.parser.html.HtmlParser;
-import org.apache.tika.parser.rtf.RTFParser;
+import org.apache.tika.parser.mailcommons.MailUtil;
 import org.apache.tika.parser.txt.TXTParser;
 import org.apache.tika.sax.BodyContentHandler;
 import org.apache.tika.sax.EmbeddedContentHandler;
@@ -581,9 +581,6 @@ class MailContentHandler implements ContentHandler {
         if (MediaType.TEXT_HTML.toString().equalsIgnoreCase(contentType)) {
             parser =
                     EmbeddedDocumentUtil.tryToFindExistingLeafParser(HtmlParser.class, parseContext);
-        } else if ("application/rtf".equalsIgnoreCase(contentType)) {
-            parser =
-                    EmbeddedDocumentUtil.tryToFindExistingLeafParser(RTFParser.class, parseContext);
         } else if (MediaType.TEXT_PLAIN.toString().equalsIgnoreCase(contentType)) {
             parser =
                     EmbeddedDocumentUtil.tryToFindExistingLeafParser(TXTParser.class, parseContext);
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/mail/RFC822Parser.java b/tika-parser-modules/tika-parser-mail-module/src/main/java/org/apache/tika/parser/mail/RFC822Parser.java
similarity index 100%
rename from tika-parsers/src/main/java/org/apache/tika/parser/mail/RFC822Parser.java
rename to tika-parser-modules/tika-parser-mail-module/src/main/java/org/apache/tika/parser/mail/RFC822Parser.java
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/mbox/MboxParser.java b/tika-parser-modules/tika-parser-mail-module/src/main/java/org/apache/tika/parser/mbox/MboxParser.java
similarity index 98%
rename from tika-parsers/src/main/java/org/apache/tika/parser/mbox/MboxParser.java
rename to tika-parser-modules/tika-parser-mail-module/src/main/java/org/apache/tika/parser/mbox/MboxParser.java
index 8d3376f..bc87521 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/mbox/MboxParser.java
+++ b/tika-parser-modules/tika-parser-mail-module/src/main/java/org/apache/tika/parser/mbox/MboxParser.java
@@ -23,7 +23,6 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
@@ -44,11 +43,13 @@ import org.apache.tika.metadata.TikaCoreProperties;
 import org.apache.tika.mime.MediaType;
 import org.apache.tika.parser.AbstractParser;
 import org.apache.tika.parser.ParseContext;
-import org.apache.tika.parser.mail.MailUtil;
+import org.apache.tika.parser.mailcommons.MailUtil;
 import org.apache.tika.sax.XHTMLContentHandler;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.SAXException;
 
+import static org.apache.tika.parser.mailcommons.MailDateParser.parseDate;
+
 /**
  * Mbox (mailbox) parser. This version extracts each mail from Mbox and uses the
  * DelegatingParser to process each mail.
diff --git a/tika-parsers/src/main/resources/org/apache/tika/parser/ner/nltk/NLTKServer.properties b/tika-parser-modules/tika-parser-mail-module/src/main/resources/META-INF/services/org.apache.tika.parser.Parser
similarity index 90%
copy from tika-parsers/src/main/resources/org/apache/tika/parser/ner/nltk/NLTKServer.properties
copy to tika-parser-modules/tika-parser-mail-module/src/main/resources/META-INF/services/org.apache.tika.parser.Parser
index 5909b69..03f511c 100644
--- a/tika-parsers/src/main/resources/org/apache/tika/parser/ner/nltk/NLTKServer.properties
+++ b/tika-parser-modules/tika-parser-mail-module/src/main/resources/META-INF/services/org.apache.tika.parser.Parser
@@ -13,4 +13,7 @@
 #  See the License for the specific language governing permissions and
 #  limitations under the License.
 
-nltk.server.url=http://localhost:8881
+org.apache.tika.parser.mail.RFC822Parser
+org.apache.tika.parser.mbox.MboxParser
+
+
diff --git a/tika-parsers/src/test/java/org/apache/tika/parser/mail/RFC822ParserTest.java b/tika-parser-modules/tika-parser-mail-module/src/test/java/org/apache/tika/parser/mail/RFC822ParserTest.java
similarity index 83%
rename from tika-parsers/src/test/java/org/apache/tika/parser/mail/RFC822ParserTest.java
rename to tika-parser-modules/tika-parser-mail-module/src/test/java/org/apache/tika/parser/mail/RFC822ParserTest.java
index 6100b2d..4e1ee70 100644
--- a/tika-parsers/src/test/java/org/apache/tika/parser/mail/RFC822ParserTest.java
+++ b/tika-parser-modules/tika-parser-mail-module/src/test/java/org/apache/tika/parser/mail/RFC822ParserTest.java
@@ -259,24 +259,6 @@ public class RFC822ParserTest extends TikaTest {
                 metadata.get(TikaCoreProperties.SUBJECT));
     }
 
-    @Test
-    public void testMainBody() throws Exception {
-        //test that the first text or html chunk is processed in the main body
-        //not treated as an attachment. TIKA-2547
-        List<Metadata> metadataList = getRecursiveMetadata("testRFC822_oddfrom");
-        assertEquals(7, metadataList.size());
-        assertContains("Air Quality Planning", metadataList.get(0).get(AbstractRecursiveParserWrapperHandler.TIKA_CONTENT));
-
-        //Make sure text alternative doesn't get treated as an attachment
-        metadataList = getRecursiveMetadata("testRFC822_normal_zip");
-        assertEquals(3, metadataList.size());
-        assertContains("This is the HTML part", metadataList.get(0).get(AbstractRecursiveParserWrapperHandler.TIKA_CONTENT));
-        assertEquals("application/zip", metadataList.get(2).get(Metadata.CONTENT_TYPE));
-
-        metadataList = getRecursiveMetadata("testRFC822-txt-body");
-        assertEquals(2, metadataList.size());
-        assertContains("body 1", metadataList.get(0).get(AbstractRecursiveParserWrapperHandler.TIKA_CONTENT));
-    }
 
     /**
      * Test for TIKA-640, increase header max beyond 10k bytes
@@ -336,92 +318,6 @@ public class RFC822ParserTest extends TikaTest {
     }
 
     /**
-     * Test TIKA-1028 - If the mail contains an encrypted attachment (or
-     * an attachment that others triggers an error), parsing should carry
-     * on for the remainder regardless
-     */
-    @Test
-    public void testEncryptedZipAttachment() throws Exception {
-        Metadata metadata = new Metadata();
-        ParseContext context = new ParseContext();
-        context.set(Parser.class, EXTRACT_ALL_ALTERNATIVES_PARSER);
-        InputStream stream = getStream("test-documents/testRFC822_encrypted_zip");
-        ContentHandler handler = new BodyContentHandler();
-        EXTRACT_ALL_ALTERNATIVES_PARSER.parse(stream, handler, metadata, context);
-
-        // Check we go the metadata
-        assertEquals("Juha Haaga <ju...@gmail.com>", metadata.get(Metadata.MESSAGE_FROM));
-        assertEquals("Test mail for Tika", metadata.get(TikaCoreProperties.TITLE));
-
-        // Check we got the message text, for both Plain Text and HTML
-        assertContains("Includes encrypted zip file", handler.toString());
-        assertContains("password is \"test\".", handler.toString());
-        assertContains("This is the Plain Text part", handler.toString());
-        assertContains("This is the HTML part", handler.toString());
-
-        // We won't get the contents of the zip file, but we will get the name
-        assertContains("text.txt", handler.toString());
-        assertNotContained("ENCRYPTED ZIP FILES", handler.toString());
-
-        // Try again, this time with the password supplied
-        // Check that we also get the zip's contents as well
-        context.set(PasswordProvider.class, new PasswordProvider() {
-            public String getPassword(Metadata metadata) {
-                return "test";
-            }
-        });
-        stream = getStream("test-documents/testRFC822_encrypted_zip");
-        handler = new BodyContentHandler();
-        EXTRACT_ALL_ALTERNATIVES_PARSER.parse(stream, handler, metadata, context);
-
-        assertContains("Includes encrypted zip file", handler.toString());
-        assertContains("password is \"test\".", handler.toString());
-        assertContains("This is the Plain Text part", handler.toString());
-        assertContains("This is the HTML part", handler.toString());
-
-        // We do get the name of the file in the encrypted zip file
-        assertContains("text.txt", handler.toString());
-
-        // TODO Upgrade to a version of Commons Compress with Encryption
-        //  support, then verify we get the contents of the text file
-        //  held within the encrypted zip
-        assumeTrue(false); // No Zip Encryption support yet
-        assertContains("TEST DATA FOR TIKA.", handler.toString());
-        assertContains("ENCRYPTED ZIP FILES", handler.toString());
-        assertContains("TIKA-1028", handler.toString());
-    }
-
-    /**
-     * Test TIKA-1028 - Ensure we can get the contents of an
-     * un-encrypted zip file
-     */
-    @Test
-    public void testNormalZipAttachment() throws Exception {
-        Metadata metadata = new Metadata();
-        ParseContext context = new ParseContext();
-        context.set(Parser.class, EXTRACT_ALL_ALTERNATIVES_PARSER);
-        InputStream stream = getStream("test-documents/testRFC822_normal_zip");
-        ContentHandler handler = new BodyContentHandler();
-        EXTRACT_ALL_ALTERNATIVES_PARSER.parse(stream, handler, metadata, context);
-
-        // Check we go the metadata
-        assertEquals("Juha Haaga <ju...@gmail.com>", metadata.get(Metadata.MESSAGE_FROM));
-        assertEquals("Test mail for Tika", metadata.get(TikaCoreProperties.TITLE));
-
-        // Check we got the message text, for both Plain Text and HTML
-        assertContains("Includes a normal, unencrypted zip file", handler.toString());
-        assertContains("This is the Plain Text part", handler.toString());
-        assertContains("This is the HTML part", handler.toString());
-
-        // We get both name and contents of the zip file's contents
-        assertContains("text.txt", handler.toString());
-        assertContains("TEST DATA FOR TIKA.", handler.toString());
-        assertContains("This is text inside an unencrypted zip file", handler.toString());
-        assertContains("TIKA-1028", handler.toString());
-        assertEquals("<ju...@gmail.com>", metadata.get("Message:Raw-Header:Return-Path"));
-    }
-
-    /**
      * TIKA-1222 When requested, ensure that the various attachments of
      * the mail come through properly as embedded resources
      */
diff --git a/tika-parsers/src/test/java/org/apache/tika/parser/mbox/MboxParserTest.java b/tika-parser-modules/tika-parser-mail-module/src/test/java/org/apache/tika/parser/mbox/MboxParserTest.java
similarity index 92%
rename from tika-parsers/src/test/java/org/apache/tika/parser/mbox/MboxParserTest.java
rename to tika-parser-modules/tika-parser-mail-module/src/test/java/org/apache/tika/parser/mbox/MboxParserTest.java
index 7b6453f..541794c 100644
--- a/tika-parsers/src/test/java/org/apache/tika/parser/mbox/MboxParserTest.java
+++ b/tika-parser-modules/tika-parser-mail-module/src/test/java/org/apache/tika/parser/mbox/MboxParserTest.java
@@ -148,20 +148,6 @@ public class MboxParserTest extends TikaTest {
 
         assertContains("When a Mapper completes", handler.toString());
     }
-    
-    @Test
-    public void testOverrideDetector() throws Exception {
-        ContentHandler handler = new BodyContentHandler();
-        Metadata metadata = new Metadata();
-        ParseContext context = new ParseContext();
-
-        try (InputStream stream = getResourceAsStream("/test-documents/single_mail.mbox")) {
-            mboxParser.parse(stream, handler, metadata, context);
-        }
-        
-        Metadata firstMail = mboxParser.getTrackingMetadata().get(0);
-        assertEquals("message/rfc822", firstMail.get(Metadata.CONTENT_TYPE));
-    }
 
     @Test
     public void testTika2478() throws Exception {
diff --git a/tika-parsers/src/test/resources/org/apache/tika/parser/mail/tika-config-extract-all-alternatives.xml b/tika-parser-modules/tika-parser-mail-module/src/test/resources/org/apache/tika/parser/mail/tika-config-extract-all-alternatives.xml
similarity index 100%
rename from tika-parsers/src/test/resources/org/apache/tika/parser/mail/tika-config-extract-all-alternatives.xml
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/org/apache/tika/parser/mail/tika-config-extract-all-alternatives.xml
diff --git a/tika-parsers/src/test/resources/test-documents/complex.mbox b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/complex.mbox
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/complex.mbox
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/complex.mbox
diff --git a/tika-parsers/src/test/resources/test-documents/headers.mbox b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/headers.mbox
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/headers.mbox
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/headers.mbox
diff --git a/tika-parsers/src/test/resources/test-documents/multiline.mbox b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/multiline.mbox
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/multiline.mbox
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/multiline.mbox
diff --git a/tika-parsers/src/test/resources/test-documents/quoted.mbox b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/quoted.mbox
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/quoted.mbox
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/quoted.mbox
diff --git a/tika-parsers/src/test/resources/test-documents/simple.mbox b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/simple.mbox
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/simple.mbox
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/simple.mbox
diff --git a/tika-parsers/src/test/resources/test-documents/single_mail.mbox b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/single_mail.mbox
similarity index 97%
rename from tika-parsers/src/test/resources/test-documents/single_mail.mbox
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/single_mail.mbox
index 753ed95..078ba9f 100644
--- a/tika-parsers/src/test/resources/test-documents/single_mail.mbox
+++ b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/single_mail.mbox
@@ -1,25 +1,25 @@
-From core-user-return-14700-apmail-hadoop-core-user-archive=hadoop.apache.org@hadoop.apache.org Mon Jun 01 04:28:28 2009
-Comments: comments before header to confuse detection
-Content-Type: text/html; charset=utf-8
-Content-Transfer-Encoding: 8bit
-
-<html>
-  <head>
-    <meta http-equiv="content-type" content="text/html; charset=utf-8">
-  </head>
-  <body text="#000000" bgcolor="#FFFFFF">
-    <p>Então talvez resolva fazendo uma imagem da partição lógica após
-      bootar o sistema do HD.</p>
-    <p>Daqui a pouco vai aparecer o equivalente da Micrsoft: <a
-        class="moz-txt-link-freetext"
-href="https://technet.microsoft.com/en-us/library/hh831739%28v=ws.11%29.aspx">https://technet.microsoft.com/en-us/library/hh831739(v=ws.11).aspx</a></p>
-    <p>Junto com o ReFS:
-      <a class="moz-txt-link-freetext"
-href="https://docs.microsoft.com/en-us/windows-server/storage/refs/refs-overview">https://docs.microsoft.com/en-us/windows-server/storage/refs/refs-overview</a></p>
-    <p>abs<br>
-    </p>
-    <pre class="moz-signature" cols="72">Luís Filipe da Cruz Nassif</pre>
-    <pre class="moz-signature" cols="72">-- 
-Luís Filipe da Cruz Nassif</pre>
-  </body>
-</html>
+From core-user-return-14700-apmail-hadoop-core-user-archive=hadoop.apache.org@hadoop.apache.org Mon Jun 01 04:28:28 2009
+Comments: comments before header to confuse detection
+Content-Type: text/html; charset=utf-8
+Content-Transfer-Encoding: 8bit
+
+<html>
+  <head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  </head>
+  <body text="#000000" bgcolor="#FFFFFF">
+    <p>Então talvez resolva fazendo uma imagem da partição lógica após
+      bootar o sistema do HD.</p>
+    <p>Daqui a pouco vai aparecer o equivalente da Micrsoft: <a
+        class="moz-txt-link-freetext"
+href="https://technet.microsoft.com/en-us/library/hh831739%28v=ws.11%29.aspx">https://technet.microsoft.com/en-us/library/hh831739(v=ws.11).aspx</a></p>
+    <p>Junto com o ReFS:
+      <a class="moz-txt-link-freetext"
+href="https://docs.microsoft.com/en-us/windows-server/storage/refs/refs-overview">https://docs.microsoft.com/en-us/windows-server/storage/refs/refs-overview</a></p>
+    <p>abs<br>
+    </p>
+    <pre class="moz-signature" cols="72">Luís Filipe da Cruz Nassif</pre>
+    <pre class="moz-signature" cols="72">-- 
+Luís Filipe da Cruz Nassif</pre>
+  </body>
+</html>
diff --git a/tika-parsers/src/test/resources/test-documents/testEmailWithPNGAtt.eml b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testEmailWithPNGAtt.eml
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testEmailWithPNGAtt.eml
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testEmailWithPNGAtt.eml
diff --git a/tika-parsers/src/test/resources/test-documents/testGroupWiseEml.eml b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testGroupWiseEml.eml
similarity index 97%
rename from tika-parsers/src/test/resources/test-documents/testGroupWiseEml.eml
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testGroupWiseEml.eml
index c9453b4..a6d2398 100644
--- a/tika-parsers/src/test/resources/test-documents/testGroupWiseEml.eml
+++ b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testGroupWiseEml.eml
@@ -1,58 +1,58 @@
-Mime-Version: 1.0
-X-Mailer: GroupWise 2012
-Subject: test333
-Date: Thu, 27 Jun 2013 13:29:57 +0200
-Message-ID: <51CC3E55020000000000000F@$$$>
-References: <51CC3DB00200000000000003@$$$>
-In-Reply-To: <51CC3DB00200000000000003@$$$>
-From: "Novell GroupWise" <$$$.$$$.$$$>
-Content-Type: multipart/mixed; boundary="____LPHMXLZMXOMRLFKSEJCW____"
-
-
---____LPHMXLZMXOMRLFKSEJCW____
-Content-Type: multipart/alternative; boundary="____WHPEPQYSAQXEHDGESJXG____"
-
-
---____WHPEPQYSAQXEHDGESJXG____
-Content-Type: text/plain; charset=utf-8
-Content-Transfer-Encoding: base64
-Content-Disposition: inline
-
-dGVzdA==
---____WHPEPQYSAQXEHDGESJXG____
-Content-Type: text/html; charset=utf-8
-Content-Transfer-Encoding: quoted-printable
-
-=
-<HTML><HEAD>
-<META content=3D"text/html; charset=3Dutf-8" http-equiv=3DContent-Type>
-<META name=3DGENERATOR content=3D"MSHTML 8.00.7601.17699"></HEAD>
-<BODY style=3D"MARGIN: 4px 4px 1px; FONT: 10pt Segoe UI">test</BODY></HTML>
---____WHPEPQYSAQXEHDGESJXG____--
-
---____LPHMXLZMXOMRLFKSEJCW____
-Content-Type: message/rfc822
-Content-Transfer-Encoding: base64
-Content-Disposition: attachment; filename="test.eml"
-
-TWltZS1WZXJzaW9uOiAxLjANClgtTWFpbGVyOiBHcm91cFdpc2UgMjAxMg0KU3ViamVjdDogdGVz
-dA0KRGF0ZTogVGh1LCAyNyBKdW4gMjAxMyAxMzoyNzoxMiArMDIwMA0KTWVzc2FnZS1JRDogPDUx
-Q0MzREIwMDIwMDAwMDAwMDAwMDAwM0AkJCQ+DQpGcm9tOiAiTm92ZWxsIEdyb3VwV2lzZSIgPCQk
-JC4kJCQuJCQkPg0KQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvYWx0ZXJuYXRpdmU7IGJvdW5kYXJ5
-PSJfX19fTFBITVhMWk1YT01STEZLU0VKQ1dfX19fIg0KDQoNCi0tX19fX0xQSE1YTFpNWE9NUkxG
-S1NFSkNXX19fXw0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04DQpDb250
-ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQNCkNvbnRlbnQtRGlzcG9zaXRpb246IGlubGlu
-ZQ0KDQpkR1Z6ZEE9PQ0KLS1fX19fTFBITVhMWk1YT01STEZLU0VKQ1dfX19fDQpDb250ZW50LVR5
-cGU6IHRleHQvaHRtbDsgY2hhcnNldD11dGYtOA0KQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzog
-cXVvdGVkLXByaW50YWJsZQ0KDQo8SFRNTD48SEVBRD4NCjxNRVRBIGNvbnRlbnQ9M0QidGV4dC9o
-dG1sOyBjaGFyc2V0PTNEdXRmLTgiIGh0dHAtZXF1aXY9M0RDb250ZW50LVR5cGU+DQo8TUVUQSBu
-YW1lPTNER0VORVJBVE9SIGNvbnRlbnQ9M0QiTVNIVE1MIDguMDAuNzYwMS4xNzY5OSI+PC9IRUFE
-Pg0KPEJPRFkgc3R5bGU9M0QiTUFSR0lOOiA0cHggNHB4IDFweDsgRk9OVDogMTBwdCBTZWdvZSBV
-SSI+dGVzdDwvQk9EWT48L0hUTUw+DQotLV9fX19MUEhNWExaTVhPTVJMRktTRUpDV19fX18tLQ0K
---____LPHMXLZMXOMRLFKSEJCW____
-Content-Type: text/plain; charset=us-ascii
-Content-Transfer-Encoding: quoted-printable
-Content-Disposition: attachment; filename="Neues Textdokument.txt"
-
-ssssssssssssssssssssss
---____LPHMXLZMXOMRLFKSEJCW____--
+Mime-Version: 1.0
+X-Mailer: GroupWise 2012
+Subject: test333
+Date: Thu, 27 Jun 2013 13:29:57 +0200
+Message-ID: <51CC3E55020000000000000F@$$$>
+References: <51CC3DB00200000000000003@$$$>
+In-Reply-To: <51CC3DB00200000000000003@$$$>
+From: "Novell GroupWise" <$$$.$$$.$$$>
+Content-Type: multipart/mixed; boundary="____LPHMXLZMXOMRLFKSEJCW____"
+
+
+--____LPHMXLZMXOMRLFKSEJCW____
+Content-Type: multipart/alternative; boundary="____WHPEPQYSAQXEHDGESJXG____"
+
+
+--____WHPEPQYSAQXEHDGESJXG____
+Content-Type: text/plain; charset=utf-8
+Content-Transfer-Encoding: base64
+Content-Disposition: inline
+
+dGVzdA==
+--____WHPEPQYSAQXEHDGESJXG____
+Content-Type: text/html; charset=utf-8
+Content-Transfer-Encoding: quoted-printable
+
+=
+<HTML><HEAD>
+<META content=3D"text/html; charset=3Dutf-8" http-equiv=3DContent-Type>
+<META name=3DGENERATOR content=3D"MSHTML 8.00.7601.17699"></HEAD>
+<BODY style=3D"MARGIN: 4px 4px 1px; FONT: 10pt Segoe UI">test</BODY></HTML>
+--____WHPEPQYSAQXEHDGESJXG____--
+
+--____LPHMXLZMXOMRLFKSEJCW____
+Content-Type: message/rfc822
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment; filename="test.eml"
+
+TWltZS1WZXJzaW9uOiAxLjANClgtTWFpbGVyOiBHcm91cFdpc2UgMjAxMg0KU3ViamVjdDogdGVz
+dA0KRGF0ZTogVGh1LCAyNyBKdW4gMjAxMyAxMzoyNzoxMiArMDIwMA0KTWVzc2FnZS1JRDogPDUx
+Q0MzREIwMDIwMDAwMDAwMDAwMDAwM0AkJCQ+DQpGcm9tOiAiTm92ZWxsIEdyb3VwV2lzZSIgPCQk
+JC4kJCQuJCQkPg0KQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvYWx0ZXJuYXRpdmU7IGJvdW5kYXJ5
+PSJfX19fTFBITVhMWk1YT01STEZLU0VKQ1dfX19fIg0KDQoNCi0tX19fX0xQSE1YTFpNWE9NUkxG
+S1NFSkNXX19fXw0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04DQpDb250
+ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQNCkNvbnRlbnQtRGlzcG9zaXRpb246IGlubGlu
+ZQ0KDQpkR1Z6ZEE9PQ0KLS1fX19fTFBITVhMWk1YT01STEZLU0VKQ1dfX19fDQpDb250ZW50LVR5
+cGU6IHRleHQvaHRtbDsgY2hhcnNldD11dGYtOA0KQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzog
+cXVvdGVkLXByaW50YWJsZQ0KDQo8SFRNTD48SEVBRD4NCjxNRVRBIGNvbnRlbnQ9M0QidGV4dC9o
+dG1sOyBjaGFyc2V0PTNEdXRmLTgiIGh0dHAtZXF1aXY9M0RDb250ZW50LVR5cGU+DQo8TUVUQSBu
+YW1lPTNER0VORVJBVE9SIGNvbnRlbnQ9M0QiTVNIVE1MIDguMDAuNzYwMS4xNzY5OSI+PC9IRUFE
+Pg0KPEJPRFkgc3R5bGU9M0QiTUFSR0lOOiA0cHggNHB4IDFweDsgRk9OVDogMTBwdCBTZWdvZSBV
+SSI+dGVzdDwvQk9EWT48L0hUTUw+DQotLV9fX19MUEhNWExaTVhPTVJMRktTRUpDV19fX18tLQ0K
+--____LPHMXLZMXOMRLFKSEJCW____
+Content-Type: text/plain; charset=us-ascii
+Content-Transfer-Encoding: quoted-printable
+Content-Disposition: attachment; filename="Neues Textdokument.txt"
+
+ssssssssssssssssssssss
+--____LPHMXLZMXOMRLFKSEJCW____--
diff --git a/tika-parsers/src/test/resources/test-documents/testMBOX_complex.mbox b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testMBOX_complex.mbox
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testMBOX_complex.mbox
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testMBOX_complex.mbox
diff --git a/tika-parsers/src/test/resources/test-documents/testMBOX_lengthy_x-headers.mbox b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testMBOX_lengthy_x-headers.mbox
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testMBOX_lengthy_x-headers.mbox
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testMBOX_lengthy_x-headers.mbox
diff --git a/tika-parsers/src/test/resources/test-documents/testRFC822 b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822
similarity index 97%
rename from tika-parsers/src/test/resources/test-documents/testRFC822
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822
index 22fbf15..9ce423a 100644
--- a/tika-parsers/src/test/resources/test-documents/testRFC822
+++ b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822
@@ -1,41 +1,41 @@
-From: "Julien Nioche (JIRA)" <ji...@apache.org>
-To: dev@tika.apache.org
-Subject: [jira] Commented: (TIKA-461) RFC822 messages not parsed
-Reply-To: dev@tika.apache.org
-Delivered-To: mailing list dev@tika.apache.org
-Date: Mon, 6 Sep 2010 05:25:34 -0400 (EDT)
-In-Reply-To: <60...@thor>
-MIME-Version: 1.0
-Content-Type: text/plain; charset=utf-8
-Content-Transfer-Encoding: 7bit
-X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394
-X-Virus-Checked: Checked by ClamAV on apache.org
-
-
-    [ https://issues.apache.org/jira/browse/TIKA-461?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12906468#action_12906468 ] 
-
-Julien Nioche commented on TIKA-461:
-------------------------------------
-
-I'll have a look at mime4j and try to use it in Tika
-
-> RFC822 messages not parsed
-> --------------------------
->
->                 Key: TIKA-461
->                 URL: https://issues.apache.org/jira/browse/TIKA-461
->             Project: Tika
->          Issue Type: Bug
->          Components: parser
->    Affects Versions: 0.7
->            Reporter: Joshua Turner
->            Assignee: Julien Nioche
->
-> Presented with an RFC822 message exported from Thunderbird, AutodetectParser produces an empty body, and a Metadata containing only one key-value pair: "Content-Type=message/rfc822". Directly calling MboxParser likewise gives an empty body, but with two metadata pairs: "Content-Encoding=us-ascii Content-Type=application/mbox".
-> A quick peek at the source of MboxParser shows that the implementation is pretty naive. If the wiring can be sorted out, something like Apache James' mime4j might be a better bet.
-
--- 
-This message is automatically generated by JIRA.
--
-You can reply to this email to add a comment to the issue online.
-
+From: "Julien Nioche (JIRA)" <ji...@apache.org>
+To: dev@tika.apache.org
+Subject: [jira] Commented: (TIKA-461) RFC822 messages not parsed
+Reply-To: dev@tika.apache.org
+Delivered-To: mailing list dev@tika.apache.org
+Date: Mon, 6 Sep 2010 05:25:34 -0400 (EDT)
+In-Reply-To: <60...@thor>
+MIME-Version: 1.0
+Content-Type: text/plain; charset=utf-8
+Content-Transfer-Encoding: 7bit
+X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394
+X-Virus-Checked: Checked by ClamAV on apache.org
+
+
+    [ https://issues.apache.org/jira/browse/TIKA-461?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12906468#action_12906468 ] 
+
+Julien Nioche commented on TIKA-461:
+------------------------------------
+
+I'll have a look at mime4j and try to use it in Tika
+
+> RFC822 messages not parsed
+> --------------------------
+>
+>                 Key: TIKA-461
+>                 URL: https://issues.apache.org/jira/browse/TIKA-461
+>             Project: Tika
+>          Issue Type: Bug
+>          Components: parser
+>    Affects Versions: 0.7
+>            Reporter: Joshua Turner
+>            Assignee: Julien Nioche
+>
+> Presented with an RFC822 message exported from Thunderbird, AutodetectParser produces an empty body, and a Metadata containing only one key-value pair: "Content-Type=message/rfc822". Directly calling MboxParser likewise gives an empty body, but with two metadata pairs: "Content-Encoding=us-ascii Content-Type=application/mbox".
+> A quick peek at the source of MboxParser shows that the implementation is pretty naive. If the wiring can be sorted out, something like Apache James' mime4j might be a better bet.
+
+-- 
+This message is automatically generated by JIRA.
+-
+You can reply to this email to add a comment to the issue online.
+
diff --git a/tika-parsers/src/test/resources/test-documents/testRFC822-CC-BCC b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822-CC-BCC
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testRFC822-CC-BCC
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822-CC-BCC
diff --git a/tika-parsers/src/test/resources/test-documents/testRFC822-big b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822-big
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testRFC822-big
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822-big
diff --git a/tika-parsers/src/test/resources/test-documents/testRFC822-limitedheaders b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822-limitedheaders
similarity index 91%
rename from tika-parsers/src/test/resources/test-documents/testRFC822-limitedheaders
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822-limitedheaders
index 8e3b765..b590abf 100644
--- a/tika-parsers/src/test/resources/test-documents/testRFC822-limitedheaders
+++ b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822-limitedheaders
@@ -1,9 +1,9 @@
-From: xyz, abc
-Sent: Monday, May 03, 2010 4:21 PM
-To: abc, def
-Subject: abcd
-
-foo:
-
-bar biz bat
-
+From: xyz, abc
+Sent: Monday, May 03, 2010 4:21 PM
+To: abc, def
+Subject: abcd
+
+foo:
+
+bar biz bat
+
diff --git a/tika-parsers/src/test/resources/test-documents/testRFC822-mixed-simple b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822-mixed-simple
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testRFC822-mixed-simple
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822-mixed-simple
diff --git a/tika-parsers/src/test/resources/test-documents/testRFC822-mixed-with-pdf-inline b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822-mixed-with-pdf-inline
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testRFC822-mixed-with-pdf-inline
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822-mixed-with-pdf-inline
diff --git a/tika-parsers/src/test/resources/test-documents/testRFC822-multipart b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822-multipart
similarity index 98%
rename from tika-parsers/src/test/resources/test-documents/testRFC822-multipart
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822-multipart
index 7c0a8c9..5240f02 100644
--- a/tika-parsers/src/test/resources/test-documents/testRFC822-multipart
+++ b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822-multipart
@@ -1,111 +1,111 @@
-MIME-Version: 1.0
-Sender: digitalpebble@googlemail.com
-Received: by 10.231.31.200 with HTTP; Mon, 27 Sep 2010 06:29:16 -0700 (PDT)
-Date: Mon, 27 Sep 2010 14:29:16 +0100
-Delivered-To: digitalpebble@gmail.com
-X-Google-Sender-Auth: it4o8JYLKcQ5bHJbTpqDhZv46vk
-Message-ID: <AA...@mail.gmail.com>
-Subject: Test Multi Part Message
-From: DigitalPebble <ju...@digitalpebble.com>
-To: lists.digitalpebble@gmail.com
-Content-Type: multipart/mixed; boundary=0016e64606800312ee04913db790
-
---0016e64606800312ee04913db790
-Content-Type: multipart/alternative; boundary=0016e64606800312ea04913db78e
-
---0016e64606800312ea04913db78e
-Content-Type: text/plain; charset=UTF-8
-
-This is a test for parsing multi-part mails. With some funky HTML code an a
-picture attached.
-
-Text specific to body 1.
-
--- 
-**
-*
-Open Source Solutions for Text Engineering
-
-http://digitalpebble.blogspot.com
-http://www.digitalpebble.com*
-
---0016e64606800312ea04913db78e
-Content-Type: text/html; charset=UTF-8
-Content-Transfer-Encoding: quoted-printable
-
-This is a test for parsing multi-part mails. With<span style=3D"color: rgb(=
-204, 0, 0);"> some funky HTML code</span> an a picture attached.<br clear=
-=3D"all"><br>-- <br><font face=3D"arial, helvetica, sans-serif"><b><span st=
-yle=3D"font-family: arial; font-weight: normal;"><b style=3D"color: rgb(0, =
-0, 0); font-family: arial,helvetica,sans-serif;"><img src=3D"http://digital=
-pebble.com/img/logo.gif" height=3D"38" width=3D"200"></b></span></b></font>=
-<div>
-<font face=3D"arial, helvetica, sans-serif"><b><span style=3D"font-family: =
-arial; font-weight: normal;"><b style=3D"color: rgb(0, 0, 0); font-family: =
-arial,helvetica,sans-serif;"><span style=3D"font-size: x-small;">=C2=A0</sp=
-an><br style=3D"font-family: arial,helvetica,sans-serif;">
-</b><span style=3D"color: rgb(102, 102, 102); font-family: arial,helvetica,=
-sans-serif;"><span style=3D"color: rgb(51, 51, 51);">Open Source Solutions =
-for Text Engineering</span><br>
-<span style=3D"font-size: x-small;">=C2=A0</span><br>
-</span></span><span style=3D"color: rgb(102, 102, 102);"><span style=3D"fon=
-t-weight: normal;"><a href=3D"http://digitalpebble.blogspot.com" target=3D"=
-_blank">http://digitalpebble.blogspot.com</a></span></span><span style=3D"f=
-ont-weight: normal;"><br style=3D"color: rgb(102, 102, 102);">
-</span>Text specific to body 2.
-<span style=3D"color: rgb(102, 102, 102);"><span style=3D"font-weight: norm=
-al;"><a href=3D"http://www.digitalpebble.com" target=3D"_blank">http://www.=
-digitalpebble.com</a></span></span></b></font></div><br>
-
---0016e64606800312ea04913db78e--
---0016e64606800312ee04913db790
-Content-Type: image/gif; name="logo.gif"
-Content-Disposition: attachment; filename="logo.gif"
-Content-Transfer-Encoding: base64
-X-Attachment-Id: f_geldjvqq0
-
-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
---0016e64606800312ee04913db790--
+MIME-Version: 1.0
+Sender: digitalpebble@googlemail.com
+Received: by 10.231.31.200 with HTTP; Mon, 27 Sep 2010 06:29:16 -0700 (PDT)
+Date: Mon, 27 Sep 2010 14:29:16 +0100
+Delivered-To: digitalpebble@gmail.com
+X-Google-Sender-Auth: it4o8JYLKcQ5bHJbTpqDhZv46vk
+Message-ID: <AA...@mail.gmail.com>
+Subject: Test Multi Part Message
+From: DigitalPebble <ju...@digitalpebble.com>
+To: lists.digitalpebble@gmail.com
+Content-Type: multipart/mixed; boundary=0016e64606800312ee04913db790
+
+--0016e64606800312ee04913db790
+Content-Type: multipart/alternative; boundary=0016e64606800312ea04913db78e
+
+--0016e64606800312ea04913db78e
+Content-Type: text/plain; charset=UTF-8
+
+This is a test for parsing multi-part mails. With some funky HTML code an a
+picture attached.
+
+Text specific to body 1.
+
+-- 
+**
+*
+Open Source Solutions for Text Engineering
+
+http://digitalpebble.blogspot.com
+http://www.digitalpebble.com*
+
+--0016e64606800312ea04913db78e
+Content-Type: text/html; charset=UTF-8
+Content-Transfer-Encoding: quoted-printable
+
+This is a test for parsing multi-part mails. With<span style=3D"color: rgb(=
+204, 0, 0);"> some funky HTML code</span> an a picture attached.<br clear=
+=3D"all"><br>-- <br><font face=3D"arial, helvetica, sans-serif"><b><span st=
+yle=3D"font-family: arial; font-weight: normal;"><b style=3D"color: rgb(0, =
+0, 0); font-family: arial,helvetica,sans-serif;"><img src=3D"http://digital=
+pebble.com/img/logo.gif" height=3D"38" width=3D"200"></b></span></b></font>=
+<div>
+<font face=3D"arial, helvetica, sans-serif"><b><span style=3D"font-family: =
+arial; font-weight: normal;"><b style=3D"color: rgb(0, 0, 0); font-family: =
+arial,helvetica,sans-serif;"><span style=3D"font-size: x-small;">=C2=A0</sp=
+an><br style=3D"font-family: arial,helvetica,sans-serif;">
+</b><span style=3D"color: rgb(102, 102, 102); font-family: arial,helvetica,=
+sans-serif;"><span style=3D"color: rgb(51, 51, 51);">Open Source Solutions =
+for Text Engineering</span><br>
+<span style=3D"font-size: x-small;">=C2=A0</span><br>
+</span></span><span style=3D"color: rgb(102, 102, 102);"><span style=3D"fon=
+t-weight: normal;"><a href=3D"http://digitalpebble.blogspot.com" target=3D"=
+_blank">http://digitalpebble.blogspot.com</a></span></span><span style=3D"f=
+ont-weight: normal;"><br style=3D"color: rgb(102, 102, 102);">
+</span>Text specific to body 2.
+<span style=3D"color: rgb(102, 102, 102);"><span style=3D"font-weight: norm=
+al;"><a href=3D"http://www.digitalpebble.com" target=3D"_blank">http://www.=
+digitalpebble.com</a></span></span></b></font></div><br>
+
+--0016e64606800312ea04913db78e--
+--0016e64606800312ee04913db790
+Content-Type: image/gif; name="logo.gif"
+Content-Disposition: attachment; filename="logo.gif"
+Content-Transfer-Encoding: base64
+X-Attachment-Id: f_geldjvqq0
+
+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
+--0016e64606800312ee04913db790--
diff --git a/tika-parsers/src/test/resources/test-documents/testRFC822-txt-body b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822-txt-body
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testRFC822-txt-body
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822-txt-body
diff --git a/tika-parsers/src/test/resources/test-documents/testRFC822_base64 b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822_base64
similarity index 97%
rename from tika-parsers/src/test/resources/test-documents/testRFC822_base64
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822_base64
index 6060095..20f29b9 100644
--- a/tika-parsers/src/test/resources/test-documents/testRFC822_base64
+++ b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822_base64
@@ -1,8 +1,8 @@
-To: Nobody <no...@somewhere.com>
-From: Nowhere <no...@nowhere.com>
-Subject: This tests a base64 encoded body
-MIME-Version: 1.0
-Content-Type: text/plain; charset=ISO-8859-1
-Content-Transfer-Encoding: base64
-
-SGVyZSBpcyBzb21lIHRleHQsIHdpdGggaW50ZXJuYXRpb25hbCBjaGFyYWN0ZXJzLCB2b2ls4CE=
+To: Nobody <no...@somewhere.com>
+From: Nowhere <no...@nowhere.com>
+Subject: This tests a base64 encoded body
+MIME-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: base64
+
+SGVyZSBpcyBzb21lIHRleHQsIHdpdGggaW50ZXJuYXRpb25hbCBjaGFyYWN0ZXJzLCB2b2ls4CE=
diff --git a/tika-parsers/src/test/resources/test-documents/testRFC822_date_utf8 b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822_date_utf8
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testRFC822_date_utf8
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822_date_utf8
diff --git a/tika-parsers/src/test/resources/test-documents/testRFC822_dkim.eml b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822_dkim.eml
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testRFC822_dkim.eml
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822_dkim.eml
diff --git a/tika-parsers/src/test/resources/test-documents/testRFC822_eml b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822_eml
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testRFC822_eml
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822_eml
diff --git a/tika-parsers/src/test/resources/test-documents/testRFC822_encrypted_zip b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822_encrypted_zip
similarity index 97%
rename from tika-parsers/src/test/resources/test-documents/testRFC822_encrypted_zip
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822_encrypted_zip
index 5f0780f..436fcfa 100644
--- a/tika-parsers/src/test/resources/test-documents/testRFC822_encrypted_zip
+++ b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822_encrypted_zip
@@ -1,61 +1,61 @@
-Return-Path: <ju...@gmail.com>
-X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on
-	virt0003.codenomicon.com
-X-Spam-Level: 
-X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,
-	DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_LOW,
-	SPF_PASS autolearn=ham version=3.3.1
-Received: from mail-wg0-f48.google.com (mail-wg0-f48.google.com [74.125.82.48])
-	by codenomicon.com (8.14.4/8.14.4) with ESMTP id t0G7ZmGs002981
-	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK)
-	for <ju...@codenomicon.com>; Fri, 16 Jan 2015 07:35:54 GMT
-Received: by mail-wg0-f48.google.com with SMTP id l2so19028230wgh.7
-        for <ju...@codenomicon.com>; Thu, 15 Jan 2015 23:35:48 -0800 (PST)
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
-        d=gmail.com; s=20120113;
-        h=mime-version:from:date:message-id:subject:to:content-type;
-        bh=wjcer9ESeBUN8rAEahqeDiOHf3wqBHgaeAboZtkw8qM=;
-        b=S3ezJU84qISP1OzMoH+wLMxn7y1JkcJwlUs4Uvfy+QlaSFcDcG66oxqsxniQ4kWmCC
-         QdQ94iztFvcvTAHuJys+jAH1UeVQKgs6T5lINj73nww3CKGh1B78LpnCRkFS93o19Zvt
-         QDSDtB23y9FlLF/dH6okvTIq7jQXNPuaDDqY8yJtp+DcYfW+QiNIGI83QievgQlWMRiV
-         fHuCbeEofTRP/82vHxUDVoZo/hwx8OAjWqPitrCmxU7Mly8lG5No1CHsKWmWd2Q+yxN3
-         tC3Ptbrig720BdBZKYwWSI6xBS4AY+46+utaloq9Hr0qpaDf5e9eXqq0ef0efDgd2kJT
-         gmyw==
-X-Received: by 10.180.39.204 with SMTP id r12mr3350467wik.11.1421393748083;
- Thu, 15 Jan 2015 23:35:48 -0800 (PST)
-MIME-Version: 1.0
-From: Juha Haaga <ju...@gmail.com>
-Date: Fri, 16 Jan 2015 07:35:46 +0000
-Message-ID: <CA...@mail.gmail.com>
-Subject: Test mail for Tika
-To: Juha Haaga <ju...@codenomicon.com>
-Content-Type: multipart/mixed; boundary=001a11c3649c712d2a050cc0050f
-
---001a11c3649c712d2a050cc0050f
-Content-Type: multipart/alternative; boundary=001a11c3649c712d27050cc0050d
-
---001a11c3649c712d27050cc0050d
-Content-Type: text/plain; charset=UTF-8
-
-Includes encrypted zip file as attachment. password is "test".
-This is the Plain Text part
-
---001a11c3649c712d27050cc0050d
-Content-Type: text/html; charset=UTF-8
-
-Includes encrypted zip file as attachment. password is &quot;test&quot;.<br/>
-This is the HTML part
-
---001a11c3649c712d27050cc0050d--
---001a11c3649c712d2a050cc0050f
-Content-Type: application/zip; name="test.zip"
-Content-Disposition: attachment; filename="test.zip"
-Content-Transfer-Encoding: base64
-X-Attachment-Id: 14af1ab4e8dbb946bc5
-
-UEsDBBQACQAIAP1LMEZzIEVkVQAAAE4AAAAIABwAdGV4dC50eHRVVAkAA26+uFSNvrhUdXgLAAEE
-9gEAAAQUAAAAypmn5/WV8PAdMdAB7WIFh/oQZw9KUG57D9/+Sl/mWzAaa2mMH3uENWiIVoypnqB2
-2GFSwihoRH4krgegW8EXEN3YbDQGBTvfEa6p3d/0V0EfZO4F31BLBwhzIEVkVQAAAE4AAABQSwEC
-HgMUAAkACAD9SzBGcyBFZFUAAABOAAAACAAYAAAAAAABAAAApIEAAAAAdGV4dC50eHRVVAUAA26+
-uFR1eAsAAQT2AQAABBQAAABQSwUGAAAAAAEAAQBOAAAApwAAAAAA
---001a11c3649c712d2a050cc0050f--
+Return-Path: <ju...@gmail.com>
+X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on
+	virt0003.codenomicon.com
+X-Spam-Level: 
+X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,
+	DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_LOW,
+	SPF_PASS autolearn=ham version=3.3.1
+Received: from mail-wg0-f48.google.com (mail-wg0-f48.google.com [74.125.82.48])
+	by codenomicon.com (8.14.4/8.14.4) with ESMTP id t0G7ZmGs002981
+	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK)
+	for <ju...@codenomicon.com>; Fri, 16 Jan 2015 07:35:54 GMT
+Received: by mail-wg0-f48.google.com with SMTP id l2so19028230wgh.7
+        for <ju...@codenomicon.com>; Thu, 15 Jan 2015 23:35:48 -0800 (PST)
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+        d=gmail.com; s=20120113;
+        h=mime-version:from:date:message-id:subject:to:content-type;
+        bh=wjcer9ESeBUN8rAEahqeDiOHf3wqBHgaeAboZtkw8qM=;
+        b=S3ezJU84qISP1OzMoH+wLMxn7y1JkcJwlUs4Uvfy+QlaSFcDcG66oxqsxniQ4kWmCC
+         QdQ94iztFvcvTAHuJys+jAH1UeVQKgs6T5lINj73nww3CKGh1B78LpnCRkFS93o19Zvt
+         QDSDtB23y9FlLF/dH6okvTIq7jQXNPuaDDqY8yJtp+DcYfW+QiNIGI83QievgQlWMRiV
+         fHuCbeEofTRP/82vHxUDVoZo/hwx8OAjWqPitrCmxU7Mly8lG5No1CHsKWmWd2Q+yxN3
+         tC3Ptbrig720BdBZKYwWSI6xBS4AY+46+utaloq9Hr0qpaDf5e9eXqq0ef0efDgd2kJT
+         gmyw==
+X-Received: by 10.180.39.204 with SMTP id r12mr3350467wik.11.1421393748083;
+ Thu, 15 Jan 2015 23:35:48 -0800 (PST)
+MIME-Version: 1.0
+From: Juha Haaga <ju...@gmail.com>
+Date: Fri, 16 Jan 2015 07:35:46 +0000
+Message-ID: <CA...@mail.gmail.com>
+Subject: Test mail for Tika
+To: Juha Haaga <ju...@codenomicon.com>
+Content-Type: multipart/mixed; boundary=001a11c3649c712d2a050cc0050f
+
+--001a11c3649c712d2a050cc0050f
+Content-Type: multipart/alternative; boundary=001a11c3649c712d27050cc0050d
+
+--001a11c3649c712d27050cc0050d
+Content-Type: text/plain; charset=UTF-8
+
+Includes encrypted zip file as attachment. password is "test".
+This is the Plain Text part
+
+--001a11c3649c712d27050cc0050d
+Content-Type: text/html; charset=UTF-8
+
+Includes encrypted zip file as attachment. password is &quot;test&quot;.<br/>
+This is the HTML part
+
+--001a11c3649c712d27050cc0050d--
+--001a11c3649c712d2a050cc0050f
+Content-Type: application/zip; name="test.zip"
+Content-Disposition: attachment; filename="test.zip"
+Content-Transfer-Encoding: base64
+X-Attachment-Id: 14af1ab4e8dbb946bc5
+
+UEsDBBQACQAIAP1LMEZzIEVkVQAAAE4AAAAIABwAdGV4dC50eHRVVAkAA26+uFSNvrhUdXgLAAEE
+9gEAAAQUAAAAypmn5/WV8PAdMdAB7WIFh/oQZw9KUG57D9/+Sl/mWzAaa2mMH3uENWiIVoypnqB2
+2GFSwihoRH4krgegW8EXEN3YbDQGBTvfEa6p3d/0V0EfZO4F31BLBwhzIEVkVQAAAE4AAABQSwEC
+HgMUAAkACAD9SzBGcyBFZFUAAABOAAAACAAYAAAAAAABAAAApIEAAAAAdGV4dC50eHRVVAUAA26+
+uFR1eAsAAQT2AQAABBQAAABQSwUGAAAAAAEAAQBOAAAApwAAAAAA
+--001a11c3649c712d2a050cc0050f--
diff --git a/tika-parsers/src/test/resources/test-documents/testRFC822_i18nheaders b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822_i18nheaders
similarity index 97%
rename from tika-parsers/src/test/resources/test-documents/testRFC822_i18nheaders
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822_i18nheaders
index f711a27..6215c25 100644
--- a/tika-parsers/src/test/resources/test-documents/testRFC822_i18nheaders
+++ b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822_i18nheaders
@@ -1,9 +1,9 @@
-From: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= <ke...@dkuug.dk>
-To: Nobody in Particular <a....@example.com>
-Subject: =?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?=
- =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?=
-MIME-Version: 1.0
-Content-type: text/plain
-Content-transfer-encoding: 7bit
-
-Examples taken from RFC 2047. 
+From: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= <ke...@dkuug.dk>
+To: Nobody in Particular <a....@example.com>
+Subject: =?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?=
+ =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?=
+MIME-Version: 1.0
+Content-type: text/plain
+Content-transfer-encoding: 7bit
+
+Examples taken from RFC 2047. 
diff --git a/tika-parsers/src/test/resources/test-documents/testRFC822_normal_zip b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822_normal_zip
similarity index 97%
rename from tika-parsers/src/test/resources/test-documents/testRFC822_normal_zip
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822_normal_zip
index 86dc0c6..4552dc4 100644
--- a/tika-parsers/src/test/resources/test-documents/testRFC822_normal_zip
+++ b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822_normal_zip
@@ -1,61 +1,61 @@
-Return-Path: <ju...@gmail.com>
-X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on
-	virt0003.codenomicon.com
-X-Spam-Level: 
-X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,
-	DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_LOW,
-	SPF_PASS autolearn=ham version=3.3.1
-Received: from mail-wg0-f48.google.com (mail-wg0-f48.google.com [74.125.82.48])
-	by codenomicon.com (8.14.4/8.14.4) with ESMTP id t0G7ZmGs002981
-	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK)
-	for <ju...@codenomicon.com>; Fri, 16 Jan 2015 07:35:54 GMT
-Received: by mail-wg0-f48.google.com with SMTP id l2so19028230wgh.7
-        for <ju...@codenomicon.com>; Thu, 15 Jan 2015 23:35:48 -0800 (PST)
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
-        d=gmail.com; s=20120113;
-        h=mime-version:from:date:message-id:subject:to:content-type;
-        bh=wjcer9ESeBUN8rAEahqeDiOHf3wqBHgaeAboZtkw8qM=;
-        b=S3ezJU84qISP1OzMoH+wLMxn7y1JkcJwlUs4Uvfy+QlaSFcDcG66oxqsxniQ4kWmCC
-         QdQ94iztFvcvTAHuJys+jAH1UeVQKgs6T5lINj73nww3CKGh1B78LpnCRkFS93o19Zvt
-         QDSDtB23y9FlLF/dH6okvTIq7jQXNPuaDDqY8yJtp+DcYfW+QiNIGI83QievgQlWMRiV
-         fHuCbeEofTRP/82vHxUDVoZo/hwx8OAjWqPitrCmxU7Mly8lG5No1CHsKWmWd2Q+yxN3
-         tC3Ptbrig720BdBZKYwWSI6xBS4AY+46+utaloq9Hr0qpaDf5e9eXqq0ef0efDgd2kJT
-         gmyw==
-X-Received: by 10.180.39.204 with SMTP id r12mr3350467wik.11.1421393748083;
- Thu, 15 Jan 2015 23:35:48 -0800 (PST)
-MIME-Version: 1.0
-From: Juha Haaga <ju...@gmail.com>
-Date: Fri, 16 Jan 2015 07:35:46 +0000
-Message-ID: <CA...@mail.gmail.com>
-Subject: Test mail for Tika
-To: Juha Haaga <ju...@codenomicon.com>
-Content-Type: multipart/mixed; boundary=001a11c3649c712d2a050cc0050f
-
---001a11c3649c712d2a050cc0050f
-Content-Type: multipart/alternative; boundary=001a11c3649c712d27050cc0050d
-
---001a11c3649c712d27050cc0050d
-Content-Type: text/plain; charset=UTF-8
-
-Includes a normal, unencrypted zip file as attachment.
-This is the Plain Text part
-
---001a11c3649c712d27050cc0050d
-Content-Type: text/html; charset=UTF-8
-
-Includes &quot;normal&quot;, unencrypted zip file as attachment.<br />
-This is the HTML part
-
---001a11c3649c712d27050cc0050d--
---001a11c3649c712d2a050cc0050f
-Content-Type: application/zip; name="test.zip"
-Content-Disposition: attachment; filename="test.zip"
-Content-Transfer-Encoding: base64
-X-Attachment-Id: 14af1ab4e8dbb946bc5
-
-UEsDBBQAAgAIAKt+MEYEXs11bwAAAHgAAAAIABwAdGV4dC50eHRVVAkAA/IzuVSNvrhUdXgLAAEE
-6AMAAAToAwAADcxBCsJADEbh/Zzi9wCKduV2QIXiQrC5QNuJNFqmQ5MB6+kNvOXHo2tHuESKuD2e
-oPYeDyHQJArP+GuQrJIYfUbNnMd1K8YJPyl4ycyuW4NOS50TBkZZl5FVXQwbSD493lXNaeadj/2/
-Px2bc/gDUEsBAh4DFAACAAgAq34wRgRezXVvAAAAeAAAAAgAGAAAAAAAAQAAAKSBAAAAAHRleHQu
-dHh0VVQFAAPyM7lUdXgLAAEE6AMAAAToAwAAUEsFBgAAAAABAAEATgAAALEAAAAAAA==
---001a11c3649c712d2a050cc0050f--
+Return-Path: <ju...@gmail.com>
+X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on
+	virt0003.codenomicon.com
+X-Spam-Level: 
+X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,
+	DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_LOW,
+	SPF_PASS autolearn=ham version=3.3.1
+Received: from mail-wg0-f48.google.com (mail-wg0-f48.google.com [74.125.82.48])
+	by codenomicon.com (8.14.4/8.14.4) with ESMTP id t0G7ZmGs002981
+	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK)
+	for <ju...@codenomicon.com>; Fri, 16 Jan 2015 07:35:54 GMT
+Received: by mail-wg0-f48.google.com with SMTP id l2so19028230wgh.7
+        for <ju...@codenomicon.com>; Thu, 15 Jan 2015 23:35:48 -0800 (PST)
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+        d=gmail.com; s=20120113;
+        h=mime-version:from:date:message-id:subject:to:content-type;
+        bh=wjcer9ESeBUN8rAEahqeDiOHf3wqBHgaeAboZtkw8qM=;
+        b=S3ezJU84qISP1OzMoH+wLMxn7y1JkcJwlUs4Uvfy+QlaSFcDcG66oxqsxniQ4kWmCC
+         QdQ94iztFvcvTAHuJys+jAH1UeVQKgs6T5lINj73nww3CKGh1B78LpnCRkFS93o19Zvt
+         QDSDtB23y9FlLF/dH6okvTIq7jQXNPuaDDqY8yJtp+DcYfW+QiNIGI83QievgQlWMRiV
+         fHuCbeEofTRP/82vHxUDVoZo/hwx8OAjWqPitrCmxU7Mly8lG5No1CHsKWmWd2Q+yxN3
+         tC3Ptbrig720BdBZKYwWSI6xBS4AY+46+utaloq9Hr0qpaDf5e9eXqq0ef0efDgd2kJT
+         gmyw==
+X-Received: by 10.180.39.204 with SMTP id r12mr3350467wik.11.1421393748083;
+ Thu, 15 Jan 2015 23:35:48 -0800 (PST)
+MIME-Version: 1.0
+From: Juha Haaga <ju...@gmail.com>
+Date: Fri, 16 Jan 2015 07:35:46 +0000
+Message-ID: <CA...@mail.gmail.com>
+Subject: Test mail for Tika
+To: Juha Haaga <ju...@codenomicon.com>
+Content-Type: multipart/mixed; boundary=001a11c3649c712d2a050cc0050f
+
+--001a11c3649c712d2a050cc0050f
+Content-Type: multipart/alternative; boundary=001a11c3649c712d27050cc0050d
+
+--001a11c3649c712d27050cc0050d
+Content-Type: text/plain; charset=UTF-8
+
+Includes a normal, unencrypted zip file as attachment.
+This is the Plain Text part
+
+--001a11c3649c712d27050cc0050d
+Content-Type: text/html; charset=UTF-8
+
+Includes &quot;normal&quot;, unencrypted zip file as attachment.<br />
+This is the HTML part
+
+--001a11c3649c712d27050cc0050d--
+--001a11c3649c712d2a050cc0050f
+Content-Type: application/zip; name="test.zip"
+Content-Disposition: attachment; filename="test.zip"
+Content-Transfer-Encoding: base64
+X-Attachment-Id: 14af1ab4e8dbb946bc5
+
+UEsDBBQAAgAIAKt+MEYEXs11bwAAAHgAAAAIABwAdGV4dC50eHRVVAkAA/IzuVSNvrhUdXgLAAEE
+6AMAAAToAwAADcxBCsJADEbh/Zzi9wCKduV2QIXiQrC5QNuJNFqmQ5MB6+kNvOXHo2tHuESKuD2e
+oPYeDyHQJArP+GuQrJIYfUbNnMd1K8YJPyl4ycyuW4NOS50TBkZZl5FVXQwbSD493lXNaeadj/2/
+Px2bc/gDUEsBAh4DFAACAAgAq34wRgRezXVvAAAAeAAAAAgAGAAAAAAAAQAAAKSBAAAAAHRleHQu
+dHh0VVQFAAPyM7lUdXgLAAEE6AMAAAToAwAAUEsFBgAAAAABAAEATgAAALEAAAAAAA==
+--001a11c3649c712d2a050cc0050f--
diff --git a/tika-parsers/src/test/resources/test-documents/testRFC822_oddfrom b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822_oddfrom
similarity index 97%
rename from tika-parsers/src/test/resources/test-documents/testRFC822_oddfrom
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822_oddfrom
index 1e2648e..fc42d57 100644
--- a/tika-parsers/src/test/resources/test-documents/testRFC822_oddfrom
+++ b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822_oddfrom
@@ -1,2105 +1,2105 @@
-From: <Saved by Windows Internet Explorer 7>
-Subject: Air Permit Programs | Air & Radiation | US EPA
-Date: Fri, 15 Feb 2008 15:01:15 -0800
-MIME-Version: 1.0
-Content-Type: multipart/related;
-	type="text/html";
-	boundary="----=_NextPart_000_0003_01C86FE3.9CC848D0"
-X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198
-
-This is a multi-part message in MIME format.
-
-------=_NextPart_000_0003_01C86FE3.9CC848D0
-Content-Type: text/html;
-	charset="iso-8859-1"
-Content-Transfer-Encoding: quoted-printable
-Content-Location: http://www.epa.gov/air/oaqps/permjmp.html
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" =
-"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
-<HTML lang=3Den xml:lang=3D"en" =
-xmlns=3D"http://www.w3.org/1999/xhtml"><HEAD><TITLE>Air Permit Programs =
-| Air & Radiation | US EPA</TITLE><!-- #BeginTemplate =
-"/Templates/oaqps1.dwt" --><!-- DW6 --><!-- EPA Template version 3.2.1, =
-28 June 2006 --><!-- #BeginEditable "doctitle" -->
-<META content=3D"" name=3DDescription>
-<META content=3D"" name=3DKeywords><!-- #EndEditable --><!-- =
-#BeginEditable "metaElements" -->
-<META content=3D"" name=3DDC.Title>
-<META content=3D"" name=3DDC.Subject>
-<META content=3D"" name=3DDC.Type><!-- For date metadata, use the format =
-YYYY-MM-DD -->
-<META content=3D"" name=3DDC.Date.modified>
-<META content=3D"" name=3DDC.Date><!-- #EndEditable -->
-<META content=3Den|sp name=3DDC.Language>
-<META content=3D"" name=3DDC.Creator>
-<META http-equiv=3DContent-Style-Type content=3Dtext/css>
-<META http-equiv=3DContent-Type content=3D"text/html; =
-charset=3Diso-8859-1"><LINK=20
-href=3D"http://purl.org/dc/elements/1.1/" rel=3Dschema.DC><LINK =
-title=3D"ICRA labels"=20
-href=3D"http://www.epa.gov/labels.rdf" type=3Dapplication/rdf+xml =
-rel=3Dmeta>
-<STYLE type=3Dtext/css media=3Dscreen>@import url( =
-http://www.epa.gov/epafiles/s/epa.css );
-</STYLE>
-<!--[if lt IE 7]>
-		<link rel=3D"stylesheet" type=3D"text/css" =
-href=3D"http://www.epa.gov/epafiles/s/ie.css" />
-	<![endif]--><LINK media=3Dprint =
-href=3D"http://www.epa.gov/epafiles/s/print.css"=20
-type=3Dtext/css rel=3Dstylesheet>
-<SCRIPT src=3D"http://www.epa.gov/epafiles/js/epa-core.js"=20
-type=3Dtext/javascript></SCRIPT>
-
-<META content=3D"MSHTML 6.00.6000.16544" name=3DGENERATOR></HEAD>
-<BODY>
-<P class=3Dskip><A id=3Dskiptop title=3D"Jump to main content."=20
-href=3D"http://www.epa.gov/air/oaqps/permjmp.html#content">Jump to main=20
-content.</A></P>
-<DIV id=3Dheader><!-- START EPA HEADER -->
-<DIV id=3Dlogo><A title=3D"US EPA home page" =
-href=3D"http://www.epa.gov/"><IMG=20
-height=3D110 alt=3D"[logo] US EPA"=20
-src=3D"http://www.epa.gov/epafiles/images/logo_epaseal.gif" =
-width=3D100></A></DIV>
-<DIV id=3Dareaname><!-- START AREA NAME -->
-<P>Air Quality Planning &amp; Standards</P></DIV><!-- END AREA NAME =
---><!-- START SEARCH CONTROLS -->
-<FORM id=3DEPAsearch action=3Dhttp://nlquery.epa.gov/epasearch/epasearch =
-method=3Dget><!-- START AREA SPECIFIC LINKS AND SEARCH BOX  --><!-- =
-CHANGE links to point to your own recent additions and contact pages =
---><!-- REMOVE recent additions link if your area doesn't have one -->
-<P><A href=3D"http://www.epa.gov/air/oaqps/contact.html">Contact Us</A> =
-<SPAN=20
-class=3Dsearch><STRONG>Search:</STRONG> <INPUT type=3Dhidden =
-value=3Dairprogm=20
-name=3Dfld> <INPUT type=3Dhidden value=3D"Air Quality Planning &amp; =
-Standards"=20
-name=3Dareaname> <INPUT type=3Dhidden=20
-value=3Dhttp://www.epa.gov/air/oaqps/contact.html name=3Dareacontacts> =
-<!-- AREA ADVANCED SEARCH URL HERE (OPTIONAL) --><INPUT type=3Dhidden=20
-value=3Dhttp://www.epa.gov/air/oarsrch.html name=3Dareasearchurl> <!-- =
-THE REMAINING HIDDEN INPUTS ARE USED BY THE SEARCH ENGINE - DO NOT EDIT =
---><INPUT=20
-type=3Dhidden value=3Depafiles_default.xsl name=3Dresult_template> =
-<INPUT type=3Dhidden=20
-value=3Dsamplefilt.hts name=3Dfilter> <INPUT id=3DEPAall type=3Dradio =
-value=3Depa=20
-name=3Dtypeofsearch><LABEL for=3DEPAall>All EPA</LABEL> <INPUT =
-id=3DAreaall type=3Dradio=20
-CHECKED value=3Darea name=3Dtypeofsearch><LABEL for=3DAreaall>This =
-Area</LABEL> <INPUT=20
-id=3Dsearchbox name=3Dquerytext> <INPUT id=3Dsearchbutton type=3Dsubmit =
-value=3DGo name=3Dsubmit></SPAN> </P></FORM><!-- END SEARCH CONTROLS -->
-<UL><!-- BEGIN BREADCRUMBS -->
-  <LI class=3Dfirst>You are here: <A href=3D"http://www.epa.gov/">EPA =
-Home</A>=20
-  <LI><A href=3D"http://www.epa.gov/air/">Air &amp; Radiation</A> <!-- =
-START AREA BREADCRUMBS --><!-- #BeginEditable "breadcrumbs" -->
-  <LI>Air Permit Programs=20
-<!-- #EndEditable --><!-- END AREA BREADCRUMBS --></LI></UL><!-- END =
-BREADCRUMBS --></DIV><!-- END EPA HEADER -->
-<HR class=3Dskip>
-
-<P class=3Dskip><A id=3Dpagecontents></A><A id=3Dpagetop></A></P>
-<DIV id=3Dcontent><!-- BEGIN PAGE CONTENTS --><!-- EPA SITE-WIDE =
-ANNOUNCEMENTS --><!-- DO NOT REMOVE - this code is used for emergency =
-messages --><!-- If this page is a Program Office or a Topics home page, =
-CHANGE "sitewidec" TO "sitewideb" -->
-<P id=3Dsitewidec></P><!-- BEGIN PAGE NAME -->
-<H1><!-- #BeginEditable "PageName" -->Air Permit Programs <!-- If using =
-a right-aligned image next to the page name, insert it here=20
-			- remember to include the align=3D"right" attribute in the IMG tag =
---><!-- #EndEditable --></H1><!-- END PAGE NAME --><!-- BEGIN CONTENT =
-AREA --><!-- #BeginEditable "content" -->
-<TABLE cellSpacing=3D4 cellPadding=3D4 width=3D450 border=3D0>
-  <TBODY>
-  <TR>
-    <TD style=3D"BACKGROUND-COLOR: #e1ebf4; TEXT-ALIGN: center"><A=20
-      href=3D"http://www.epa.gov/airmarkets/">Title IV Permits</A> | <A=20
-      href=3D"http://www.epa.gov/air/oaqps/permits/index.html">Title V =
-Permits</A>=20
-      | <A href=3D"http://www.epa.gov/nsr/">New Source =
-Review</A></TD></TR>
-  <TR>
-    <TD>
-      <P>This web site provides information and links on the three major =
-permit=20
-      programs required by the Clean Air Act: </P>
-      <UL>
-        <LI><A href=3D"http://www.epa.gov/acidrain/">acid rain =
-permits</A> (called=20
-        <EM>Title IV permits</EM>),=20
-        <LI><A href=3D"http://www.epa.gov/nsr/">preconstruction =
-permits</A>=20
-        (called <EM>New Source Review permits</EM>), and=20
-        <LI><A =
-href=3D"http://www.epa.gov/air/oaqps/permits/index.html">operating=20
-        permits</A> (called <EM>Title V permits</EM>). </LI></UL>It also =
-allows=20
-      you to view some permits on-line, engineering reports for specific =
-
-      facilities, and correspondence from regional, state and local air=20
-      agencies.=20
-      <P>Each year in the U.S., industrial operations emit nearly 100 =
-million=20
-      tons of pollutants into the air. These include pollutants that =
-make=20
-      breathing difficult, form urban smog, impair visibility, and =
-attack=20
-      ecosystems. Some of these pollutants can cause cancer or other =
-serious=20
-      health effects. Some of the many pollutants emitted into the air =
-each year=20
-      are sulfur dioxide, nitrogen dioxides, carbon monoxide, benzene, =
-mercury=20
-      and dioxin. Many of the sources of this air pollution are large=20
-      facilities, such as petroleum refineries and chemical plants, that =
-can=20
-      have literally thousands of potential emission points. Other =
-pollution=20
-      sources can be smaller, such as gasoline filling stations, dry =
-cleaning=20
-      operations, and paint spray booths. Several of these air pollution =
-
-      sources, particularly the larger sources, are required by federal =
-measures=20
-      to reduce emissions and to obtain air pollution permits to ensure=20
-      compliance. </P>
-      <P>The acid rain program is a market-based system designed to =
-lower sulfur=20
-      dioxide and nitrogen dioxide pollution levels. Reductions in =
-emissions are=20
-      obtained through a program of emission allowances. The allowance =
-hat each=20
-      facility owns must be reflected in its acid rain permit, which =
-also=20
-      includes emissions monitoring and other requirements. </P>
-      <P>The new source review program requires that industrial sources =
-install=20
-      good pollution control technology when they construct or =
-significantly=20
-      modify their facilities. </P>
-      <P>The operating permit program requires that major industrial =
-sources and=20
-      certain other sources obtain a permit that consolidates all of the =
-
-      applicable requirements for the facility into one document. The =
-purpose of=20
-      title V permits is to reduce violations of air pollution laws and =
-improve=20
-      enforcement of those laws. </P>
-      <P></P></TD></TR></TBODY></TABLE><!-- #EndEditable --><!-- BEGIN =
-AREA FOOTER --><!-- ADD TEXT/LINKS FOR AREA FOOTER WITHIN THIS PARAGRAPH =
-TAG -->
-<P class=3Dignore id=3Dareafooter><A=20
-href=3D"http://www.epa.gov/air/oaqps/publicat.html">Publications</A> | =
-<A=20
-href=3D"http://www.epa.gov/air/oaqps/org/index.html">Organization</A> | =
-<A=20
-href=3D"http://www.epa.gov/ttn/index.html">Technical =
-Information</A></P><!-- END AREA FOOTER --></DIV><!-- END CONTENT -->
-<HR class=3Dskip>
-
-<DIV id=3Darea-nav><!-- BEGIN LEFT SIDEBAR NAVIGATION -->
-<H3 class=3Dskip>Local Navigation</H3>
-<UL>
-  <LI><A href=3D"http://www.epa.gov/air/oaqps/index.html">Air Quality =
-Planning=20
-  &amp; Standards Home</A>=20
-  <LI><A href=3D"http://www.epa.gov/air/oaqps/cleanair.html">Air =
-Quality</A>=20
-  <LI><A =
-href=3D"http://www.epa.gov/air/visibility/index.html">Visibility</A>=20
-  <LI><A =
-href=3D"http://www.epa.gov/air/oaqps/permits/index.html">Permits</A>=20
-  <LI><A =
-href=3D"http://www.epa.gov/air/oaqps/emissns.html">Emissions</A>=20
-  <LI><A href=3D"http://www.epa.gov/air/toxicair/index.html">Toxic Air=20
-  Pollutants</A>=20
-  <LI><A =
-href=3D"http://www.epa.gov/air/oaqps/projects.html">Projects</A>=20
-</LI></UL></DIV><!-- END LEFT SIDEBAR NAVIGATION -->
-<HR class=3Dskip>
-
-<DIV id=3Dfooter><!-- BEGIN FOOTER -->
-<UL id=3Dglobalfooter>
-  <LI><A href=3D"http://www.epa.gov/">EPA Home</A>=20
-  <LI><A href=3D"http://www.epa.gov/epafiles/usenotice.htm">Privacy and =
-Security=20
-  Notice</A> <!-- BEGIN AREA COMMENTS LINK --><!-- CHANGE link to point =
-to your own contact page -->
-  <LI class=3Dlast><A =
-href=3D"http://www.epa.gov/air/oaqps/contact.html">Contact=20
-  Us</A> <!-- END AREA COMMENTS LINK --></LI></UL></DIV><!-- END FOOTER =
--->
-<P class=3Dskip><A id=3Dskipbot title=3D"Jump to main content."=20
-href=3D"http://www.epa.gov/air/oaqps/permjmp.html#content">Jump to main=20
-content.</A></P><!-- #EndTemplate --></BODY></HTML>
-
-------=_NextPart_000_0003_01C86FE3.9CC848D0
-Content-Type: image/gif
-Content-Transfer-Encoding: base64
-Content-Location: http://www.epa.gov/epafiles/images/logo_epaseal.gif
-
-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
-Ej/xFF/xFn/xGJ/xGr/xHN/xHv/xIN/wAQEAOw==
-
-------=_NextPart_000_0003_01C86FE3.9CC848D0
-Content-Type: text/css;
-	charset="iso-8859-1"
-Content-Transfer-Encoding: quoted-printable
-Content-Location: http://www.epa.gov/air/oaqps/epa-content.css
-
-#content .right {
-	FLOAT: right
-}
-#content .center {
-	TEXT-ALIGN: center
-}
-#content .left {
-	FLOAT: left
-}
-#content .clear {
-	CLEAR: both
-}
-#content INS {
-	TEXT-DECORATION: none
-}
-#content ABBR {
-	CURSOR: help; BORDER-BOTTOM: #d0d0d0 1px dashed; FONT-VARIANT: =
-small-caps
-}
-#content ACRONYM {
-	CURSOR: help; BORDER-BOTTOM: #d0d0d0 1px dashed; FONT-VARIANT: =
-small-caps
-}
-#content CODE {
-	FONT: 1em "Lucida Console", "Andale Mono", "monotype.com", "Bitstream =
-Vera Sans Mono", monospace
-}
-#content PRE {
-	FONT: 1em "Lucida Console", "Andale Mono", "monotype.com", "Bitstream =
-Vera Sans Mono", monospace
-}
-#content HR {
-	CLEAR: both; BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; =
-MARGIN: 3px 0px; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px =
-solid; BACKGROUND-COLOR: #ccc
-}
-#content P.pagetop {
-	CLEAR: both; FONT-SIZE: 0.8em; BACKGROUND: =
-url(http://www.epa.gov/epafiles/s/i/pagetop.gif) no-repeat 0px 50%; =
-MARGIN: 1em 0px
-}
-#content P.pagetop A {
-	PADDING-LEFT: 8px; COLOR: #666; TEXT-DECORATION: none
-}
-#content P.pagetop A:hover {
-	TEXT-DECORATION: underline
-}
-#content .imgcontainer-r {
-	BORDER-RIGHT: #ccc 2px solid; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 2px =
-solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; BORDER-LEFT: #ccc 2px =
-solid; PADDING-TOP: 0px; BORDER-BOTTOM: #ccc 2px solid; =
-BACKGROUND-COLOR: #ffffdb
-}
-#content .imgcontainer-l {
-	BORDER-RIGHT: #ccc 2px solid; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 2px =
-solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; BORDER-LEFT: #ccc 2px =
-solid; PADDING-TOP: 0px; BORDER-BOTTOM: #ccc 2px solid; =
-BACKGROUND-COLOR: #ffffdb
-}
-#content .imgcontainer-r IMG {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
-0px -3px; PADDING-TOP: 0px
-}
-#content .imgcontainer-l IMG {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
-0px -3px; PADDING-TOP: 0px
-}
-#content .imgcontainer-r {
-	FLOAT: right; MARGIN: 0px 0px 6px 6px
-}
-#content .imgcontainer-l {
-	FLOAT: left; MARGIN: 0px 6px 6px 0px
-}
-#content .imgcontainer-l .caption A {
-	TEXT-DECORATION: none
-}
-#content .imgcontainer-r .caption A {
-	TEXT-DECORATION: none
-}
-#content .imgcontainer-r .caption A:hover {
-	TEXT-DECORATION: underline
-}
-#content .imgcontainer-l .caption A:hover {
-	TEXT-DECORATION: underline
-}
-#content .caption A:hover {
-	TEXT-DECORATION: underline
-}
-#content .caption {
-	PADDING-RIGHT: 4px; PADDING-LEFT: 4px; FONT-SIZE: 0.85em; =
-PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-TOP: 2px
-}
-#content UL {
-	MARGIN-TOP: 0px; LIST-STYLE-IMAGE: =
-url(http://www.epa.gov/epafiles/s/i/bu_sftblue.gif)
-}
-#content UL OL {
-	LIST-STYLE-IMAGE: none
-}
-#content LI {
-	MARGIN-TOP: 0px; PADDING-LEFT: 0px; MARGIN-LEFT: 10px; PADDING-TOP: 0px
-}
-#content LI LI {
-	PADDING-LEFT: 0px; MARGIN-LEFT: 0px
-}
-#content H1 {
-	FONT-SIZE: 1.9em; MARGIN: 0px 0px 0.68em; LINE-HEIGHT: 1em
-}
-#content H2 {
-	FONT-SIZE: 1.6em; MARGIN: 1.21em 0px 0.4em; LINE-HEIGHT: 1em
-}
-#content H3 {
-	FONT-SIZE: 1.35em; MARGIN: 1.44em 0px 0.48em; LINE-HEIGHT: 1em
-}
-#content H4 {
-	FONT-SIZE: 1.2em; MARGIN: 1.62em 0px 0.54em; LINE-HEIGHT: 1.08em
-}
-#content H5 {
-	FONT-SIZE: 1em; MARGIN: 1.95em 0px 0.65em; LINE-HEIGHT: 1.3em
-}
-#content H6 {
-	FONT-SIZE: 0.8em; MARGIN: 2.43em 0px 0.81em; LINE-HEIGHT: 1.62em
-}
-#content P {
-	MARGIN-TOP: 1.3em; FONT-SIZE: 1em; MARGIN-BOTTOM: 1.3em; LINE-HEIGHT: =
-1.3em
-}
-#content #sitewidea {
-	FONT-WEIGHT: bold; FONT-SIZE: 1em; COLOR: #c33
-}
-#content #sitewideb {
-	FONT-WEIGHT: bold; FONT-SIZE: 1em; COLOR: #c33
-}
-#content #sitewidec {
-	FONT-WEIGHT: bold; FONT-SIZE: 1em; COLOR: #c33
-}
-#content .warning {
-	FONT-WEIGHT: bold; FONT-SIZE: 1em; COLOR: #c33
-}
-#content .fileinfo {
-	FONT-SIZE: 0.85em; COLOR: #666
-}
-#content .epaltsansbold {
-	FONT-WEIGHT: bold; FONT-SIZE: 0.85em; FONT-FAMILY: Arial, Helvetica, =
-sans-serif
-}
-#content .epaltsans {
-	FONT-SIZE: 0.9em; FONT-FAMILY: Arial, Helvetica, sans-serif
-}
-#content .epaLtSans {
-	FONT-SIZE: 0.9em; FONT-FAMILY: Arial, Helvetica, sans-serif
-}
-#content .boxmulti {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0.9em; BACKGROUND: =
-url(http://www.epa.gov/epafiles/s/i/curves-bottom.gif) #f1f1f1 no-repeat =
-left bottom; FLOAT: right; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 1em =
-0.5em; WIDTH: 200px; PADDING-TOP: 0px
-}
-#content .boxnat {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0.9em; BACKGROUND: =
-url(http://www.epa.gov/epafiles/s/i/curves-bottom.gif) #f1f1f1 no-repeat =
-left bottom; FLOAT: right; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 1em =
-0.5em; WIDTH: 200px; PADDING-TOP: 0px
-}
-#content .boxalert {
-	BORDER-RIGHT: #c33 2px solid; PADDING-RIGHT: 0px; BORDER-TOP: #c33 2px =
-solid; PADDING-LEFT: 0px; FONT-SIZE: 0.9em; FLOAT: right; =
-PADDING-BOTTOM: 0px; MARGIN: 0px 0px 5px 5px; BORDER-LEFT: #c33 2px =
-solid; WIDTH: 200px; PADDING-TOP: 0px; BORDER-BOTTOM: #c33 2px solid; =
-BACKGROUND-COLOR: #f1f1f1
-}
-#content .box {
-	BORDER-RIGHT: #ccc 2px solid; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 2px =
-solid; PADDING-LEFT: 0px; FONT-SIZE: 0.9em; PADDING-BOTTOM: 0px; MARGIN: =
-5px 5px 5px 0px; BORDER-LEFT: #ccc 2px solid; WIDTH: 50%; PADDING-TOP: =
-0px; BORDER-BOTTOM: #ccc 2px solid
-}
-#content .boxmulti H5 {
-	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FONT-SIZE: 1em; PADDING-BOTTOM: =
-2px; MARGIN: 0px 0px 0.2em; COLOR: #fff; PADDING-TOP: 2px; =
-BACKGROUND-COLOR: #5c9261; TEXT-ALIGN: center
-}
-#content .boxnat H5 {
-	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FONT-SIZE: 1em; PADDING-BOTTOM: =
-2px; MARGIN: 0px 0px 0.2em; COLOR: #fff; PADDING-TOP: 2px; =
-BACKGROUND-COLOR: #5c9261; TEXT-ALIGN: center
-}
-#content .boxalert H5 {
-	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FONT-SIZE: 1em; PADDING-BOTTOM: =
-2px; MARGIN: 0px 0px 0.2em; COLOR: #fff; PADDING-TOP: 2px; =
-BACKGROUND-COLOR: #5c9261; TEXT-ALIGN: center
-}
-#content .box H5 {
-	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FONT-SIZE: 1em; PADDING-BOTTOM: =
-2px; MARGIN: 0px 0px 0.2em; COLOR: #fff; PADDING-TOP: 2px; =
-BACKGROUND-COLOR: #5c9261; TEXT-ALIGN: center
-}
-#content .boxmulti H5 {
-	BACKGROUND: url(http://www.epa.gov/epafiles/s/i/curves-top.gif) #5c9261 =
-no-repeat left top
-}
-#content .boxnat H5 {
-	BACKGROUND: url(http://www.epa.gov/epafiles/s/i/curves-top.gif) #5c9261 =
-no-repeat left top
-}
-#content .boxnat H5 {
-	BACKGROUND-COLOR: #369
-}
-#content .boxalert H5 {
-	BACKGROUND-COLOR: #c33
-}
-#content .box H5 {
-	COLOR: #000; BACKGROUND-COLOR: #ddd; TEXT-ALIGN: left
-}
-#content .boxmulti UL LI {
-	LIST-STYLE-IMAGE: url(http://www.epa.gov/epafiles/s/i/bu_sftgrn.gif)
-}
-#content .boxalert UL LI {
-	LIST-STYLE-IMAGE: url(http://www.epa.gov/epafiles/s/i/bu_alertred.gif)
-}
-#content .centered {
-	MARGIN: 5px auto
-}
-#content .righted {
-	FLOAT: right; MARGIN: 5px 0px 5px 5px
-}
-#content .centered H5 {
-	TEXT-ALIGN: center
-}
-#content .righted H5 {
-	TEXT-ALIGN: center
-}
-#content .color1 {
-	BORDER-RIGHT: #363 2px solid; BORDER-TOP: #363 2px solid; BORDER-LEFT: =
-#363 2px solid; BORDER-BOTTOM: #363 2px solid
-}
-#content .color2 {
-	BORDER-RIGHT: #006 2px solid; BORDER-TOP: #006 2px solid; BORDER-LEFT: =
-#006 2px solid; BORDER-BOTTOM: #006 2px solid
-}
-#content .color1 H5 {
-	COLOR: #fff; BACKGROUND-COLOR: #5c9261
-}
-#content .color1 UL LI {
-	LIST-STYLE-IMAGE: url(http://www.epa.gov/epafiles/s/i/bu_sftgrn.gif)
-}
-#content .color2 H5 {
-	COLOR: #fff; BACKGROUND-COLOR: #369
-}
-#content .boxmulti UL {
-	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
-}
-#content .boxmulti OL {
-	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
-}
-#content .boxnat UL {
-	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
-}
-#content .boxnat OL {
-	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
-}
-#content .boxalert UL {
-	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
-}
-#content .boxalert OL {
-	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
-}
-#content .box UL {
-	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
-}
-#content .box OL {
-	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
-}
-#content .boxmulti LI {
-	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
-MARGIN-LEFT: -1em; PADDING-TOP: 0px
-}
-#content .boxnat LI {
-	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
-MARGIN-LEFT: -1em; PADDING-TOP: 0px
-}
-#content .boxalert LI {
-	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
-MARGIN-LEFT: -1em; PADDING-TOP: 0px
-}
-#content .box LI {
-	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
-MARGIN-LEFT: -1em; PADDING-TOP: 0px
-}
-#content .boxmulti LI LI {
-	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
-MARGIN-LEFT: -2em; PADDING-TOP: 0px
-}
-#content .boxnat LI LI {
-	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
-MARGIN-LEFT: -2em; PADDING-TOP: 0px
-}
-#content .boxalert LI LI {
-	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
-MARGIN-LEFT: -2em; PADDING-TOP: 0px
-}
-#content .box LI LI {
-	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
-MARGIN-LEFT: -2em; PADDING-TOP: 0px
-}
-#content .boxmulti P {
-	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 0px; MARGIN: =
-0.5em 0px; PADDING-TOP: 0px
-}
-#content .boxnat P {
-	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 0px; MARGIN: =
-0.5em 0px; PADDING-TOP: 0px
-}
-#content .boxalert P {
-	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 0px; MARGIN: =
-0.5em 0px; PADDING-TOP: 0px
-}
-#content .box P {
-	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 0px; MARGIN: =
-0.5em 0px; PADDING-TOP: 0px
-}
-#content .boxmulti A {
-	TEXT-DECORATION: none
-}
-#content .boxnat A {
-	TEXT-DECORATION: none
-}
-#content .boxalert A {
-	TEXT-DECORATION: none
-}
-#content .box A {
-	TEXT-DECORATION: none
-}
-#content .boxmulti A:hover {
-	TEXT-DECORATION: underline
-}
-#content .boxnat A:hover {
-	TEXT-DECORATION: underline
-}
-#content .boxalert A:hover {
-	TEXT-DECORATION: underline
-}
-#content .box A:hover {
-	TEXT-DECORATION: underline
-}
-#content .boxsimple {
-	BORDER-RIGHT: #ccc 2px solid; BORDER-TOP: #ccc 2px solid; FONT-SIZE: =
-0.9em; FLOAT: right; MARGIN: 0px 0px 1em 1em; BORDER-LEFT: #ccc 2px =
-solid; WIDTH: 15%; BORDER-BOTTOM: #ccc 2px solid
-}
-#content .boxsimple H5 {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 1em; PADDING-BOTTOM: =
-0px; MARGIN: 0px; PADDING-TOP: 0px
-}
-#content .boxsimple P {
-	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 0px; MARGIN: =
-0.5em 0px; PADDING-TOP: 0px
-}
-#content P.pullquote {
-	BORDER-RIGHT: #ccc 0px solid; PADDING-RIGHT: 0.5em; BORDER-TOP: #ccc =
-2px solid; PADDING-LEFT: 0.5em; FONT-WEIGHT: bold; FONT-SIZE: 1.1em; =
-FLOAT: right; PADDING-BOTTOM: 0.5em; MARGIN: 0.5em 0px 0.5em 1em; =
-BORDER-LEFT: #ccc 0px solid; COLOR: #333; LINE-HEIGHT: normal; =
-PADDING-TOP: 0.5em; BORDER-BOTTOM: #ccc 2px solid; FONT-STYLE: italic
-}
-#content P.pullquote SPAN.author {
-	FONT-SIZE: 0.8em; FONT-STYLE: normal
-}
-#content .disclaimer {
-	BORDER-RIGHT: #ccc 2px solid; PADDING-RIGHT: 0.3em; BORDER-TOP: #ccc =
-2px solid; PADDING-LEFT: 0.3em; FONT-SIZE: 0.9em; BACKGROUND: #f1f1f1; =
-FLOAT: right; PADDING-BOTTOM: 0.3em; MARGIN: 1em 0px 1em 1em; =
-BORDER-LEFT: #ccc 2px solid; WIDTH: 20%; LINE-HEIGHT: 1.1; PADDING-TOP: =
-0.3em; BORDER-BOTTOM: #ccc 2px solid
-}
-#content .disclaimer-wide {
-	BORDER-RIGHT: #ccc 2px solid; PADDING-RIGHT: 0.3em; BORDER-TOP: #ccc =
-2px solid; PADDING-LEFT: 0.3em; FONT-SIZE: 0.9em; BACKGROUND: #f1f1f1; =
-FLOAT: right; PADDING-BOTTOM: 0.3em; MARGIN: 1em 0px 1em 1em; =
-BORDER-LEFT: #ccc 2px solid; WIDTH: 20%; LINE-HEIGHT: 1.1; PADDING-TOP: =
-0.3em; BORDER-BOTTOM: #ccc 2px solid
-}
-#content P#archive {
-	BORDER-RIGHT: #ccc 2px solid; PADDING-RIGHT: 0.3em; BORDER-TOP: #ccc =
-2px solid; PADDING-LEFT: 0.3em; FONT-SIZE: 0.9em; BACKGROUND: #f1f1f1; =
-FLOAT: right; PADDING-BOTTOM: 0.3em; MARGIN: 1em 0px 1em 1em; =
-BORDER-LEFT: #ccc 2px solid; WIDTH: 20%; LINE-HEIGHT: 1.1; PADDING-TOP: =
-0.3em; BORDER-BOTTOM: #ccc 2px solid
-}
-#content .disclaimer-wide {
-	PADDING-RIGHT: 0.3em; PADDING-LEFT: 0.3em; FLOAT: none; PADDING-BOTTOM: =
-0.3em; MARGIN: 1em 10%; WIDTH: auto; PADDING-TOP: 0.3em; TEXT-ALIGN: =
-center
-}
-#content P#archive {
-	PADDING-RIGHT: 0.3em; PADDING-LEFT: 30px; BACKGROUND: =
-url(http://www.epa.gov/epafiles/images/epafiles_misc_outdatediconmini.gif=
-) #f1f1f1 no-repeat 0.3em 50%; FLOAT: none; PADDING-BOTTOM: 0.3em; =
-MARGIN: 0px 0px 0.3em; WIDTH: 350px; PADDING-TOP: 0.3em
-}
-#content B.cn {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 1px; BACKGROUND: =
-url(http://www.epa.gov/epafiles/s/i/white.gif) no-repeat; =
-PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 10px; LINE-HEIGHT: 1px; =
-PADDING-TOP: 0px; POSITION: absolute; HEIGHT: 10px
-}
-#content B.tl {
-	BACKGROUND-POSITION: left top; LEFT: -1px; TOP: -1px
-}
-#content B.tr {
-	BACKGROUND-POSITION: right top; RIGHT: -1px; TOP: -1px
-}
-#content TABLE.table {
-	MARGIN: 0px 0px 1em; BORDER-COLLAPSE: collapse
-}
-#content TABLE.tablebord {
-	MARGIN: 0px 0px 1em; BORDER-COLLAPSE: collapse
-}
-#content TABLE.table CAPTION {
-	FONT-WEIGHT: bold; PADDING-BOTTOM: 6px
-}
-#content TABLE.tablebord CAPTION {
-	FONT-WEIGHT: bold; PADDING-BOTTOM: 6px
-}
-#content TABLE.table TH {
-	BORDER-RIGHT: #ccc 0px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 0px =
-solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: #ccc 0px =
-solid; PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px solid
-}
-#content TABLE.table TD {
-	BORDER-RIGHT: #ccc 0px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 0px =
-solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: #ccc 0px =
-solid; PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px solid
-}
-#content TABLE.tablebord TH {
-	BORDER-RIGHT: #ccc 0px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 0px =
-solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: #ccc 0px =
-solid; PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px solid
-}
-#content TABLE.tablebord TD {
-	BORDER-RIGHT: #ccc 0px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 0px =
-solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: #ccc 0px =
-solid; PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px solid
-}
-#content TABLE.table THEAD {
-	BACKGROUND: #ccc; COLOR: #000
-}
-#content TABLE.table TFOOT {
-	BACKGROUND: #ccc; COLOR: #000
-}
-#content TABLE.tablebord THEAD {
-	BACKGROUND: #ccc; COLOR: #000
-}
-#content TABLE.tablebord TFOOT {
-	BACKGROUND: #ccc; COLOR: #000
-}
-#content TABLE.table TH {
-	BORDER-RIGHT: #ddd 1px solid; BORDER-TOP: #ddd 0px solid; BACKGROUND: =
-#ccc; BORDER-LEFT: #ddd 1px solid; COLOR: #000; BORDER-BOTTOM: #ddd 0px =
-solid
-}
-#content TABLE.tablebord TH {
-	BORDER-RIGHT: #ddd 1px solid; BORDER-TOP: #ddd 0px solid; BACKGROUND: =
-#ccc; BORDER-LEFT: #ddd 1px solid; COLOR: #000; BORDER-BOTTOM: #ddd 0px =
-solid
-}
-#content TABLE.zebra TR.rowTint {
-	BACKGROUND-COLOR: #f1f1f1
-}
-#content TABLE.tablebord TR.rowTint {
-	BACKGROUND-COLOR: #f1f1f1
-}
-#content TABLE.tablebord {
-	BORDER-RIGHT: #ccc 0px solid; BORDER-TOP: #ccc 1px solid; BORDER-LEFT: =
-#ccc 1px solid; BORDER-BOTTOM: #ccc 0px solid
-}
-#content TABLE.tablebord TH {
-	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
-1px; BORDER-RIGHT-WIDTH: 1px
-}
-#content TABLE.tablebord TD {
-	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
-1px; BORDER-RIGHT-WIDTH: 1px
-}
-#content TABLE.qfinder {
-	PADDING-BOTTOM: 0.2em; MARGIN: 0px 0px 1em; FONT: 90%/1.1em Arial, =
-Helvetica, sans-serif; WIDTH: 100%; BORDER-BOTTOM: #5c9261 1px solid; =
-BORDER-COLLAPSE: collapse
-}
-#content TABLE.qfinder THEAD TH {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: =
-url(http://www.epa.gov/epafiles/s/i/qf-r.gif) #5c9261 no-repeat right =
-top; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px
-}
-#content TABLE.qfinder THEAD TH P {
-	PADDING-RIGHT: 8px; PADDING-LEFT: 8px; FONT-WEIGHT: bold; FONT-SIZE: =
-1.3em; BACKGROUND: url(http://www.epa.gov/epafiles/s/i/qf-l.gif) =
-no-repeat; PADDING-BOTTOM: 3px; MARGIN: 0px 8px 0px 0px; COLOR: #fff; =
-PADDING-TOP: 3px; TEXT-ALIGN: left
-}
-#content TABLE.qfinder THEAD TD {
-	PADDING-RIGHT: 8px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
-PADDING-TOP: 0px
-}
-#content TABLE.qfinder TBODY TD {
-	VERTICAL-ALIGN: top; LINE-HEIGHT: 1.2em; PADDING-TOP: 0.1em
-}
-#content TABLE.qfinder A {
-	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 7px; PADDING-BOTTOM: =
-0px; MARGIN: 0px; PADDING-TOP: 0px; TEXT-DECORATION: none
-}
-#content TABLE.qfinder TD A:hover {
-	BACKGROUND-COLOR: #f1f1f1; TEXT-DECORATION: none
-}
-#content TABLE.qfinder TD A.more {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 17px; BACKGROUND: =
-url(http://www.epa.gov/epahome/images/more_topic.gif) no-repeat 7px 3px; =
-PADDING-BOTTOM: 0px; PADDING-TOP: 0px
-}
-#content FORM.form LABEL {
-	DISPLAY: block; FLOAT: left; MARGIN-BOTTOM: 10px; WIDTH: 150px
-}
-#content FORM.form INPUT {
-	DISPLAY: block; FLOAT: left; MARGIN-BOTTOM: 10px; WIDTH: 150px
-}
-#content FORM.form FIELDSET {
-	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
-none; BORDER-BOTTOM-STYLE: none
-}
-#content FORM.form LABEL {
-	PADDING-RIGHT: 10px; WIDTH: 100px; TEXT-ALIGN: right
-}
-#content FORM.form BR {
-	CLEAR: left
-}
-#content FORM.form INPUT#formsubmit {
-	MARGIN: 10px 0px 10px 110px; WIDTH: auto
-}
-
-------=_NextPart_000_0003_01C86FE3.9CC848D0
-Content-Type: text/css;
-	charset="iso-8859-1"
-Content-Transfer-Encoding: quoted-printable
-Content-Location: http://www.epa.gov/epafiles/s/epa.css
-
-@import url( epa-content.css );
-.skip {
-	FONT-SIZE: 0px; LEFT: 0px; OVERFLOW: hidden; WIDTH: 0px; =
-BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
-none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; BORDER-BOTTOM-STYLE: =
-none
-}
-.printOnly {
-	DISPLAY: none
-}
-IMG {
-	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
-none; BORDER-BOTTOM-STYLE: none
-}
-A IMG {
-	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
-none; BORDER-BOTTOM-STYLE: none
-}
-:link IMG {
-	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
-none; BORDER-BOTTOM-STYLE: none
-}
-:visited IMG {
-	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
-none; BORDER-BOTTOM-STYLE: none
-}
-A:link {
-	COLOR: #33c
-}
-A:visited {
-	COLOR: #609
-}
-A:hover {
-	COLOR: #933
-}
-A:active {
-	COLOR: #933
-}
-BODY {
-	PADDING-RIGHT: 0px; MIN-WIDTH: 760px; PADDING-LEFT: 0px; BACKGROUND: =
-url(http://www.epa.gov/epafiles/s/i/epafiles_misc_bg.gif) #fff repeat-y =
-0px 50%; PADDING-BOTTOM: 0px; MARGIN: 0px 5% 40px 0px; FONT: 75%/1.3 =
-Verdana, Tahoma, sans-serif; COLOR: #000; PADDING-TOP: 0px
-}
-#header {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: =
-url(http://www.epa.gov/epafiles/images/epafiles_ban_topepa.gif) =
-no-repeat right top; LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 1px 0px =
-0px; PADDING-TOP: 26px; POSITION: relative; TOP: 0px
-}
-#content {
-	MARGIN: 30px 0px 20px 151px; POSITION: relative
-}
-#area-nav {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; LEFT: 5px; PADDING-BOTTOM: 0px; =
-MARGIN: 0px; WIDTH: 132px; PADDING-TOP: 0px; POSITION: absolute; TOP: =
-130px
-}
-#footer {
-	CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0.85em; =
-PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 151px; PADDING-TOP: 0px; =
-TEXT-ALIGN: center
-}
-#header DIV#logo {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; LEFT: 22px; PADDING-BOTTOM: 0px; =
-MARGIN: 0px; PADDING-TOP: 0px; POSITION: absolute; TOP: 9px
-}
-#areaname {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 51px; BACKGROUND: =
-url(http://www.epa.gov/epafiles/images/epafiles_ban_endtop.gif) #006 =
-no-repeat 100% 0%; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 100px; =
-COLOR: #fff; PADDING-TOP: 0px
-}
-DIV#areaname P {
-	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; FONT-WEIGHT: =
-bold; FONT-SIZE: 1.7em; BACKGROUND: =
-url(http://www.epa.gov/epafiles/images/epafiles_ban_endbottom.gif) =
-no-repeat 100% 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: #fff; =
-LINE-HEIGHT: 1.3; PADDING-TOP: 0px
-}
-#header P {
-	FONT-SIZE: 0.85em; BACKGROUND: #fff; MARGIN: 1px 0px 0px 151px; COLOR: =
-#000; POSITION: relative
-}
-#header P#tagline {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
-0px 4px 151px; LINE-HEIGHT: 1.1; PADDING-TOP: 0px
-}
-#EPAsearch {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
-0px; PADDING-TOP: 0px
-}
-#header .search {
-	FONT-SIZE: 1.2em; MARGIN: 0px 0px 0px 2em
-}
-#searchbox {
-	BORDER-RIGHT: #bdf 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #79c 1px =
-solid; PADDING-LEFT: 2px; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 2px; =
-BORDER-LEFT: #79c 1px solid; WIDTH: 120px; PADDING-TOP: 2px; =
-BORDER-BOTTOM: #bdf 1px solid
-}
-#searchbutton {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
-20px 2px 0px; PADDING-TOP: 0px
-}
-#header UL {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 4px; FONT-SIZE: 0.85em; =
-PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 147px; COLOR: #000; =
-LINE-HEIGHT: 1.2; PADDING-TOP: 0px; LIST-STYLE-TYPE: none; =
-LETTER-SPACING: -0.04em; BACKGROUND-COLOR: #e1ebf4
-}
-#header UL LI {
-	PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 14px; BACKGROUND: =
-url(http://www.epa.gov/epafiles/s/i/breadcrumbarrow.gif) no-repeat 0% =
-50%; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px
-}
-#header UL LI A {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
-0px; PADDING-TOP: 0px
-}
-#header UL LI.first {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND-IMAGE: none; =
-PADDING-BOTTOM: 0px; PADDING-TOP: 0px
-}
-#content P#areafooter {
-	CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0.85em; =
-PADDING-BOTTOM: 0px; PADDING-TOP: 20px; TEXT-ALIGN: center
-}
-#area-nav {
-	FONT-FAMILY: Arial, Helvetica, sans-serif; BACKGROUND-COLOR: #369
-}
-#area-nav HR {
-	BORDER-RIGHT: #fff 1px solid; BORDER-TOP: #fff 1px solid; BORDER-LEFT: =
-#fff 1px solid; WIDTH: 85%; BORDER-BOTTOM: #fff 1px solid; =
-BACKGROUND-COLOR: #fff
-}
-#area-nav UL LI HR {
-	BORDER-RIGHT: #fff 1px solid; BORDER-TOP: #fff 1px solid; MARGIN: 6px =
-0px -2px 4px; BORDER-LEFT: #fff 1px solid; WIDTH: 112px; BORDER-BOTTOM: =
-#fff 1px solid; BACKGROUND-COLOR: #fff
-}
-#area-nav UL {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
-0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
-}
-#area-nav UL LI {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 6px; PADDING-BOTTOM: 6px; MARGIN: =
-0px; TEXT-INDENT: -0.5em; PADDING-TOP: 3px
-}
-#area-nav UL UL {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
-0px; PADDING-TOP: 0px
-}
-#area-nav UL UL LI {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 12px; PADDING-BOTTOM: 1px; MARGIN: =
-0px; LINE-HEIGHT: 1.1; PADDING-TOP: 0px
-}
-#area-nav A {
-	DISPLAY: block; FONT-WEIGHT: bold; FONT-SIZE: 1em; COLOR: #fff; =
-LINE-HEIGHT: 1.2; TEXT-DECORATION: none
-}
-#area-nav A:hover {
-	COLOR: #90f0ff
-}
-#area-nav A:active {
-	COLOR: #90f0ff
-}
-UL#globalfooter {
-	PADDING-RIGHT: 0px; BORDER-TOP: #006 4px solid; PADDING-LEFT: 0px; =
-PADDING-BOTTOM: 0px; MARGIN: 0px 20% 10px; PADDING-TOP: 10px; =
-LIST-STYLE-TYPE: none
-}
-UL#globalfooter LI {
-	BORDER-RIGHT: #000 1px solid; PADDING-RIGHT: 10px; DISPLAY: inline; =
-PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 5px; =
-PADDING-TOP: 0px
-}
-UL#globalfooter LI.last {
-	BORDER-RIGHT-STYLE: none
-}
-#footer P#date {
-	MARGIN-BOTTOM: 0px
-}
-#footer P#url {
-	MARGIN: 0px
-}
-#footer P#printAsIs {
-	MARGIN: 0px
-}
-BODY#sidebarless {
-	BACKGROUND: #fff
-}
-BODY#sidebarless #content {
-	MARGIN-LEFT: 2%
-}
-BODY#sidebarless #footer {
-	MARGIN-LEFT: 0px
-}
-BODY#espanol #header {
-	BACKGROUND: =
-url(http://www.epa.gov/espanol/layout-files/epa-spn-agencyname.gif) =
-no-repeat right top
-}
-
-------=_NextPart_000_0003_01C86FE3.9CC848D0
-Content-Type: text/css;
-	charset="iso-8859-1"
-Content-Transfer-Encoding: quoted-printable
-Content-Location: http://www.epa.gov/air/oaqps/epa-content.css
-
-#content .right {
-	FLOAT: right
-}
-#content .center {
-	TEXT-ALIGN: center
-}
-#content .left {
-	FLOAT: left
-}
-#content .clear {
-	CLEAR: both
-}
-#content INS {
-	TEXT-DECORATION: none
-}
-#content ABBR {
-	CURSOR: help; BORDER-BOTTOM: #d0d0d0 1px dashed; FONT-VARIANT: =
-small-caps
-}
-#content ACRONYM {
-	CURSOR: help; BORDER-BOTTOM: #d0d0d0 1px dashed; FONT-VARIANT: =
-small-caps
-}
-#content CODE {
-	FONT: 1em "Lucida Console", "Andale Mono", "monotype.com", "Bitstream =
-Vera Sans Mono", monospace
-}
-#content PRE {
-	FONT: 1em "Lucida Console", "Andale Mono", "monotype.com", "Bitstream =
-Vera Sans Mono", monospace
-}
-#content HR {
-	CLEAR: both; BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; =
-MARGIN: 3px 0px; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px =
-solid; BACKGROUND-COLOR: #ccc
-}
-#content P.pagetop {
-	CLEAR: both; FONT-SIZE: 0.8em; BACKGROUND: =
-url(http://www.epa.gov/epafiles/s/i/pagetop.gif) no-repeat 0px 50%; =
-MARGIN: 1em 0px
-}
-#content P.pagetop A {
-	PADDING-LEFT: 8px; COLOR: #666; TEXT-DECORATION: none
-}
-#content P.pagetop A:hover {
-	TEXT-DECORATION: underline
-}
-#content .imgcontainer-r {
-	BORDER-RIGHT: #ccc 2px solid; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 2px =
-solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; BORDER-LEFT: #ccc 2px =
-solid; PADDING-TOP: 0px; BORDER-BOTTOM: #ccc 2px solid; =
-BACKGROUND-COLOR: #ffffdb
-}
-#content .imgcontainer-l {
-	BORDER-RIGHT: #ccc 2px solid; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 2px =
-solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; BORDER-LEFT: #ccc 2px =
-solid; PADDING-TOP: 0px; BORDER-BOTTOM: #ccc 2px solid; =
-BACKGROUND-COLOR: #ffffdb
-}
-#content .imgcontainer-r IMG {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
-0px -3px; PADDING-TOP: 0px
-}
-#content .imgcontainer-l IMG {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
-0px -3px; PADDING-TOP: 0px
-}
-#content .imgcontainer-r {
-	FLOAT: right; MARGIN: 0px 0px 6px 6px
-}
-#content .imgcontainer-l {
-	FLOAT: left; MARGIN: 0px 6px 6px 0px
-}
-#content .imgcontainer-l .caption A {
-	TEXT-DECORATION: none
-}
-#content .imgcontainer-r .caption A {
-	TEXT-DECORATION: none
-}
-#content .imgcontainer-r .caption A:hover {
-	TEXT-DECORATION: underline
-}
-#content .imgcontainer-l .caption A:hover {
-	TEXT-DECORATION: underline
-}
-#content .caption A:hover {
-	TEXT-DECORATION: underline
-}
-#content .caption {
-	PADDING-RIGHT: 4px; PADDING-LEFT: 4px; FONT-SIZE: 0.85em; =
-PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-TOP: 2px
-}
-#content UL {
-	MARGIN-TOP: 0px; LIST-STYLE-IMAGE: =
-url(http://www.epa.gov/epafiles/s/i/bu_sftblue.gif)
-}
-#content UL OL {
-	LIST-STYLE-IMAGE: none
-}
-#content LI {
-	MARGIN-TOP: 0px; PADDING-LEFT: 0px; MARGIN-LEFT: 10px; PADDING-TOP: 0px
-}
-#content LI LI {
-	PADDING-LEFT: 0px; MARGIN-LEFT: 0px
-}
-#content H1 {
-	FONT-SIZE: 1.9em; MARGIN: 0px 0px 0.68em; LINE-HEIGHT: 1em
-}
-#content H2 {
-	FONT-SIZE: 1.6em; MARGIN: 1.21em 0px 0.4em; LINE-HEIGHT: 1em
-}
-#content H3 {
-	FONT-SIZE: 1.35em; MARGIN: 1.44em 0px 0.48em; LINE-HEIGHT: 1em
-}
-#content H4 {
-	FONT-SIZE: 1.2em; MARGIN: 1.62em 0px 0.54em; LINE-HEIGHT: 1.08em
-}
-#content H5 {
-	FONT-SIZE: 1em; MARGIN: 1.95em 0px 0.65em; LINE-HEIGHT: 1.3em
-}
-#content H6 {
-	FONT-SIZE: 0.8em; MARGIN: 2.43em 0px 0.81em; LINE-HEIGHT: 1.62em
-}
-#content P {
-	MARGIN-TOP: 1.3em; FONT-SIZE: 1em; MARGIN-BOTTOM: 1.3em; LINE-HEIGHT: =
-1.3em
-}
-#content #sitewidea {
-	FONT-WEIGHT: bold; FONT-SIZE: 1em; COLOR: #c33
-}
-#content #sitewideb {
-	FONT-WEIGHT: bold; FONT-SIZE: 1em; COLOR: #c33
-}
-#content #sitewidec {
-	FONT-WEIGHT: bold; FONT-SIZE: 1em; COLOR: #c33
-}
-#content .warning {
-	FONT-WEIGHT: bold; FONT-SIZE: 1em; COLOR: #c33
-}
-#content .fileinfo {
-	FONT-SIZE: 0.85em; COLOR: #666
-}
-#content .epaltsansbold {
-	FONT-WEIGHT: bold; FONT-SIZE: 0.85em; FONT-FAMILY: Arial, Helvetica, =
-sans-serif
-}
-#content .epaltsans {
-	FONT-SIZE: 0.9em; FONT-FAMILY: Arial, Helvetica, sans-serif
-}
-#content .epaLtSans {
-	FONT-SIZE: 0.9em; FONT-FAMILY: Arial, Helvetica, sans-serif
-}
-#content .boxmulti {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0.9em; BACKGROUND: =
-url(http://www.epa.gov/epafiles/s/i/curves-bottom.gif) #f1f1f1 no-repeat =
-left bottom; FLOAT: right; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 1em =
-0.5em; WIDTH: 200px; PADDING-TOP: 0px
-}
-#content .boxnat {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0.9em; BACKGROUND: =
-url(http://www.epa.gov/epafiles/s/i/curves-bottom.gif) #f1f1f1 no-repeat =
-left bottom; FLOAT: right; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 1em =
-0.5em; WIDTH: 200px; PADDING-TOP: 0px
-}
-#content .boxalert {
-	BORDER-RIGHT: #c33 2px solid; PADDING-RIGHT: 0px; BORDER-TOP: #c33 2px =
-solid; PADDING-LEFT: 0px; FONT-SIZE: 0.9em; FLOAT: right; =
-PADDING-BOTTOM: 0px; MARGIN: 0px 0px 5px 5px; BORDER-LEFT: #c33 2px =
-solid; WIDTH: 200px; PADDING-TOP: 0px; BORDER-BOTTOM: #c33 2px solid; =
-BACKGROUND-COLOR: #f1f1f1
-}
-#content .box {
-	BORDER-RIGHT: #ccc 2px solid; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 2px =
-solid; PADDING-LEFT: 0px; FONT-SIZE: 0.9em; PADDING-BOTTOM: 0px; MARGIN: =
-5px 5px 5px 0px; BORDER-LEFT: #ccc 2px solid; WIDTH: 50%; PADDING-TOP: =
-0px; BORDER-BOTTOM: #ccc 2px solid
-}
-#content .boxmulti H5 {
-	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FONT-SIZE: 1em; PADDING-BOTTOM: =
-2px; MARGIN: 0px 0px 0.2em; COLOR: #fff; PADDING-TOP: 2px; =
-BACKGROUND-COLOR: #5c9261; TEXT-ALIGN: center
-}
-#content .boxnat H5 {
-	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FONT-SIZE: 1em; PADDING-BOTTOM: =
-2px; MARGIN: 0px 0px 0.2em; COLOR: #fff; PADDING-TOP: 2px; =
-BACKGROUND-COLOR: #5c9261; TEXT-ALIGN: center
-}
-#content .boxalert H5 {
-	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FONT-SIZE: 1em; PADDING-BOTTOM: =
-2px; MARGIN: 0px 0px 0.2em; COLOR: #fff; PADDING-TOP: 2px; =
-BACKGROUND-COLOR: #5c9261; TEXT-ALIGN: center
-}
-#content .box H5 {
-	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FONT-SIZE: 1em; PADDING-BOTTOM: =
-2px; MARGIN: 0px 0px 0.2em; COLOR: #fff; PADDING-TOP: 2px; =
-BACKGROUND-COLOR: #5c9261; TEXT-ALIGN: center
-}
-#content .boxmulti H5 {
-	BACKGROUND: url(http://www.epa.gov/epafiles/s/i/curves-top.gif) #5c9261 =
-no-repeat left top
-}
-#content .boxnat H5 {
-	BACKGROUND: url(http://www.epa.gov/epafiles/s/i/curves-top.gif) #5c9261 =
-no-repeat left top
-}
-#content .boxnat H5 {
-	BACKGROUND-COLOR: #369
-}
-#content .boxalert H5 {
-	BACKGROUND-COLOR: #c33
-}
-#content .box H5 {
-	COLOR: #000; BACKGROUND-COLOR: #ddd; TEXT-ALIGN: left
-}
-#content .boxmulti UL LI {
-	LIST-STYLE-IMAGE: url(http://www.epa.gov/epafiles/s/i/bu_sftgrn.gif)
-}
-#content .boxalert UL LI {
-	LIST-STYLE-IMAGE: url(http://www.epa.gov/epafiles/s/i/bu_alertred.gif)
-}
-#content .centered {
-	MARGIN: 5px auto
-}
-#content .righted {
-	FLOAT: right; MARGIN: 5px 0px 5px 5px
-}
-#content .centered H5 {
-	TEXT-ALIGN: center
-}
-#content .righted H5 {
-	TEXT-ALIGN: center
-}
-#content .color1 {
-	BORDER-RIGHT: #363 2px solid; BORDER-TOP: #363 2px solid; BORDER-LEFT: =
-#363 2px solid; BORDER-BOTTOM: #363 2px solid
-}
-#content .color2 {
-	BORDER-RIGHT: #006 2px solid; BORDER-TOP: #006 2px solid; BORDER-LEFT: =
-#006 2px solid; BORDER-BOTTOM: #006 2px solid
-}
-#content .color1 H5 {
-	COLOR: #fff; BACKGROUND-COLOR: #5c9261
-}
-#content .color1 UL LI {
-	LIST-STYLE-IMAGE: url(http://www.epa.gov/epafiles/s/i/bu_sftgrn.gif)
-}
-#content .color2 H5 {
-	COLOR: #fff; BACKGROUND-COLOR: #369
-}
-#content .boxmulti UL {
-	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
-}
-#content .boxmulti OL {
-	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
-}
-#content .boxnat UL {
-	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
-}
-#content .boxnat OL {
-	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
-}
-#content .boxalert UL {
-	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
-}
-#content .boxalert OL {
-	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
-}
-#content .box UL {
-	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
-}
-#content .box OL {
-	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
-}
-#content .boxmulti LI {
-	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
-MARGIN-LEFT: -1em; PADDING-TOP: 0px
-}
-#content .boxnat LI {
-	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
-MARGIN-LEFT: -1em; PADDING-TOP: 0px
-}
-#content .boxalert LI {
-	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
-MARGIN-LEFT: -1em; PADDING-TOP: 0px
-}
-#content .box LI {
-	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
-MARGIN-LEFT: -1em; PADDING-TOP: 0px
-}
-#content .boxmulti LI LI {
-	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
-MARGIN-LEFT: -2em; PADDING-TOP: 0px
-}
-#content .boxnat LI LI {
-	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
-MARGIN-LEFT: -2em; PADDING-TOP: 0px
-}
-#content .boxalert LI LI {
-	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
-MARGIN-LEFT: -2em; PADDING-TOP: 0px
-}
-#content .box LI LI {
-	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
-MARGIN-LEFT: -2em; PADDING-TOP: 0px
-}
-#content .boxmulti P {
-	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 0px; MARGIN: =
-0.5em 0px; PADDING-TOP: 0px
-}
-#content .boxnat P {
-	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 0px; MARGIN: =
-0.5em 0px; PADDING-TOP: 0px
-}
-#content .boxalert P {
-	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 0px; MARGIN: =
-0.5em 0px; PADDING-TOP: 0px
-}
-#content .box P {
-	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 0px; MARGIN: =
-0.5em 0px; PADDING-TOP: 0px
-}
-#content .boxmulti A {
-	TEXT-DECORATION: none
-}
-#content .boxnat A {
-	TEXT-DECORATION: none
-}
-#content .boxalert A {
-	TEXT-DECORATION: none
-}
-#content .box A {
-	TEXT-DECORATION: none
-}
-#content .boxmulti A:hover {
-	TEXT-DECORATION: underline
-}
-#content .boxnat A:hover {
-	TEXT-DECORATION: underline
-}
-#content .boxalert A:hover {
-	TEXT-DECORATION: underline
-}
-#content .box A:hover {
-	TEXT-DECORATION: underline
-}
-#content .boxsimple {
-	BORDER-RIGHT: #ccc 2px solid; BORDER-TOP: #ccc 2px solid; FONT-SIZE: =
-0.9em; FLOAT: right; MARGIN: 0px 0px 1em 1em; BORDER-LEFT: #ccc 2px =
-solid; WIDTH: 15%; BORDER-BOTTOM: #ccc 2px solid
-}
-#content .boxsimple H5 {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 1em; PADDING-BOTTOM: =
-0px; MARGIN: 0px; PADDING-TOP: 0px
-}
-#content .boxsimple P {
-	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 0px; MARGIN: =
-0.5em 0px; PADDING-TOP: 0px
-}
-#content P.pullquote {
-	BORDER-RIGHT: #ccc 0px solid; PADDING-RIGHT: 0.5em; BORDER-TOP: #ccc =
-2px solid; PADDING-LEFT: 0.5em; FONT-WEIGHT: bold; FONT-SIZE: 1.1em; =
-FLOAT: right; PADDING-BOTTOM: 0.5em; MARGIN: 0.5em 0px 0.5em 1em; =
-BORDER-LEFT: #ccc 0px solid; COLOR: #333; LINE-HEIGHT: normal; =
-PADDING-TOP: 0.5em; BORDER-BOTTOM: #ccc 2px solid; FONT-STYLE: italic
-}
-#content P.pullquote SPAN.author {
-	FONT-SIZE: 0.8em; FONT-STYLE: normal
-}
-#content .disclaimer {
-	BORDER-RIGHT: #ccc 2px solid; PADDING-RIGHT: 0.3em; BORDER-TOP: #ccc =
-2px solid; PADDING-LEFT: 0.3em; FONT-SIZE: 0.9em; BACKGROUND: #f1f1f1; =
-FLOAT: right; PADDING-BOTTOM: 0.3em; MARGIN: 1em 0px 1em 1em; =
-BORDER-LEFT: #ccc 2px solid; WIDTH: 20%; LINE-HEIGHT: 1.1; PADDING-TOP: =
-0.3em; BORDER-BOTTOM: #ccc 2px solid
-}
-#content .disclaimer-wide {
-	BORDER-RIGHT: #ccc 2px solid; PADDING-RIGHT: 0.3em; BORDER-TOP: #ccc =
-2px solid; PADDING-LEFT: 0.3em; FONT-SIZE: 0.9em; BACKGROUND: #f1f1f1; =
-FLOAT: right; PADDING-BOTTOM: 0.3em; MARGIN: 1em 0px 1em 1em; =
-BORDER-LEFT: #ccc 2px solid; WIDTH: 20%; LINE-HEIGHT: 1.1; PADDING-TOP: =
-0.3em; BORDER-BOTTOM: #ccc 2px solid
-}
-#content P#archive {
-	BORDER-RIGHT: #ccc 2px solid; PADDING-RIGHT: 0.3em; BORDER-TOP: #ccc =
-2px solid; PADDING-LEFT: 0.3em; FONT-SIZE: 0.9em; BACKGROUND: #f1f1f1; =
-FLOAT: right; PADDING-BOTTOM: 0.3em; MARGIN: 1em 0px 1em 1em; =
-BORDER-LEFT: #ccc 2px solid; WIDTH: 20%; LINE-HEIGHT: 1.1; PADDING-TOP: =
-0.3em; BORDER-BOTTOM: #ccc 2px solid
-}
-#content .disclaimer-wide {
-	PADDING-RIGHT: 0.3em; PADDING-LEFT: 0.3em; FLOAT: none; PADDING-BOTTOM: =
-0.3em; MARGIN: 1em 10%; WIDTH: auto; PADDING-TOP: 0.3em; TEXT-ALIGN: =
-center
-}
-#content P#archive {
-	PADDING-RIGHT: 0.3em; PADDING-LEFT: 30px; BACKGROUND: =
-url(http://www.epa.gov/epafiles/images/epafiles_misc_outdatediconmini.gif=
-) #f1f1f1 no-repeat 0.3em 50%; FLOAT: none; PADDING-BOTTOM: 0.3em; =
-MARGIN: 0px 0px 0.3em; WIDTH: 350px; PADDING-TOP: 0.3em
-}
-#content B.cn {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 1px; BACKGROUND: =
-url(http://www.epa.gov/epafiles/s/i/white.gif) no-repeat; =
-PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 10px; LINE-HEIGHT: 1px; =
-PADDING-TOP: 0px; POSITION: absolute; HEIGHT: 10px
-}
-#content B.tl {
-	BACKGROUND-POSITION: left top; LEFT: -1px; TOP: -1px
-}
-#content B.tr {
-	BACKGROUND-POSITION: right top; RIGHT: -1px; TOP: -1px
-}
-#content TABLE.table {
-	MARGIN: 0px 0px 1em; BORDER-COLLAPSE: collapse
-}
-#content TABLE.tablebord {
-	MARGIN: 0px 0px 1em; BORDER-COLLAPSE: collapse
-}
-#content TABLE.table CAPTION {
-	FONT-WEIGHT: bold; PADDING-BOTTOM: 6px
-}
-#content TABLE.tablebord CAPTION {
-	FONT-WEIGHT: bold; PADDING-BOTTOM: 6px
-}
-#content TABLE.table TH {
-	BORDER-RIGHT: #ccc 0px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 0px =
-solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: #ccc 0px =
-solid; PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px solid
-}
-#content TABLE.table TD {
-	BORDER-RIGHT: #ccc 0px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 0px =
-solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: #ccc 0px =
-solid; PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px solid
-}
-#content TABLE.tablebord TH {
-	BORDER-RIGHT: #ccc 0px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 0px =
-solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: #ccc 0px =
-solid; PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px solid
-}
-#content TABLE.tablebord TD {
-	BORDER-RIGHT: #ccc 0px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 0px =
-solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: #ccc 0px =
-solid; PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px solid
-}
-#content TABLE.table THEAD {
-	BACKGROUND: #ccc; COLOR: #000
-}
-#content TABLE.table TFOOT {
-	BACKGROUND: #ccc; COLOR: #000
-}
-#content TABLE.tablebord THEAD {
-	BACKGROUND: #ccc; COLOR: #000
-}
-#content TABLE.tablebord TFOOT {
-	BACKGROUND: #ccc; COLOR: #000
-}
-#content TABLE.table TH {
-	BORDER-RIGHT: #ddd 1px solid; BORDER-TOP: #ddd 0px solid; BACKGROUND: =
-#ccc; BORDER-LEFT: #ddd 1px solid; COLOR: #000; BORDER-BOTTOM: #ddd 0px =
-solid
-}
-#content TABLE.tablebord TH {
-	BORDER-RIGHT: #ddd 1px solid; BORDER-TOP: #ddd 0px solid; BACKGROUND: =
-#ccc; BORDER-LEFT: #ddd 1px solid; COLOR: #000; BORDER-BOTTOM: #ddd 0px =
-solid
-}
-#content TABLE.zebra TR.rowTint {
-	BACKGROUND-COLOR: #f1f1f1
-}
-#content TABLE.tablebord TR.rowTint {
-	BACKGROUND-COLOR: #f1f1f1
-}
-#content TABLE.tablebord {
-	BORDER-RIGHT: #ccc 0px solid; BORDER-TOP: #ccc 1px solid; BORDER-LEFT: =
-#ccc 1px solid; BORDER-BOTTOM: #ccc 0px solid
-}
-#content TABLE.tablebord TH {
-	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
-1px; BORDER-RIGHT-WIDTH: 1px
-}
-#content TABLE.tablebord TD {
-	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
-1px; BORDER-RIGHT-WIDTH: 1px
-}
-#content TABLE.qfinder {
-	PADDING-BOTTOM: 0.2em; MARGIN: 0px 0px 1em; FONT: 90%/1.1em Arial, =
-Helvetica, sans-serif; WIDTH: 100%; BORDER-BOTTOM: #5c9261 1px solid; =
-BORDER-COLLAPSE: collapse
-}
-#content TABLE.qfinder THEAD TH {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: =
-url(http://www.epa.gov/epafiles/s/i/qf-r.gif) #5c9261 no-repeat right =
-top; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px
-}
-#content TABLE.qfinder THEAD TH P {
-	PADDING-RIGHT: 8px; PADDING-LEFT: 8px; FONT-WEIGHT: bold; FONT-SIZE: =
-1.3em; BACKGROUND: url(http://www.epa.gov/epafiles/s/i/qf-l.gif) =
-no-repeat; PADDING-BOTTOM: 3px; MARGIN: 0px 8px 0px 0px; COLOR: #fff; =
-PADDING-TOP: 3px; TEXT-ALIGN: left
-}
-#content TABLE.qfinder THEAD TD {
-	PADDING-RIGHT: 8px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
-PADDING-TOP: 0px
-}
-#content TABLE.qfinder TBODY TD {
-	VERTICAL-ALIGN: top; LINE-HEIGHT: 1.2em; PADDING-TOP: 0.1em
-}
-#content TABLE.qfinder A {
-	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 7px; PADDING-BOTTOM: =
-0px; MARGIN: 0px; PADDING-TOP: 0px; TEXT-DECORATION: none
-}
-#content TABLE.qfinder TD A:hover {
-	BACKGROUND-COLOR: #f1f1f1; TEXT-DECORATION: none
-}
-#content TABLE.qfinder TD A.more {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 17px; BACKGROUND: =
-url(http://www.epa.gov/epahome/images/more_topic.gif) no-repeat 7px 3px; =
-PADDING-BOTTOM: 0px; PADDING-TOP: 0px
-}
-#content FORM.form LABEL {
-	DISPLAY: block; FLOAT: left; MARGIN-BOTTOM: 10px; WIDTH: 150px
-}
-#content FORM.form INPUT {
-	DISPLAY: block; FLOAT: left; MARGIN-BOTTOM: 10px; WIDTH: 150px
-}
-#content FORM.form FIELDSET {
-	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
-none; BORDER-BOTTOM-STYLE: none
-}
-#content FORM.form LABEL {
-	PADDING-RIGHT: 10px; WIDTH: 100px; TEXT-ALIGN: right
-}
-#content FORM.form BR {
-	CLEAR: left
-}
-#content FORM.form INPUT#formsubmit {
-	MARGIN: 10px 0px 10px 110px; WIDTH: auto
-}
-
-------=_NextPart_000_0003_01C86FE3.9CC848D0
-Content-Type: text/css;
-	charset="iso-8859-1"
-Content-Transfer-Encoding: quoted-printable
-Content-Location: http://www.epa.gov/epafiles/s/print.css
-
-@import url( epa-content.css );
-BODY {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: #fff; =
-PADDING-BOTTOM: 0px; MARGIN: 0px; FONT: 10pt/1.1 Verdana, sans-serif; =
-COLOR: #000; PADDING-TOP: 0px
-}
-#skipnav {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
-PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
-BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
-BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
-BORDER-BOTTOM-STYLE: none
-}
-#skiptop {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
-PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
-BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
-BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
-BORDER-BOTTOM-STYLE: none
-}
-#skipbot {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
-PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
-BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
-BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
-BORDER-BOTTOM-STYLE: none
-}
-HR.skip {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
-PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
-BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
-BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
-BORDER-BOTTOM-STYLE: none
-}
-#areaname #banner {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
-PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
-BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
-BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
-BORDER-BOTTOM-STYLE: none
-}
-#areaname P#tagline {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
-PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
-BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
-BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
-BORDER-BOTTOM-STYLE: none
-}
-#EPAsearch {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
-PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
-BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
-BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
-BORDER-BOTTOM-STYLE: none
-}
-#header P {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
-PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
-BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
-BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
-BORDER-BOTTOM-STYLE: none
-}
-BODY#aara #content #quickfinder B.cn {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
-PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
-BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
-BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
-BORDER-BOTTOM-STYLE: none
-}
-#content #sitewidea {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
-PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
-BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
-BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
-BORDER-BOTTOM-STYLE: none
-}
-#content #sitewideb {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
-PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
-BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
-BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
-BORDER-BOTTOM-STYLE: none
-}
-#content #sitewidec {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
-PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
-BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
-BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
-BORDER-BOTTOM-STYLE: none
-}
-#content #areafooter {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
-PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
-BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
-BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
-BORDER-BOTTOM-STYLE: none
-}
-#content .pagetop {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
-PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
-BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
-BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
-BORDER-BOTTOM-STYLE: none
-}
-#area-nav H3 {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
-PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
-BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
-BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
-BORDER-BOTTOM-STYLE: none
-}
-#area-nav {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
-PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
-BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
-BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
-BORDER-BOTTOM-STYLE: none
-}
-UL#globalfooter {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
-PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
-BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
-BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
-BORDER-BOTTOM-STYLE: none
-}
-A IMG {
-	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
-0px; BORDER-RIGHT-WIDTH: 0px
-}
-A {
-	COLOR: #000
-}
-#header {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: #fff; =
-PADDING-BOTTOM: 0px; MARGIN: 0px 0px 30px; PADDING-TOP: 0px; POSITION: =
-static
-}
-#content {
-	MARGIN: 40px 20px
-}
-BODY#aara #content {
-	MARGIN: 50px 20px 40px
-}
-#footer {
-	MARGIN: 0px
-}
-#header DIV#logo {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; LEFT: 0px; PADDING-BOTTOM: 0px; =
-MARGIN: 0px; WIDTH: 100px; PADDING-TOP: 0px; POSITION: relative; TOP: =
-0px
-}
-#header DIV#areaname P {
-	FONT-WEIGHT: normal; FONT-SIZE: 1.4em; BACKGROUND: none transparent =
-scroll repeat 0% 0%; LEFT: 0px; MARGIN: 40px 0px -100px 120px; OVERFLOW: =
-visible; WIDTH: 75%; COLOR: #a0a0a0; LINE-HEIGHT: 1.3; POSITION: =
-relative; TOP: -130px; TEXT-ALIGN: left
-}
-BODY#aara DIV#areaname {
-	MARGIN: 0px
-}
-BODY#espanol DIV#areaname {
-	MARGIN: 0px
-}
-BODY#aara DIV#areaname P {
-	MARGIN: 40px 0px -60px 146px
-}
-BODY#espanol DIV#areaname P {
-	MARGIN: 40px 0px -100px 120px
-}
-#header UL {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0.85em; =
-PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 120px; COLOR: #a0a0a0; =
-LINE-HEIGHT: 1.2; PADDING-TOP: 0px; LIST-STYLE-TYPE: none; =
-LETTER-SPACING: 0px
-}
-BODY#aara #header UL {
-	MARGIN: -60px 0px 0px 146px
-}
-#header UL LI {
-	PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 14px; BACKGROUND: =
-url(http://www.epa.gov/epafiles/s/i/breadcrumbarrow.gif) no-repeat 0% =
-50%; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px
-}
-#header UL LI A {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
-0px; PADDING-TOP: 0px
-}
-#header UL LI.first {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND-IMAGE: none; =
-PADDING-BOTTOM: 0px; PADDING-TOP: 0px
-}
-#content H1 {
-	FONT-SIZE: 1.7em; MARGIN: 0px; BORDER-BOTTOM: #000 2px solid
-}
-#content H2 {
-	FONT-SIZE: 1.4em
-}
-#content H3 {
-	FONT-SIZE: 1.2em
-}
-#content H4 {
-	FONT-SIZE: 1em
-}
-#content H5 {
-	FONT-SIZE: 0.9em
-}
-#content .boxmulti {
-	BACKGROUND-IMAGE: none
-}
-#content .boxnat {
-	BACKGROUND-IMAGE: none
-}
-#content .boxmulti H5 {
-	BACKGROUND-IMAGE: none
-}
-#content .boxnat H5 {
-	BACKGROUND-IMAGE: none
-}
-#content UL {
-	LIST-STYLE-TYPE: disc
-}
-#content .boxmulti UL LI {
-	LIST-STYLE-TYPE: disc
-}
-#content .boxalert UL LI {
-	LIST-STYLE-TYPE: disc
-}
-#content .color1 UL LI {
-	LIST-STYLE-TYPE: disc
-}
-P#url {
-	FONT-SIZE: 0.85em; RIGHT: 40px; COLOR: #a0a0a0; POSITION: absolute; =
-TOP: 0px
-}
-P#date {
-	FONT-SIZE: 0.85em; RIGHT: 40px; COLOR: #a0a0a0; POSITION: absolute; =
-TOP: 0px
-}
-P#date {
-	TOP: 15px
-}
-H2.printOnly {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 10pt; PADDING-BOTTOM: =
-0px; MARGIN: 3px 0px; COLOR: #aaa; PADDING-TOP: 0px
-}
-OL.printOnly {
-	MARGIN-TOP: 0px; PADDING-TOP: 0px
-}
-OL.printOnly LI {
-	MARGIN-TOP: 0px; PADDING-LEFT: 0px; FONT-SIZE: 9pt; MARGIN-LEFT: 3px; =
-COLOR: #bbb; PADDING-TOP: 0px
-}
-
-@media Print   =20
-{
-#printAsIs {
-	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
-PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
-BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
-BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
-BORDER-BOTTOM-STYLE: none
-}
-
-}
-
-------=_NextPart_000_0003_01C86FE3.9CC848D0
-Content-Type: application/octet-stream
-Content-Transfer-Encoding: quoted-printable
-Content-Location: http://www.epa.gov/epafiles/js/epa-core.js
-
-// EPA's core functions
-// 05 June 2007
-// For comments and explanations, see =
-http://www.epa.gov/epafiles/js/epa-full.txt
-
-function printAsIs_Date_URL() {
-	if(!document.getElementById('footer')) return;
-	var footer =3D document.getElementById('footer');
-
-	var printText =3D document.createElement('p');
-	printText.id =3D 'printAsIs';
-	var print_function =3D document.createElement('a'); print_function.href =
-=3D '#';
-  print_function.title =3D 'Print this page as-is.';
-  print_function.onclick =3D function(){ print_preview(); return false; =
-};
-  print_function.appendChild(document.createTextNode('Print As-Is') );
-	printText.appendChild(print_function);
-	footer.appendChild(printText);
-
-	var urlText =3D document.createElement('p');
-	urlText.id =3D 'url';
-	urlText.appendChild(document.createTextNode(window.location.href));
-	footer.insertBefore(urlText,printText);
-
-	var x =3D new Date(document.lastModified); var Modif =3D new =
-Date(x.toGMTString());
-	var days =3D =
-['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];=
-
-	var months =3D =
-['January','February','March','April','May','June','July','August','Septe=
-mber','October','November','December'];
-	var datetowrite =3D 'Last updated on ' + days[Modif.getDay()] + ', ' + =
-months[Modif.getMonth()] + ' ' + Modif.getDate() + nths(Modif.getDate()) =
-+ ', ' + takeYear(Modif) + '.';
-	var dateText =3D document.createElement('p'); dateText.id =3D 'date';
-	dateText.appendChild(document.createTextNode(datetowrite));
-	footer.insertBefore(dateText, urlText);
-}
-
-function print_preview() {
-	var links =3D document.getElementsByTagName('link');
-	for (var i =3D 0; i < links.length; i++) {
-		var linkHREF =3D links[i].getAttribute('href');
-		if (linkHREF =3D=3D 'http://www.epa.gov/epafiles/s/print.css') {
-			links[i].removeAttribute('href'); links[i].href =3D =
-'http://www.epa.gov/epafiles/s/epa.css';
-		}
-	}
-	add_preview_message();
-}
-
-function add_preview_message() {
-	var footer =3D document.getElementById('footer');
-	var printPara =3D document.createElement('p');
-	printPara.innerHTML =3D '<b>This document will now print as it appears =
-on screen when you use the File &raquo; Print command.</b><br>Use View =
-&raquo; Refresh to return to original state.';
-	footer.appendChild(printPara);
-}
-
-function newIcon() {=09
-	if(!document.getElementsByTagName('ins')) return;
-	var newItem =3D =
-document.getElementById('content').getElementsByTagName('ins');
-	for ( var i =3D 0; i < newItem.length; i++) {
-		if (!newItem[i].getAttribute('datetime')) continue;
-		var a =3D newItem[i].getAttribute('datetime');
-		var b =3D new Array(); b =3D a.split('-');
-		var postedDate =3D (Date.UTC(b[0],b[1],b[2],0,0,0))/86400000;
-		var x =3D new Date(); var today =3D new Date(x.toGMTString());
-		var now =3D =
-(Date.UTC(takeYear(today),today.getMonth(),today.getDate(),0,0,0))/864000=
-00;
-		var timeLeft =3D postedDate - (now + 1);
-		if (timeLeft < 31  &&  timeLeft > 0) {
-			var icon =3D document.createElement('img');
-			icon.alt =3D 'New!'; icon.src =3D =
-'http://www.epa.gov/epafiles/images/new-en.gif';
-			icon.width =3D '34'; icon.height =3D '16';
-			newItem[i].appendChild(icon);
-		}
-	}
-}
-
-function takeYear(theDate) { var x =3D theDate.getYear(); var y =3D x % =
-100; y +=3D (y < 38) ? 2000 : 1900; return y; }
-function nths(day) {
-	if (day =3D=3D 1 || day =3D=3D 21 || day =3D=3D 31) return 'st'; if =
-(day =3D=3D 2 || day =3D=3D 22) return 'nd';
-	if (day =3D=3D 3 || day =3D=3D 23) return 'rd'; return 'th';
-}
-
-function notice() {
-	var script =3D document.createElement('script');
-	script.type =3D 'text/javascript';
-	script.src =3D 'http://www.epa.gov/epahome/notice.js';
-	document.getElementsByTagName('head')[0].appendChild(script);
-}
-
-function addClass(element,name) {
-  if (!element.className) {
-    element.className =3D name;
-  } else {
-    element.className+=3D ' ';
-    element.className+=3D name;
-  }
-}
-
-function stripeTables() {
-	if (!document.getElementsByTagName('table')) return;
-	var tables =3D document.getElementsByTagName('table');
-	for (var i =3D 0; i<tables.length; i++) {
-		if (tables[i].className.match('zebra')) {
-			var myTR =3D tables[i].getElementsByTagName('tr');
-      for (var j=3D1; j<myTR.length; j=3Dj+2) {
-        addClass(myTR[j],'rowTint');
-      }
-    }
-  }
-}
-
-function trim(c) { if (c) c =3D c.replace(/^\s*|\s*$/,'');	return c;}
-function hasClass(obj, c) { if (!obj || !c) return false; c =3D trim(c); =
-var oldC =3D trim(obj.className); if (c && oldC && =
-oldC.match('\\b'+c+'\\b')) return true; else return false;}
-function walk(parent, list, contained) { if (!parent || !list || =
-!contained) return false; var num =3D 0; for (var j in contained) { num =
-=3D Math.max(num, contained[j]);} for (var i=3D0; i < =
-parent.childNodes.length; i++) { if (parent.childNodes[i].nodeType !=3D =
-1) continue; var child =3D parent.childNodes[i]; if (hasClass(child, =
-'ignore')) continue; else if ( (child.getAttribute('href') || =
-child.getAttribute('cite')) && !child.getAttribute('src') ) { var =
-thisLink =3D (child.getAttribute('href') ? child.href : child.cite); if =
-(thisLink.match(window.location+'#\w*') || =
-thisLink.match('^javascript:') || thisLink.match('^mailto:') || thisLink =
-=3D=3D child.innerHTML) continue; var note =3D =
-document.createElement('sup'); addClass(note,'printOnly'); var note_txt; =
-if (contained[thisLink]) { note_txt =3D =
-document.createTextNode(contained[thisLink]);} else { var li =3D =
-document.createElement('li'); var li_txt =3D =
-document.createTextNode(thisLink); li.appendChild(li_txt); =
-list.appendChild(li); num++; contained[thisLink] =3D num; note_txt =3D =
-document.createTextNode(num);} note.appendChild(note_txt); =
-parent.insertBefore(note, child.nextSibling); } else { walk(child, list, =
-contained);}}}
-function footnoteLinks(containerID,targetID) { if =
-(!document.getElementById(containerID) || =
-!document.getElementById(targetID)) return false; var container =3D =
-document.getElementById(containerID); var target =3D =
-document.getElementById(targetID); var h2 =3D =
-document.createElement('h2'); addClass(h2, 'printOnly'); var h2_txt =3D =
-document.createTextNode('URLs Provided for your Reference'); =
-h2.appendChild(h2_txt); var ol =3D document.createElement('ol'); =
-addClass(ol, 'printOnly'); var myArr =3D new Array(); walk(container, =
-ol, myArr); if (ol.getElementsByTagName('li').length) { =
-target.appendChild(h2); target.appendChild(ol);} =
-addClass(document.getElementsByTagName('html')[0], 'noted'); return =
-true;}
-
-function addEvent( obj, type, fn ) {
-	if (document.getElementById && document.createTextNode) {
-		if (obj.addEventListener)
-			obj.addEventListener( type, fn, false );
-		else if (obj.attachEvent) {
-			obj['e'+type+fn] =3D fn;
-			obj[type+fn] =3D function() { obj['e'+type+fn]( window.event ); }
-			obj.attachEvent( 'on'+type, obj[type+fn] );
-		}
-	}
-}
-	addEvent(window, 'load', printAsIs_Date_URL); addEvent(window, 'load', =
-newIcon);
-	addEvent(window, 'load', notice); addEvent(window, 'load', =
-stripeTables);
-	addEvent(window, 'load', function() =
-{footnoteLinks('printURLs','content');});
-------=_NextPart_000_0003_01C86FE3.9CC848D0--
+From: <Saved by Windows Internet Explorer 7>
+Subject: Air Permit Programs | Air & Radiation | US EPA
+Date: Fri, 15 Feb 2008 15:01:15 -0800
+MIME-Version: 1.0
+Content-Type: multipart/related;
+	type="text/html";
+	boundary="----=_NextPart_000_0003_01C86FE3.9CC848D0"
+X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198
+
+This is a multi-part message in MIME format.
+
+------=_NextPart_000_0003_01C86FE3.9CC848D0
+Content-Type: text/html;
+	charset="iso-8859-1"
+Content-Transfer-Encoding: quoted-printable
+Content-Location: http://www.epa.gov/air/oaqps/permjmp.html
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" =
+"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
+<HTML lang=3Den xml:lang=3D"en" =
+xmlns=3D"http://www.w3.org/1999/xhtml"><HEAD><TITLE>Air Permit Programs =
+| Air & Radiation | US EPA</TITLE><!-- #BeginTemplate =
+"/Templates/oaqps1.dwt" --><!-- DW6 --><!-- EPA Template version 3.2.1, =
+28 June 2006 --><!-- #BeginEditable "doctitle" -->
+<META content=3D"" name=3DDescription>
+<META content=3D"" name=3DKeywords><!-- #EndEditable --><!-- =
+#BeginEditable "metaElements" -->
+<META content=3D"" name=3DDC.Title>
+<META content=3D"" name=3DDC.Subject>
+<META content=3D"" name=3DDC.Type><!-- For date metadata, use the format =
+YYYY-MM-DD -->
+<META content=3D"" name=3DDC.Date.modified>
+<META content=3D"" name=3DDC.Date><!-- #EndEditable -->
+<META content=3Den|sp name=3DDC.Language>
+<META content=3D"" name=3DDC.Creator>
+<META http-equiv=3DContent-Style-Type content=3Dtext/css>
+<META http-equiv=3DContent-Type content=3D"text/html; =
+charset=3Diso-8859-1"><LINK=20
+href=3D"http://purl.org/dc/elements/1.1/" rel=3Dschema.DC><LINK =
+title=3D"ICRA labels"=20
+href=3D"http://www.epa.gov/labels.rdf" type=3Dapplication/rdf+xml =
+rel=3Dmeta>
+<STYLE type=3Dtext/css media=3Dscreen>@import url( =
+http://www.epa.gov/epafiles/s/epa.css );
+</STYLE>
+<!--[if lt IE 7]>
+		<link rel=3D"stylesheet" type=3D"text/css" =
+href=3D"http://www.epa.gov/epafiles/s/ie.css" />
+	<![endif]--><LINK media=3Dprint =
+href=3D"http://www.epa.gov/epafiles/s/print.css"=20
+type=3Dtext/css rel=3Dstylesheet>
+<SCRIPT src=3D"http://www.epa.gov/epafiles/js/epa-core.js"=20
+type=3Dtext/javascript></SCRIPT>
+
+<META content=3D"MSHTML 6.00.6000.16544" name=3DGENERATOR></HEAD>
+<BODY>
+<P class=3Dskip><A id=3Dskiptop title=3D"Jump to main content."=20
+href=3D"http://www.epa.gov/air/oaqps/permjmp.html#content">Jump to main=20
+content.</A></P>
+<DIV id=3Dheader><!-- START EPA HEADER -->
+<DIV id=3Dlogo><A title=3D"US EPA home page" =
+href=3D"http://www.epa.gov/"><IMG=20
+height=3D110 alt=3D"[logo] US EPA"=20
+src=3D"http://www.epa.gov/epafiles/images/logo_epaseal.gif" =
+width=3D100></A></DIV>
+<DIV id=3Dareaname><!-- START AREA NAME -->
+<P>Air Quality Planning &amp; Standards</P></DIV><!-- END AREA NAME =
+--><!-- START SEARCH CONTROLS -->
+<FORM id=3DEPAsearch action=3Dhttp://nlquery.epa.gov/epasearch/epasearch =
+method=3Dget><!-- START AREA SPECIFIC LINKS AND SEARCH BOX  --><!-- =
+CHANGE links to point to your own recent additions and contact pages =
+--><!-- REMOVE recent additions link if your area doesn't have one -->
+<P><A href=3D"http://www.epa.gov/air/oaqps/contact.html">Contact Us</A> =
+<SPAN=20
+class=3Dsearch><STRONG>Search:</STRONG> <INPUT type=3Dhidden =
+value=3Dairprogm=20
+name=3Dfld> <INPUT type=3Dhidden value=3D"Air Quality Planning &amp; =
+Standards"=20
+name=3Dareaname> <INPUT type=3Dhidden=20
+value=3Dhttp://www.epa.gov/air/oaqps/contact.html name=3Dareacontacts> =
+<!-- AREA ADVANCED SEARCH URL HERE (OPTIONAL) --><INPUT type=3Dhidden=20
+value=3Dhttp://www.epa.gov/air/oarsrch.html name=3Dareasearchurl> <!-- =
+THE REMAINING HIDDEN INPUTS ARE USED BY THE SEARCH ENGINE - DO NOT EDIT =
+--><INPUT=20
+type=3Dhidden value=3Depafiles_default.xsl name=3Dresult_template> =
+<INPUT type=3Dhidden=20
+value=3Dsamplefilt.hts name=3Dfilter> <INPUT id=3DEPAall type=3Dradio =
+value=3Depa=20
+name=3Dtypeofsearch><LABEL for=3DEPAall>All EPA</LABEL> <INPUT =
+id=3DAreaall type=3Dradio=20
+CHECKED value=3Darea name=3Dtypeofsearch><LABEL for=3DAreaall>This =
+Area</LABEL> <INPUT=20
+id=3Dsearchbox name=3Dquerytext> <INPUT id=3Dsearchbutton type=3Dsubmit =
+value=3DGo name=3Dsubmit></SPAN> </P></FORM><!-- END SEARCH CONTROLS -->
+<UL><!-- BEGIN BREADCRUMBS -->
+  <LI class=3Dfirst>You are here: <A href=3D"http://www.epa.gov/">EPA =
+Home</A>=20
+  <LI><A href=3D"http://www.epa.gov/air/">Air &amp; Radiation</A> <!-- =
+START AREA BREADCRUMBS --><!-- #BeginEditable "breadcrumbs" -->
+  <LI>Air Permit Programs=20
+<!-- #EndEditable --><!-- END AREA BREADCRUMBS --></LI></UL><!-- END =
+BREADCRUMBS --></DIV><!-- END EPA HEADER -->
+<HR class=3Dskip>
+
+<P class=3Dskip><A id=3Dpagecontents></A><A id=3Dpagetop></A></P>
+<DIV id=3Dcontent><!-- BEGIN PAGE CONTENTS --><!-- EPA SITE-WIDE =
+ANNOUNCEMENTS --><!-- DO NOT REMOVE - this code is used for emergency =
+messages --><!-- If this page is a Program Office or a Topics home page, =
+CHANGE "sitewidec" TO "sitewideb" -->
+<P id=3Dsitewidec></P><!-- BEGIN PAGE NAME -->
+<H1><!-- #BeginEditable "PageName" -->Air Permit Programs <!-- If using =
+a right-aligned image next to the page name, insert it here=20
+			- remember to include the align=3D"right" attribute in the IMG tag =
+--><!-- #EndEditable --></H1><!-- END PAGE NAME --><!-- BEGIN CONTENT =
+AREA --><!-- #BeginEditable "content" -->
+<TABLE cellSpacing=3D4 cellPadding=3D4 width=3D450 border=3D0>
+  <TBODY>
+  <TR>
+    <TD style=3D"BACKGROUND-COLOR: #e1ebf4; TEXT-ALIGN: center"><A=20
+      href=3D"http://www.epa.gov/airmarkets/">Title IV Permits</A> | <A=20
+      href=3D"http://www.epa.gov/air/oaqps/permits/index.html">Title V =
+Permits</A>=20
+      | <A href=3D"http://www.epa.gov/nsr/">New Source =
+Review</A></TD></TR>
+  <TR>
+    <TD>
+      <P>This web site provides information and links on the three major =
+permit=20
+      programs required by the Clean Air Act: </P>
+      <UL>
+        <LI><A href=3D"http://www.epa.gov/acidrain/">acid rain =
+permits</A> (called=20
+        <EM>Title IV permits</EM>),=20
+        <LI><A href=3D"http://www.epa.gov/nsr/">preconstruction =
+permits</A>=20
+        (called <EM>New Source Review permits</EM>), and=20
+        <LI><A =
+href=3D"http://www.epa.gov/air/oaqps/permits/index.html">operating=20
+        permits</A> (called <EM>Title V permits</EM>). </LI></UL>It also =
+allows=20
+      you to view some permits on-line, engineering reports for specific =
+
+      facilities, and correspondence from regional, state and local air=20
+      agencies.=20
+      <P>Each year in the U.S., industrial operations emit nearly 100 =
+million=20
+      tons of pollutants into the air. These include pollutants that =
+make=20
+      breathing difficult, form urban smog, impair visibility, and =
+attack=20
+      ecosystems. Some of these pollutants can cause cancer or other =
+serious=20
+      health effects. Some of the many pollutants emitted into the air =
+each year=20
+      are sulfur dioxide, nitrogen dioxides, carbon monoxide, benzene, =
+mercury=20
+      and dioxin. Many of the sources of this air pollution are large=20
+      facilities, such as petroleum refineries and chemical plants, that =
+can=20
+      have literally thousands of potential emission points. Other =
+pollution=20
+      sources can be smaller, such as gasoline filling stations, dry =
+cleaning=20
+      operations, and paint spray booths. Several of these air pollution =
+
+      sources, particularly the larger sources, are required by federal =
+measures=20
+      to reduce emissions and to obtain air pollution permits to ensure=20
+      compliance. </P>
+      <P>The acid rain program is a market-based system designed to =
+lower sulfur=20
+      dioxide and nitrogen dioxide pollution levels. Reductions in =
+emissions are=20
+      obtained through a program of emission allowances. The allowance =
+hat each=20
+      facility owns must be reflected in its acid rain permit, which =
+also=20
+      includes emissions monitoring and other requirements. </P>
+      <P>The new source review program requires that industrial sources =
+install=20
+      good pollution control technology when they construct or =
+significantly=20
+      modify their facilities. </P>
+      <P>The operating permit program requires that major industrial =
+sources and=20
+      certain other sources obtain a permit that consolidates all of the =
+
+      applicable requirements for the facility into one document. The =
+purpose of=20
+      title V permits is to reduce violations of air pollution laws and =
+improve=20
+      enforcement of those laws. </P>
+      <P></P></TD></TR></TBODY></TABLE><!-- #EndEditable --><!-- BEGIN =
+AREA FOOTER --><!-- ADD TEXT/LINKS FOR AREA FOOTER WITHIN THIS PARAGRAPH =
+TAG -->
+<P class=3Dignore id=3Dareafooter><A=20
+href=3D"http://www.epa.gov/air/oaqps/publicat.html">Publications</A> | =
+<A=20
+href=3D"http://www.epa.gov/air/oaqps/org/index.html">Organization</A> | =
+<A=20
+href=3D"http://www.epa.gov/ttn/index.html">Technical =
+Information</A></P><!-- END AREA FOOTER --></DIV><!-- END CONTENT -->
+<HR class=3Dskip>
+
+<DIV id=3Darea-nav><!-- BEGIN LEFT SIDEBAR NAVIGATION -->
+<H3 class=3Dskip>Local Navigation</H3>
+<UL>
+  <LI><A href=3D"http://www.epa.gov/air/oaqps/index.html">Air Quality =
+Planning=20
+  &amp; Standards Home</A>=20
+  <LI><A href=3D"http://www.epa.gov/air/oaqps/cleanair.html">Air =
+Quality</A>=20
+  <LI><A =
+href=3D"http://www.epa.gov/air/visibility/index.html">Visibility</A>=20
+  <LI><A =
+href=3D"http://www.epa.gov/air/oaqps/permits/index.html">Permits</A>=20
+  <LI><A =
+href=3D"http://www.epa.gov/air/oaqps/emissns.html">Emissions</A>=20
+  <LI><A href=3D"http://www.epa.gov/air/toxicair/index.html">Toxic Air=20
+  Pollutants</A>=20
+  <LI><A =
+href=3D"http://www.epa.gov/air/oaqps/projects.html">Projects</A>=20
+</LI></UL></DIV><!-- END LEFT SIDEBAR NAVIGATION -->
+<HR class=3Dskip>
+
+<DIV id=3Dfooter><!-- BEGIN FOOTER -->
+<UL id=3Dglobalfooter>
+  <LI><A href=3D"http://www.epa.gov/">EPA Home</A>=20
+  <LI><A href=3D"http://www.epa.gov/epafiles/usenotice.htm">Privacy and =
+Security=20
+  Notice</A> <!-- BEGIN AREA COMMENTS LINK --><!-- CHANGE link to point =
+to your own contact page -->
+  <LI class=3Dlast><A =
+href=3D"http://www.epa.gov/air/oaqps/contact.html">Contact=20
+  Us</A> <!-- END AREA COMMENTS LINK --></LI></UL></DIV><!-- END FOOTER =
+-->
+<P class=3Dskip><A id=3Dskipbot title=3D"Jump to main content."=20
+href=3D"http://www.epa.gov/air/oaqps/permjmp.html#content">Jump to main=20
+content.</A></P><!-- #EndTemplate --></BODY></HTML>
+
+------=_NextPart_000_0003_01C86FE3.9CC848D0
+Content-Type: image/gif
+Content-Transfer-Encoding: base64
+Content-Location: http://www.epa.gov/epafiles/images/logo_epaseal.gif
+
+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
+Ej/xFF/xFn/xGJ/xGr/xHN/xHv/xIN/wAQEAOw==
+
+------=_NextPart_000_0003_01C86FE3.9CC848D0
+Content-Type: text/css;
+	charset="iso-8859-1"
+Content-Transfer-Encoding: quoted-printable
+Content-Location: http://www.epa.gov/air/oaqps/epa-content.css
+
+#content .right {
+	FLOAT: right
+}
+#content .center {
+	TEXT-ALIGN: center
+}
+#content .left {
+	FLOAT: left
+}
+#content .clear {
+	CLEAR: both
+}
+#content INS {
+	TEXT-DECORATION: none
+}
+#content ABBR {
+	CURSOR: help; BORDER-BOTTOM: #d0d0d0 1px dashed; FONT-VARIANT: =
+small-caps
+}
+#content ACRONYM {
+	CURSOR: help; BORDER-BOTTOM: #d0d0d0 1px dashed; FONT-VARIANT: =
+small-caps
+}
+#content CODE {
+	FONT: 1em "Lucida Console", "Andale Mono", "monotype.com", "Bitstream =
+Vera Sans Mono", monospace
+}
+#content PRE {
+	FONT: 1em "Lucida Console", "Andale Mono", "monotype.com", "Bitstream =
+Vera Sans Mono", monospace
+}
+#content HR {
+	CLEAR: both; BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; =
+MARGIN: 3px 0px; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px =
+solid; BACKGROUND-COLOR: #ccc
+}
+#content P.pagetop {
+	CLEAR: both; FONT-SIZE: 0.8em; BACKGROUND: =
+url(http://www.epa.gov/epafiles/s/i/pagetop.gif) no-repeat 0px 50%; =
+MARGIN: 1em 0px
+}
+#content P.pagetop A {
+	PADDING-LEFT: 8px; COLOR: #666; TEXT-DECORATION: none
+}
+#content P.pagetop A:hover {
+	TEXT-DECORATION: underline
+}
+#content .imgcontainer-r {
+	BORDER-RIGHT: #ccc 2px solid; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 2px =
+solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; BORDER-LEFT: #ccc 2px =
+solid; PADDING-TOP: 0px; BORDER-BOTTOM: #ccc 2px solid; =
+BACKGROUND-COLOR: #ffffdb
+}
+#content .imgcontainer-l {
+	BORDER-RIGHT: #ccc 2px solid; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 2px =
+solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; BORDER-LEFT: #ccc 2px =
+solid; PADDING-TOP: 0px; BORDER-BOTTOM: #ccc 2px solid; =
+BACKGROUND-COLOR: #ffffdb
+}
+#content .imgcontainer-r IMG {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
+0px -3px; PADDING-TOP: 0px
+}
+#content .imgcontainer-l IMG {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
+0px -3px; PADDING-TOP: 0px
+}
+#content .imgcontainer-r {
+	FLOAT: right; MARGIN: 0px 0px 6px 6px
+}
+#content .imgcontainer-l {
+	FLOAT: left; MARGIN: 0px 6px 6px 0px
+}
+#content .imgcontainer-l .caption A {
+	TEXT-DECORATION: none
+}
+#content .imgcontainer-r .caption A {
+	TEXT-DECORATION: none
+}
+#content .imgcontainer-r .caption A:hover {
+	TEXT-DECORATION: underline
+}
+#content .imgcontainer-l .caption A:hover {
+	TEXT-DECORATION: underline
+}
+#content .caption A:hover {
+	TEXT-DECORATION: underline
+}
+#content .caption {
+	PADDING-RIGHT: 4px; PADDING-LEFT: 4px; FONT-SIZE: 0.85em; =
+PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-TOP: 2px
+}
+#content UL {
+	MARGIN-TOP: 0px; LIST-STYLE-IMAGE: =
+url(http://www.epa.gov/epafiles/s/i/bu_sftblue.gif)
+}
+#content UL OL {
+	LIST-STYLE-IMAGE: none
+}
+#content LI {
+	MARGIN-TOP: 0px; PADDING-LEFT: 0px; MARGIN-LEFT: 10px; PADDING-TOP: 0px
+}
+#content LI LI {
+	PADDING-LEFT: 0px; MARGIN-LEFT: 0px
+}
+#content H1 {
+	FONT-SIZE: 1.9em; MARGIN: 0px 0px 0.68em; LINE-HEIGHT: 1em
+}
+#content H2 {
+	FONT-SIZE: 1.6em; MARGIN: 1.21em 0px 0.4em; LINE-HEIGHT: 1em
+}
+#content H3 {
+	FONT-SIZE: 1.35em; MARGIN: 1.44em 0px 0.48em; LINE-HEIGHT: 1em
+}
+#content H4 {
+	FONT-SIZE: 1.2em; MARGIN: 1.62em 0px 0.54em; LINE-HEIGHT: 1.08em
+}
+#content H5 {
+	FONT-SIZE: 1em; MARGIN: 1.95em 0px 0.65em; LINE-HEIGHT: 1.3em
+}
+#content H6 {
+	FONT-SIZE: 0.8em; MARGIN: 2.43em 0px 0.81em; LINE-HEIGHT: 1.62em
+}
+#content P {
+	MARGIN-TOP: 1.3em; FONT-SIZE: 1em; MARGIN-BOTTOM: 1.3em; LINE-HEIGHT: =
+1.3em
+}
+#content #sitewidea {
+	FONT-WEIGHT: bold; FONT-SIZE: 1em; COLOR: #c33
+}
+#content #sitewideb {
+	FONT-WEIGHT: bold; FONT-SIZE: 1em; COLOR: #c33
+}
+#content #sitewidec {
+	FONT-WEIGHT: bold; FONT-SIZE: 1em; COLOR: #c33
+}
+#content .warning {
+	FONT-WEIGHT: bold; FONT-SIZE: 1em; COLOR: #c33
+}
+#content .fileinfo {
+	FONT-SIZE: 0.85em; COLOR: #666
+}
+#content .epaltsansbold {
+	FONT-WEIGHT: bold; FONT-SIZE: 0.85em; FONT-FAMILY: Arial, Helvetica, =
+sans-serif
+}
+#content .epaltsans {
+	FONT-SIZE: 0.9em; FONT-FAMILY: Arial, Helvetica, sans-serif
+}
+#content .epaLtSans {
+	FONT-SIZE: 0.9em; FONT-FAMILY: Arial, Helvetica, sans-serif
+}
+#content .boxmulti {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0.9em; BACKGROUND: =
+url(http://www.epa.gov/epafiles/s/i/curves-bottom.gif) #f1f1f1 no-repeat =
+left bottom; FLOAT: right; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 1em =
+0.5em; WIDTH: 200px; PADDING-TOP: 0px
+}
+#content .boxnat {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0.9em; BACKGROUND: =
+url(http://www.epa.gov/epafiles/s/i/curves-bottom.gif) #f1f1f1 no-repeat =
+left bottom; FLOAT: right; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 1em =
+0.5em; WIDTH: 200px; PADDING-TOP: 0px
+}
+#content .boxalert {
+	BORDER-RIGHT: #c33 2px solid; PADDING-RIGHT: 0px; BORDER-TOP: #c33 2px =
+solid; PADDING-LEFT: 0px; FONT-SIZE: 0.9em; FLOAT: right; =
+PADDING-BOTTOM: 0px; MARGIN: 0px 0px 5px 5px; BORDER-LEFT: #c33 2px =
+solid; WIDTH: 200px; PADDING-TOP: 0px; BORDER-BOTTOM: #c33 2px solid; =
+BACKGROUND-COLOR: #f1f1f1
+}
+#content .box {
+	BORDER-RIGHT: #ccc 2px solid; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 2px =
+solid; PADDING-LEFT: 0px; FONT-SIZE: 0.9em; PADDING-BOTTOM: 0px; MARGIN: =
+5px 5px 5px 0px; BORDER-LEFT: #ccc 2px solid; WIDTH: 50%; PADDING-TOP: =
+0px; BORDER-BOTTOM: #ccc 2px solid
+}
+#content .boxmulti H5 {
+	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FONT-SIZE: 1em; PADDING-BOTTOM: =
+2px; MARGIN: 0px 0px 0.2em; COLOR: #fff; PADDING-TOP: 2px; =
+BACKGROUND-COLOR: #5c9261; TEXT-ALIGN: center
+}
+#content .boxnat H5 {
+	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FONT-SIZE: 1em; PADDING-BOTTOM: =
+2px; MARGIN: 0px 0px 0.2em; COLOR: #fff; PADDING-TOP: 2px; =
+BACKGROUND-COLOR: #5c9261; TEXT-ALIGN: center
+}
+#content .boxalert H5 {
+	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FONT-SIZE: 1em; PADDING-BOTTOM: =
+2px; MARGIN: 0px 0px 0.2em; COLOR: #fff; PADDING-TOP: 2px; =
+BACKGROUND-COLOR: #5c9261; TEXT-ALIGN: center
+}
+#content .box H5 {
+	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FONT-SIZE: 1em; PADDING-BOTTOM: =
+2px; MARGIN: 0px 0px 0.2em; COLOR: #fff; PADDING-TOP: 2px; =
+BACKGROUND-COLOR: #5c9261; TEXT-ALIGN: center
+}
+#content .boxmulti H5 {
+	BACKGROUND: url(http://www.epa.gov/epafiles/s/i/curves-top.gif) #5c9261 =
+no-repeat left top
+}
+#content .boxnat H5 {
+	BACKGROUND: url(http://www.epa.gov/epafiles/s/i/curves-top.gif) #5c9261 =
+no-repeat left top
+}
+#content .boxnat H5 {
+	BACKGROUND-COLOR: #369
+}
+#content .boxalert H5 {
+	BACKGROUND-COLOR: #c33
+}
+#content .box H5 {
+	COLOR: #000; BACKGROUND-COLOR: #ddd; TEXT-ALIGN: left
+}
+#content .boxmulti UL LI {
+	LIST-STYLE-IMAGE: url(http://www.epa.gov/epafiles/s/i/bu_sftgrn.gif)
+}
+#content .boxalert UL LI {
+	LIST-STYLE-IMAGE: url(http://www.epa.gov/epafiles/s/i/bu_alertred.gif)
+}
+#content .centered {
+	MARGIN: 5px auto
+}
+#content .righted {
+	FLOAT: right; MARGIN: 5px 0px 5px 5px
+}
+#content .centered H5 {
+	TEXT-ALIGN: center
+}
+#content .righted H5 {
+	TEXT-ALIGN: center
+}
+#content .color1 {
+	BORDER-RIGHT: #363 2px solid; BORDER-TOP: #363 2px solid; BORDER-LEFT: =
+#363 2px solid; BORDER-BOTTOM: #363 2px solid
+}
+#content .color2 {
+	BORDER-RIGHT: #006 2px solid; BORDER-TOP: #006 2px solid; BORDER-LEFT: =
+#006 2px solid; BORDER-BOTTOM: #006 2px solid
+}
+#content .color1 H5 {
+	COLOR: #fff; BACKGROUND-COLOR: #5c9261
+}
+#content .color1 UL LI {
+	LIST-STYLE-IMAGE: url(http://www.epa.gov/epafiles/s/i/bu_sftgrn.gif)
+}
+#content .color2 H5 {
+	COLOR: #fff; BACKGROUND-COLOR: #369
+}
+#content .boxmulti UL {
+	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
+}
+#content .boxmulti OL {
+	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
+}
+#content .boxnat UL {
+	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
+}
+#content .boxnat OL {
+	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
+}
+#content .boxalert UL {
+	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
+}
+#content .boxalert OL {
+	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
+}
+#content .box UL {
+	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
+}
+#content .box OL {
+	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
+}
+#content .boxmulti LI {
+	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
+MARGIN-LEFT: -1em; PADDING-TOP: 0px
+}
+#content .boxnat LI {
+	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
+MARGIN-LEFT: -1em; PADDING-TOP: 0px
+}
+#content .boxalert LI {
+	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
+MARGIN-LEFT: -1em; PADDING-TOP: 0px
+}
+#content .box LI {
+	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
+MARGIN-LEFT: -1em; PADDING-TOP: 0px
+}
+#content .boxmulti LI LI {
+	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
+MARGIN-LEFT: -2em; PADDING-TOP: 0px
+}
+#content .boxnat LI LI {
+	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
+MARGIN-LEFT: -2em; PADDING-TOP: 0px
+}
+#content .boxalert LI LI {
+	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
+MARGIN-LEFT: -2em; PADDING-TOP: 0px
+}
+#content .box LI LI {
+	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
+MARGIN-LEFT: -2em; PADDING-TOP: 0px
+}
+#content .boxmulti P {
+	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 0px; MARGIN: =
+0.5em 0px; PADDING-TOP: 0px
+}
+#content .boxnat P {
+	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 0px; MARGIN: =
+0.5em 0px; PADDING-TOP: 0px
+}
+#content .boxalert P {
+	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 0px; MARGIN: =
+0.5em 0px; PADDING-TOP: 0px
+}
+#content .box P {
+	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 0px; MARGIN: =
+0.5em 0px; PADDING-TOP: 0px
+}
+#content .boxmulti A {
+	TEXT-DECORATION: none
+}
+#content .boxnat A {
+	TEXT-DECORATION: none
+}
+#content .boxalert A {
+	TEXT-DECORATION: none
+}
+#content .box A {
+	TEXT-DECORATION: none
+}
+#content .boxmulti A:hover {
+	TEXT-DECORATION: underline
+}
+#content .boxnat A:hover {
+	TEXT-DECORATION: underline
+}
+#content .boxalert A:hover {
+	TEXT-DECORATION: underline
+}
+#content .box A:hover {
+	TEXT-DECORATION: underline
+}
+#content .boxsimple {
+	BORDER-RIGHT: #ccc 2px solid; BORDER-TOP: #ccc 2px solid; FONT-SIZE: =
+0.9em; FLOAT: right; MARGIN: 0px 0px 1em 1em; BORDER-LEFT: #ccc 2px =
+solid; WIDTH: 15%; BORDER-BOTTOM: #ccc 2px solid
+}
+#content .boxsimple H5 {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 1em; PADDING-BOTTOM: =
+0px; MARGIN: 0px; PADDING-TOP: 0px
+}
+#content .boxsimple P {
+	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 0px; MARGIN: =
+0.5em 0px; PADDING-TOP: 0px
+}
+#content P.pullquote {
+	BORDER-RIGHT: #ccc 0px solid; PADDING-RIGHT: 0.5em; BORDER-TOP: #ccc =
+2px solid; PADDING-LEFT: 0.5em; FONT-WEIGHT: bold; FONT-SIZE: 1.1em; =
+FLOAT: right; PADDING-BOTTOM: 0.5em; MARGIN: 0.5em 0px 0.5em 1em; =
+BORDER-LEFT: #ccc 0px solid; COLOR: #333; LINE-HEIGHT: normal; =
+PADDING-TOP: 0.5em; BORDER-BOTTOM: #ccc 2px solid; FONT-STYLE: italic
+}
+#content P.pullquote SPAN.author {
+	FONT-SIZE: 0.8em; FONT-STYLE: normal
+}
+#content .disclaimer {
+	BORDER-RIGHT: #ccc 2px solid; PADDING-RIGHT: 0.3em; BORDER-TOP: #ccc =
+2px solid; PADDING-LEFT: 0.3em; FONT-SIZE: 0.9em; BACKGROUND: #f1f1f1; =
+FLOAT: right; PADDING-BOTTOM: 0.3em; MARGIN: 1em 0px 1em 1em; =
+BORDER-LEFT: #ccc 2px solid; WIDTH: 20%; LINE-HEIGHT: 1.1; PADDING-TOP: =
+0.3em; BORDER-BOTTOM: #ccc 2px solid
+}
+#content .disclaimer-wide {
+	BORDER-RIGHT: #ccc 2px solid; PADDING-RIGHT: 0.3em; BORDER-TOP: #ccc =
+2px solid; PADDING-LEFT: 0.3em; FONT-SIZE: 0.9em; BACKGROUND: #f1f1f1; =
+FLOAT: right; PADDING-BOTTOM: 0.3em; MARGIN: 1em 0px 1em 1em; =
+BORDER-LEFT: #ccc 2px solid; WIDTH: 20%; LINE-HEIGHT: 1.1; PADDING-TOP: =
+0.3em; BORDER-BOTTOM: #ccc 2px solid
+}
+#content P#archive {
+	BORDER-RIGHT: #ccc 2px solid; PADDING-RIGHT: 0.3em; BORDER-TOP: #ccc =
+2px solid; PADDING-LEFT: 0.3em; FONT-SIZE: 0.9em; BACKGROUND: #f1f1f1; =
+FLOAT: right; PADDING-BOTTOM: 0.3em; MARGIN: 1em 0px 1em 1em; =
+BORDER-LEFT: #ccc 2px solid; WIDTH: 20%; LINE-HEIGHT: 1.1; PADDING-TOP: =
+0.3em; BORDER-BOTTOM: #ccc 2px solid
+}
+#content .disclaimer-wide {
+	PADDING-RIGHT: 0.3em; PADDING-LEFT: 0.3em; FLOAT: none; PADDING-BOTTOM: =
+0.3em; MARGIN: 1em 10%; WIDTH: auto; PADDING-TOP: 0.3em; TEXT-ALIGN: =
+center
+}
+#content P#archive {
+	PADDING-RIGHT: 0.3em; PADDING-LEFT: 30px; BACKGROUND: =
+url(http://www.epa.gov/epafiles/images/epafiles_misc_outdatediconmini.gif=
+) #f1f1f1 no-repeat 0.3em 50%; FLOAT: none; PADDING-BOTTOM: 0.3em; =
+MARGIN: 0px 0px 0.3em; WIDTH: 350px; PADDING-TOP: 0.3em
+}
+#content B.cn {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 1px; BACKGROUND: =
+url(http://www.epa.gov/epafiles/s/i/white.gif) no-repeat; =
+PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 10px; LINE-HEIGHT: 1px; =
+PADDING-TOP: 0px; POSITION: absolute; HEIGHT: 10px
+}
+#content B.tl {
+	BACKGROUND-POSITION: left top; LEFT: -1px; TOP: -1px
+}
+#content B.tr {
+	BACKGROUND-POSITION: right top; RIGHT: -1px; TOP: -1px
+}
+#content TABLE.table {
+	MARGIN: 0px 0px 1em; BORDER-COLLAPSE: collapse
+}
+#content TABLE.tablebord {
+	MARGIN: 0px 0px 1em; BORDER-COLLAPSE: collapse
+}
+#content TABLE.table CAPTION {
+	FONT-WEIGHT: bold; PADDING-BOTTOM: 6px
+}
+#content TABLE.tablebord CAPTION {
+	FONT-WEIGHT: bold; PADDING-BOTTOM: 6px
+}
+#content TABLE.table TH {
+	BORDER-RIGHT: #ccc 0px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 0px =
+solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: #ccc 0px =
+solid; PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px solid
+}
+#content TABLE.table TD {
+	BORDER-RIGHT: #ccc 0px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 0px =
+solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: #ccc 0px =
+solid; PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px solid
+}
+#content TABLE.tablebord TH {
+	BORDER-RIGHT: #ccc 0px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 0px =
+solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: #ccc 0px =
+solid; PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px solid
+}
+#content TABLE.tablebord TD {
+	BORDER-RIGHT: #ccc 0px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 0px =
+solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: #ccc 0px =
+solid; PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px solid
+}
+#content TABLE.table THEAD {
+	BACKGROUND: #ccc; COLOR: #000
+}
+#content TABLE.table TFOOT {
+	BACKGROUND: #ccc; COLOR: #000
+}
+#content TABLE.tablebord THEAD {
+	BACKGROUND: #ccc; COLOR: #000
+}
+#content TABLE.tablebord TFOOT {
+	BACKGROUND: #ccc; COLOR: #000
+}
+#content TABLE.table TH {
+	BORDER-RIGHT: #ddd 1px solid; BORDER-TOP: #ddd 0px solid; BACKGROUND: =
+#ccc; BORDER-LEFT: #ddd 1px solid; COLOR: #000; BORDER-BOTTOM: #ddd 0px =
+solid
+}
+#content TABLE.tablebord TH {
+	BORDER-RIGHT: #ddd 1px solid; BORDER-TOP: #ddd 0px solid; BACKGROUND: =
+#ccc; BORDER-LEFT: #ddd 1px solid; COLOR: #000; BORDER-BOTTOM: #ddd 0px =
+solid
+}
+#content TABLE.zebra TR.rowTint {
+	BACKGROUND-COLOR: #f1f1f1
+}
+#content TABLE.tablebord TR.rowTint {
+	BACKGROUND-COLOR: #f1f1f1
+}
+#content TABLE.tablebord {
+	BORDER-RIGHT: #ccc 0px solid; BORDER-TOP: #ccc 1px solid; BORDER-LEFT: =
+#ccc 1px solid; BORDER-BOTTOM: #ccc 0px solid
+}
+#content TABLE.tablebord TH {
+	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
+1px; BORDER-RIGHT-WIDTH: 1px
+}
+#content TABLE.tablebord TD {
+	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
+1px; BORDER-RIGHT-WIDTH: 1px
+}
+#content TABLE.qfinder {
+	PADDING-BOTTOM: 0.2em; MARGIN: 0px 0px 1em; FONT: 90%/1.1em Arial, =
+Helvetica, sans-serif; WIDTH: 100%; BORDER-BOTTOM: #5c9261 1px solid; =
+BORDER-COLLAPSE: collapse
+}
+#content TABLE.qfinder THEAD TH {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: =
+url(http://www.epa.gov/epafiles/s/i/qf-r.gif) #5c9261 no-repeat right =
+top; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px
+}
+#content TABLE.qfinder THEAD TH P {
+	PADDING-RIGHT: 8px; PADDING-LEFT: 8px; FONT-WEIGHT: bold; FONT-SIZE: =
+1.3em; BACKGROUND: url(http://www.epa.gov/epafiles/s/i/qf-l.gif) =
+no-repeat; PADDING-BOTTOM: 3px; MARGIN: 0px 8px 0px 0px; COLOR: #fff; =
+PADDING-TOP: 3px; TEXT-ALIGN: left
+}
+#content TABLE.qfinder THEAD TD {
+	PADDING-RIGHT: 8px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
+PADDING-TOP: 0px
+}
+#content TABLE.qfinder TBODY TD {
+	VERTICAL-ALIGN: top; LINE-HEIGHT: 1.2em; PADDING-TOP: 0.1em
+}
+#content TABLE.qfinder A {
+	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 7px; PADDING-BOTTOM: =
+0px; MARGIN: 0px; PADDING-TOP: 0px; TEXT-DECORATION: none
+}
+#content TABLE.qfinder TD A:hover {
+	BACKGROUND-COLOR: #f1f1f1; TEXT-DECORATION: none
+}
+#content TABLE.qfinder TD A.more {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 17px; BACKGROUND: =
+url(http://www.epa.gov/epahome/images/more_topic.gif) no-repeat 7px 3px; =
+PADDING-BOTTOM: 0px; PADDING-TOP: 0px
+}
+#content FORM.form LABEL {
+	DISPLAY: block; FLOAT: left; MARGIN-BOTTOM: 10px; WIDTH: 150px
+}
+#content FORM.form INPUT {
+	DISPLAY: block; FLOAT: left; MARGIN-BOTTOM: 10px; WIDTH: 150px
+}
+#content FORM.form FIELDSET {
+	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
+none; BORDER-BOTTOM-STYLE: none
+}
+#content FORM.form LABEL {
+	PADDING-RIGHT: 10px; WIDTH: 100px; TEXT-ALIGN: right
+}
+#content FORM.form BR {
+	CLEAR: left
+}
+#content FORM.form INPUT#formsubmit {
+	MARGIN: 10px 0px 10px 110px; WIDTH: auto
+}
+
+------=_NextPart_000_0003_01C86FE3.9CC848D0
+Content-Type: text/css;
+	charset="iso-8859-1"
+Content-Transfer-Encoding: quoted-printable
+Content-Location: http://www.epa.gov/epafiles/s/epa.css
+
+@import url( epa-content.css );
+.skip {
+	FONT-SIZE: 0px; LEFT: 0px; OVERFLOW: hidden; WIDTH: 0px; =
+BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
+none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; BORDER-BOTTOM-STYLE: =
+none
+}
+.printOnly {
+	DISPLAY: none
+}
+IMG {
+	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
+none; BORDER-BOTTOM-STYLE: none
+}
+A IMG {
+	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
+none; BORDER-BOTTOM-STYLE: none
+}
+:link IMG {
+	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
+none; BORDER-BOTTOM-STYLE: none
+}
+:visited IMG {
+	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
+none; BORDER-BOTTOM-STYLE: none
+}
+A:link {
+	COLOR: #33c
+}
+A:visited {
+	COLOR: #609
+}
+A:hover {
+	COLOR: #933
+}
+A:active {
+	COLOR: #933
+}
+BODY {
+	PADDING-RIGHT: 0px; MIN-WIDTH: 760px; PADDING-LEFT: 0px; BACKGROUND: =
+url(http://www.epa.gov/epafiles/s/i/epafiles_misc_bg.gif) #fff repeat-y =
+0px 50%; PADDING-BOTTOM: 0px; MARGIN: 0px 5% 40px 0px; FONT: 75%/1.3 =
+Verdana, Tahoma, sans-serif; COLOR: #000; PADDING-TOP: 0px
+}
+#header {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: =
+url(http://www.epa.gov/epafiles/images/epafiles_ban_topepa.gif) =
+no-repeat right top; LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 1px 0px =
+0px; PADDING-TOP: 26px; POSITION: relative; TOP: 0px
+}
+#content {
+	MARGIN: 30px 0px 20px 151px; POSITION: relative
+}
+#area-nav {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; LEFT: 5px; PADDING-BOTTOM: 0px; =
+MARGIN: 0px; WIDTH: 132px; PADDING-TOP: 0px; POSITION: absolute; TOP: =
+130px
+}
+#footer {
+	CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0.85em; =
+PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 151px; PADDING-TOP: 0px; =
+TEXT-ALIGN: center
+}
+#header DIV#logo {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; LEFT: 22px; PADDING-BOTTOM: 0px; =
+MARGIN: 0px; PADDING-TOP: 0px; POSITION: absolute; TOP: 9px
+}
+#areaname {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 51px; BACKGROUND: =
+url(http://www.epa.gov/epafiles/images/epafiles_ban_endtop.gif) #006 =
+no-repeat 100% 0%; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 100px; =
+COLOR: #fff; PADDING-TOP: 0px
+}
+DIV#areaname P {
+	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; FONT-WEIGHT: =
+bold; FONT-SIZE: 1.7em; BACKGROUND: =
+url(http://www.epa.gov/epafiles/images/epafiles_ban_endbottom.gif) =
+no-repeat 100% 100%; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: #fff; =
+LINE-HEIGHT: 1.3; PADDING-TOP: 0px
+}
+#header P {
+	FONT-SIZE: 0.85em; BACKGROUND: #fff; MARGIN: 1px 0px 0px 151px; COLOR: =
+#000; POSITION: relative
+}
+#header P#tagline {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
+0px 4px 151px; LINE-HEIGHT: 1.1; PADDING-TOP: 0px
+}
+#EPAsearch {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
+0px; PADDING-TOP: 0px
+}
+#header .search {
+	FONT-SIZE: 1.2em; MARGIN: 0px 0px 0px 2em
+}
+#searchbox {
+	BORDER-RIGHT: #bdf 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #79c 1px =
+solid; PADDING-LEFT: 2px; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 2px; =
+BORDER-LEFT: #79c 1px solid; WIDTH: 120px; PADDING-TOP: 2px; =
+BORDER-BOTTOM: #bdf 1px solid
+}
+#searchbutton {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
+20px 2px 0px; PADDING-TOP: 0px
+}
+#header UL {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 4px; FONT-SIZE: 0.85em; =
+PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 147px; COLOR: #000; =
+LINE-HEIGHT: 1.2; PADDING-TOP: 0px; LIST-STYLE-TYPE: none; =
+LETTER-SPACING: -0.04em; BACKGROUND-COLOR: #e1ebf4
+}
+#header UL LI {
+	PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 14px; BACKGROUND: =
+url(http://www.epa.gov/epafiles/s/i/breadcrumbarrow.gif) no-repeat 0% =
+50%; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px
+}
+#header UL LI A {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
+0px; PADDING-TOP: 0px
+}
+#header UL LI.first {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND-IMAGE: none; =
+PADDING-BOTTOM: 0px; PADDING-TOP: 0px
+}
+#content P#areafooter {
+	CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0.85em; =
+PADDING-BOTTOM: 0px; PADDING-TOP: 20px; TEXT-ALIGN: center
+}
+#area-nav {
+	FONT-FAMILY: Arial, Helvetica, sans-serif; BACKGROUND-COLOR: #369
+}
+#area-nav HR {
+	BORDER-RIGHT: #fff 1px solid; BORDER-TOP: #fff 1px solid; BORDER-LEFT: =
+#fff 1px solid; WIDTH: 85%; BORDER-BOTTOM: #fff 1px solid; =
+BACKGROUND-COLOR: #fff
+}
+#area-nav UL LI HR {
+	BORDER-RIGHT: #fff 1px solid; BORDER-TOP: #fff 1px solid; MARGIN: 6px =
+0px -2px 4px; BORDER-LEFT: #fff 1px solid; WIDTH: 112px; BORDER-BOTTOM: =
+#fff 1px solid; BACKGROUND-COLOR: #fff
+}
+#area-nav UL {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
+0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
+}
+#area-nav UL LI {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 6px; PADDING-BOTTOM: 6px; MARGIN: =
+0px; TEXT-INDENT: -0.5em; PADDING-TOP: 3px
+}
+#area-nav UL UL {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
+0px; PADDING-TOP: 0px
+}
+#area-nav UL UL LI {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 12px; PADDING-BOTTOM: 1px; MARGIN: =
+0px; LINE-HEIGHT: 1.1; PADDING-TOP: 0px
+}
+#area-nav A {
+	DISPLAY: block; FONT-WEIGHT: bold; FONT-SIZE: 1em; COLOR: #fff; =
+LINE-HEIGHT: 1.2; TEXT-DECORATION: none
+}
+#area-nav A:hover {
+	COLOR: #90f0ff
+}
+#area-nav A:active {
+	COLOR: #90f0ff
+}
+UL#globalfooter {
+	PADDING-RIGHT: 0px; BORDER-TOP: #006 4px solid; PADDING-LEFT: 0px; =
+PADDING-BOTTOM: 0px; MARGIN: 0px 20% 10px; PADDING-TOP: 10px; =
+LIST-STYLE-TYPE: none
+}
+UL#globalfooter LI {
+	BORDER-RIGHT: #000 1px solid; PADDING-RIGHT: 10px; DISPLAY: inline; =
+PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 5px; =
+PADDING-TOP: 0px
+}
+UL#globalfooter LI.last {
+	BORDER-RIGHT-STYLE: none
+}
+#footer P#date {
+	MARGIN-BOTTOM: 0px
+}
+#footer P#url {
+	MARGIN: 0px
+}
+#footer P#printAsIs {
+	MARGIN: 0px
+}
+BODY#sidebarless {
+	BACKGROUND: #fff
+}
+BODY#sidebarless #content {
+	MARGIN-LEFT: 2%
+}
+BODY#sidebarless #footer {
+	MARGIN-LEFT: 0px
+}
+BODY#espanol #header {
+	BACKGROUND: =
+url(http://www.epa.gov/espanol/layout-files/epa-spn-agencyname.gif) =
+no-repeat right top
+}
+
+------=_NextPart_000_0003_01C86FE3.9CC848D0
+Content-Type: text/css;
+	charset="iso-8859-1"
+Content-Transfer-Encoding: quoted-printable
+Content-Location: http://www.epa.gov/air/oaqps/epa-content.css
+
+#content .right {
+	FLOAT: right
+}
+#content .center {
+	TEXT-ALIGN: center
+}
+#content .left {
+	FLOAT: left
+}
+#content .clear {
+	CLEAR: both
+}
+#content INS {
+	TEXT-DECORATION: none
+}
+#content ABBR {
+	CURSOR: help; BORDER-BOTTOM: #d0d0d0 1px dashed; FONT-VARIANT: =
+small-caps
+}
+#content ACRONYM {
+	CURSOR: help; BORDER-BOTTOM: #d0d0d0 1px dashed; FONT-VARIANT: =
+small-caps
+}
+#content CODE {
+	FONT: 1em "Lucida Console", "Andale Mono", "monotype.com", "Bitstream =
+Vera Sans Mono", monospace
+}
+#content PRE {
+	FONT: 1em "Lucida Console", "Andale Mono", "monotype.com", "Bitstream =
+Vera Sans Mono", monospace
+}
+#content HR {
+	CLEAR: both; BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; =
+MARGIN: 3px 0px; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px =
+solid; BACKGROUND-COLOR: #ccc
+}
+#content P.pagetop {
+	CLEAR: both; FONT-SIZE: 0.8em; BACKGROUND: =
+url(http://www.epa.gov/epafiles/s/i/pagetop.gif) no-repeat 0px 50%; =
+MARGIN: 1em 0px
+}
+#content P.pagetop A {
+	PADDING-LEFT: 8px; COLOR: #666; TEXT-DECORATION: none
+}
+#content P.pagetop A:hover {
+	TEXT-DECORATION: underline
+}
+#content .imgcontainer-r {
+	BORDER-RIGHT: #ccc 2px solid; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 2px =
+solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; BORDER-LEFT: #ccc 2px =
+solid; PADDING-TOP: 0px; BORDER-BOTTOM: #ccc 2px solid; =
+BACKGROUND-COLOR: #ffffdb
+}
+#content .imgcontainer-l {
+	BORDER-RIGHT: #ccc 2px solid; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 2px =
+solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; BORDER-LEFT: #ccc 2px =
+solid; PADDING-TOP: 0px; BORDER-BOTTOM: #ccc 2px solid; =
+BACKGROUND-COLOR: #ffffdb
+}
+#content .imgcontainer-r IMG {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
+0px -3px; PADDING-TOP: 0px
+}
+#content .imgcontainer-l IMG {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
+0px -3px; PADDING-TOP: 0px
+}
+#content .imgcontainer-r {
+	FLOAT: right; MARGIN: 0px 0px 6px 6px
+}
+#content .imgcontainer-l {
+	FLOAT: left; MARGIN: 0px 6px 6px 0px
+}
+#content .imgcontainer-l .caption A {
+	TEXT-DECORATION: none
+}
+#content .imgcontainer-r .caption A {
+	TEXT-DECORATION: none
+}
+#content .imgcontainer-r .caption A:hover {
+	TEXT-DECORATION: underline
+}
+#content .imgcontainer-l .caption A:hover {
+	TEXT-DECORATION: underline
+}
+#content .caption A:hover {
+	TEXT-DECORATION: underline
+}
+#content .caption {
+	PADDING-RIGHT: 4px; PADDING-LEFT: 4px; FONT-SIZE: 0.85em; =
+PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-TOP: 2px
+}
+#content UL {
+	MARGIN-TOP: 0px; LIST-STYLE-IMAGE: =
+url(http://www.epa.gov/epafiles/s/i/bu_sftblue.gif)
+}
+#content UL OL {
+	LIST-STYLE-IMAGE: none
+}
+#content LI {
+	MARGIN-TOP: 0px; PADDING-LEFT: 0px; MARGIN-LEFT: 10px; PADDING-TOP: 0px
+}
+#content LI LI {
+	PADDING-LEFT: 0px; MARGIN-LEFT: 0px
+}
+#content H1 {
+	FONT-SIZE: 1.9em; MARGIN: 0px 0px 0.68em; LINE-HEIGHT: 1em
+}
+#content H2 {
+	FONT-SIZE: 1.6em; MARGIN: 1.21em 0px 0.4em; LINE-HEIGHT: 1em
+}
+#content H3 {
+	FONT-SIZE: 1.35em; MARGIN: 1.44em 0px 0.48em; LINE-HEIGHT: 1em
+}
+#content H4 {
+	FONT-SIZE: 1.2em; MARGIN: 1.62em 0px 0.54em; LINE-HEIGHT: 1.08em
+}
+#content H5 {
+	FONT-SIZE: 1em; MARGIN: 1.95em 0px 0.65em; LINE-HEIGHT: 1.3em
+}
+#content H6 {
+	FONT-SIZE: 0.8em; MARGIN: 2.43em 0px 0.81em; LINE-HEIGHT: 1.62em
+}
+#content P {
+	MARGIN-TOP: 1.3em; FONT-SIZE: 1em; MARGIN-BOTTOM: 1.3em; LINE-HEIGHT: =
+1.3em
+}
+#content #sitewidea {
+	FONT-WEIGHT: bold; FONT-SIZE: 1em; COLOR: #c33
+}
+#content #sitewideb {
+	FONT-WEIGHT: bold; FONT-SIZE: 1em; COLOR: #c33
+}
+#content #sitewidec {
+	FONT-WEIGHT: bold; FONT-SIZE: 1em; COLOR: #c33
+}
+#content .warning {
+	FONT-WEIGHT: bold; FONT-SIZE: 1em; COLOR: #c33
+}
+#content .fileinfo {
+	FONT-SIZE: 0.85em; COLOR: #666
+}
+#content .epaltsansbold {
+	FONT-WEIGHT: bold; FONT-SIZE: 0.85em; FONT-FAMILY: Arial, Helvetica, =
+sans-serif
+}
+#content .epaltsans {
+	FONT-SIZE: 0.9em; FONT-FAMILY: Arial, Helvetica, sans-serif
+}
+#content .epaLtSans {
+	FONT-SIZE: 0.9em; FONT-FAMILY: Arial, Helvetica, sans-serif
+}
+#content .boxmulti {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0.9em; BACKGROUND: =
+url(http://www.epa.gov/epafiles/s/i/curves-bottom.gif) #f1f1f1 no-repeat =
+left bottom; FLOAT: right; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 1em =
+0.5em; WIDTH: 200px; PADDING-TOP: 0px
+}
+#content .boxnat {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0.9em; BACKGROUND: =
+url(http://www.epa.gov/epafiles/s/i/curves-bottom.gif) #f1f1f1 no-repeat =
+left bottom; FLOAT: right; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 1em =
+0.5em; WIDTH: 200px; PADDING-TOP: 0px
+}
+#content .boxalert {
+	BORDER-RIGHT: #c33 2px solid; PADDING-RIGHT: 0px; BORDER-TOP: #c33 2px =
+solid; PADDING-LEFT: 0px; FONT-SIZE: 0.9em; FLOAT: right; =
+PADDING-BOTTOM: 0px; MARGIN: 0px 0px 5px 5px; BORDER-LEFT: #c33 2px =
+solid; WIDTH: 200px; PADDING-TOP: 0px; BORDER-BOTTOM: #c33 2px solid; =
+BACKGROUND-COLOR: #f1f1f1
+}
+#content .box {
+	BORDER-RIGHT: #ccc 2px solid; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 2px =
+solid; PADDING-LEFT: 0px; FONT-SIZE: 0.9em; PADDING-BOTTOM: 0px; MARGIN: =
+5px 5px 5px 0px; BORDER-LEFT: #ccc 2px solid; WIDTH: 50%; PADDING-TOP: =
+0px; BORDER-BOTTOM: #ccc 2px solid
+}
+#content .boxmulti H5 {
+	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FONT-SIZE: 1em; PADDING-BOTTOM: =
+2px; MARGIN: 0px 0px 0.2em; COLOR: #fff; PADDING-TOP: 2px; =
+BACKGROUND-COLOR: #5c9261; TEXT-ALIGN: center
+}
+#content .boxnat H5 {
+	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FONT-SIZE: 1em; PADDING-BOTTOM: =
+2px; MARGIN: 0px 0px 0.2em; COLOR: #fff; PADDING-TOP: 2px; =
+BACKGROUND-COLOR: #5c9261; TEXT-ALIGN: center
+}
+#content .boxalert H5 {
+	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FONT-SIZE: 1em; PADDING-BOTTOM: =
+2px; MARGIN: 0px 0px 0.2em; COLOR: #fff; PADDING-TOP: 2px; =
+BACKGROUND-COLOR: #5c9261; TEXT-ALIGN: center
+}
+#content .box H5 {
+	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FONT-SIZE: 1em; PADDING-BOTTOM: =
+2px; MARGIN: 0px 0px 0.2em; COLOR: #fff; PADDING-TOP: 2px; =
+BACKGROUND-COLOR: #5c9261; TEXT-ALIGN: center
+}
+#content .boxmulti H5 {
+	BACKGROUND: url(http://www.epa.gov/epafiles/s/i/curves-top.gif) #5c9261 =
+no-repeat left top
+}
+#content .boxnat H5 {
+	BACKGROUND: url(http://www.epa.gov/epafiles/s/i/curves-top.gif) #5c9261 =
+no-repeat left top
+}
+#content .boxnat H5 {
+	BACKGROUND-COLOR: #369
+}
+#content .boxalert H5 {
+	BACKGROUND-COLOR: #c33
+}
+#content .box H5 {
+	COLOR: #000; BACKGROUND-COLOR: #ddd; TEXT-ALIGN: left
+}
+#content .boxmulti UL LI {
+	LIST-STYLE-IMAGE: url(http://www.epa.gov/epafiles/s/i/bu_sftgrn.gif)
+}
+#content .boxalert UL LI {
+	LIST-STYLE-IMAGE: url(http://www.epa.gov/epafiles/s/i/bu_alertred.gif)
+}
+#content .centered {
+	MARGIN: 5px auto
+}
+#content .righted {
+	FLOAT: right; MARGIN: 5px 0px 5px 5px
+}
+#content .centered H5 {
+	TEXT-ALIGN: center
+}
+#content .righted H5 {
+	TEXT-ALIGN: center
+}
+#content .color1 {
+	BORDER-RIGHT: #363 2px solid; BORDER-TOP: #363 2px solid; BORDER-LEFT: =
+#363 2px solid; BORDER-BOTTOM: #363 2px solid
+}
+#content .color2 {
+	BORDER-RIGHT: #006 2px solid; BORDER-TOP: #006 2px solid; BORDER-LEFT: =
+#006 2px solid; BORDER-BOTTOM: #006 2px solid
+}
+#content .color1 H5 {
+	COLOR: #fff; BACKGROUND-COLOR: #5c9261
+}
+#content .color1 UL LI {
+	LIST-STYLE-IMAGE: url(http://www.epa.gov/epafiles/s/i/bu_sftgrn.gif)
+}
+#content .color2 H5 {
+	COLOR: #fff; BACKGROUND-COLOR: #369
+}
+#content .boxmulti UL {
+	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
+}
+#content .boxmulti OL {
+	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
+}
+#content .boxnat UL {
+	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
+}
+#content .boxnat OL {
+	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
+}
+#content .boxalert UL {
+	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
+}
+#content .boxalert OL {
+	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
+}
+#content .box UL {
+	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
+}
+#content .box OL {
+	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.5em
+}
+#content .boxmulti LI {
+	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
+MARGIN-LEFT: -1em; PADDING-TOP: 0px
+}
+#content .boxnat LI {
+	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
+MARGIN-LEFT: -1em; PADDING-TOP: 0px
+}
+#content .boxalert LI {
+	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
+MARGIN-LEFT: -1em; PADDING-TOP: 0px
+}
+#content .box LI {
+	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
+MARGIN-LEFT: -1em; PADDING-TOP: 0px
+}
+#content .boxmulti LI LI {
+	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
+MARGIN-LEFT: -2em; PADDING-TOP: 0px
+}
+#content .boxnat LI LI {
+	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
+MARGIN-LEFT: -2em; PADDING-TOP: 0px
+}
+#content .boxalert LI LI {
+	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
+MARGIN-LEFT: -2em; PADDING-TOP: 0px
+}
+#content .box LI LI {
+	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
+MARGIN-LEFT: -2em; PADDING-TOP: 0px
+}
+#content .boxmulti P {
+	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 0px; MARGIN: =
+0.5em 0px; PADDING-TOP: 0px
+}
+#content .boxnat P {
+	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 0px; MARGIN: =
+0.5em 0px; PADDING-TOP: 0px
+}
+#content .boxalert P {
+	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 0px; MARGIN: =
+0.5em 0px; PADDING-TOP: 0px
+}
+#content .box P {
+	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 0px; MARGIN: =
+0.5em 0px; PADDING-TOP: 0px
+}
+#content .boxmulti A {
+	TEXT-DECORATION: none
+}
+#content .boxnat A {
+	TEXT-DECORATION: none
+}
+#content .boxalert A {
+	TEXT-DECORATION: none
+}
+#content .box A {
+	TEXT-DECORATION: none
+}
+#content .boxmulti A:hover {
+	TEXT-DECORATION: underline
+}
+#content .boxnat A:hover {
+	TEXT-DECORATION: underline
+}
+#content .boxalert A:hover {
+	TEXT-DECORATION: underline
+}
+#content .box A:hover {
+	TEXT-DECORATION: underline
+}
+#content .boxsimple {
+	BORDER-RIGHT: #ccc 2px solid; BORDER-TOP: #ccc 2px solid; FONT-SIZE: =
+0.9em; FLOAT: right; MARGIN: 0px 0px 1em 1em; BORDER-LEFT: #ccc 2px =
+solid; WIDTH: 15%; BORDER-BOTTOM: #ccc 2px solid
+}
+#content .boxsimple H5 {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 1em; PADDING-BOTTOM: =
+0px; MARGIN: 0px; PADDING-TOP: 0px
+}
+#content .boxsimple P {
+	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 0px; MARGIN: =
+0.5em 0px; PADDING-TOP: 0px
+}
+#content P.pullquote {
+	BORDER-RIGHT: #ccc 0px solid; PADDING-RIGHT: 0.5em; BORDER-TOP: #ccc =
+2px solid; PADDING-LEFT: 0.5em; FONT-WEIGHT: bold; FONT-SIZE: 1.1em; =
+FLOAT: right; PADDING-BOTTOM: 0.5em; MARGIN: 0.5em 0px 0.5em 1em; =
+BORDER-LEFT: #ccc 0px solid; COLOR: #333; LINE-HEIGHT: normal; =
+PADDING-TOP: 0.5em; BORDER-BOTTOM: #ccc 2px solid; FONT-STYLE: italic
+}
+#content P.pullquote SPAN.author {
+	FONT-SIZE: 0.8em; FONT-STYLE: normal
+}
+#content .disclaimer {
+	BORDER-RIGHT: #ccc 2px solid; PADDING-RIGHT: 0.3em; BORDER-TOP: #ccc =
+2px solid; PADDING-LEFT: 0.3em; FONT-SIZE: 0.9em; BACKGROUND: #f1f1f1; =
+FLOAT: right; PADDING-BOTTOM: 0.3em; MARGIN: 1em 0px 1em 1em; =
+BORDER-LEFT: #ccc 2px solid; WIDTH: 20%; LINE-HEIGHT: 1.1; PADDING-TOP: =
+0.3em; BORDER-BOTTOM: #ccc 2px solid
+}
+#content .disclaimer-wide {
+	BORDER-RIGHT: #ccc 2px solid; PADDING-RIGHT: 0.3em; BORDER-TOP: #ccc =
+2px solid; PADDING-LEFT: 0.3em; FONT-SIZE: 0.9em; BACKGROUND: #f1f1f1; =
+FLOAT: right; PADDING-BOTTOM: 0.3em; MARGIN: 1em 0px 1em 1em; =
+BORDER-LEFT: #ccc 2px solid; WIDTH: 20%; LINE-HEIGHT: 1.1; PADDING-TOP: =
+0.3em; BORDER-BOTTOM: #ccc 2px solid
+}
+#content P#archive {
+	BORDER-RIGHT: #ccc 2px solid; PADDING-RIGHT: 0.3em; BORDER-TOP: #ccc =
+2px solid; PADDING-LEFT: 0.3em; FONT-SIZE: 0.9em; BACKGROUND: #f1f1f1; =
+FLOAT: right; PADDING-BOTTOM: 0.3em; MARGIN: 1em 0px 1em 1em; =
+BORDER-LEFT: #ccc 2px solid; WIDTH: 20%; LINE-HEIGHT: 1.1; PADDING-TOP: =
+0.3em; BORDER-BOTTOM: #ccc 2px solid
+}
+#content .disclaimer-wide {
+	PADDING-RIGHT: 0.3em; PADDING-LEFT: 0.3em; FLOAT: none; PADDING-BOTTOM: =
+0.3em; MARGIN: 1em 10%; WIDTH: auto; PADDING-TOP: 0.3em; TEXT-ALIGN: =
+center
+}
+#content P#archive {
+	PADDING-RIGHT: 0.3em; PADDING-LEFT: 30px; BACKGROUND: =
+url(http://www.epa.gov/epafiles/images/epafiles_misc_outdatediconmini.gif=
+) #f1f1f1 no-repeat 0.3em 50%; FLOAT: none; PADDING-BOTTOM: 0.3em; =
+MARGIN: 0px 0px 0.3em; WIDTH: 350px; PADDING-TOP: 0.3em
+}
+#content B.cn {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 1px; BACKGROUND: =
+url(http://www.epa.gov/epafiles/s/i/white.gif) no-repeat; =
+PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 10px; LINE-HEIGHT: 1px; =
+PADDING-TOP: 0px; POSITION: absolute; HEIGHT: 10px
+}
+#content B.tl {
+	BACKGROUND-POSITION: left top; LEFT: -1px; TOP: -1px
+}
+#content B.tr {
+	BACKGROUND-POSITION: right top; RIGHT: -1px; TOP: -1px
+}
+#content TABLE.table {
+	MARGIN: 0px 0px 1em; BORDER-COLLAPSE: collapse
+}
+#content TABLE.tablebord {
+	MARGIN: 0px 0px 1em; BORDER-COLLAPSE: collapse
+}
+#content TABLE.table CAPTION {
+	FONT-WEIGHT: bold; PADDING-BOTTOM: 6px
+}
+#content TABLE.tablebord CAPTION {
+	FONT-WEIGHT: bold; PADDING-BOTTOM: 6px
+}
+#content TABLE.table TH {
+	BORDER-RIGHT: #ccc 0px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 0px =
+solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: #ccc 0px =
+solid; PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px solid
+}
+#content TABLE.table TD {
+	BORDER-RIGHT: #ccc 0px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 0px =
+solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: #ccc 0px =
+solid; PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px solid
+}
+#content TABLE.tablebord TH {
+	BORDER-RIGHT: #ccc 0px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 0px =
+solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: #ccc 0px =
+solid; PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px solid
+}
+#content TABLE.tablebord TD {
+	BORDER-RIGHT: #ccc 0px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 0px =
+solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: #ccc 0px =
+solid; PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px solid
+}
+#content TABLE.table THEAD {
+	BACKGROUND: #ccc; COLOR: #000
+}
+#content TABLE.table TFOOT {
+	BACKGROUND: #ccc; COLOR: #000
+}
+#content TABLE.tablebord THEAD {
+	BACKGROUND: #ccc; COLOR: #000
+}
+#content TABLE.tablebord TFOOT {
+	BACKGROUND: #ccc; COLOR: #000
+}
+#content TABLE.table TH {
+	BORDER-RIGHT: #ddd 1px solid; BORDER-TOP: #ddd 0px solid; BACKGROUND: =
+#ccc; BORDER-LEFT: #ddd 1px solid; COLOR: #000; BORDER-BOTTOM: #ddd 0px =
+solid
+}
+#content TABLE.tablebord TH {
+	BORDER-RIGHT: #ddd 1px solid; BORDER-TOP: #ddd 0px solid; BACKGROUND: =
+#ccc; BORDER-LEFT: #ddd 1px solid; COLOR: #000; BORDER-BOTTOM: #ddd 0px =
+solid
+}
+#content TABLE.zebra TR.rowTint {
+	BACKGROUND-COLOR: #f1f1f1
+}
+#content TABLE.tablebord TR.rowTint {
+	BACKGROUND-COLOR: #f1f1f1
+}
+#content TABLE.tablebord {
+	BORDER-RIGHT: #ccc 0px solid; BORDER-TOP: #ccc 1px solid; BORDER-LEFT: =
+#ccc 1px solid; BORDER-BOTTOM: #ccc 0px solid
+}
+#content TABLE.tablebord TH {
+	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
+1px; BORDER-RIGHT-WIDTH: 1px
+}
+#content TABLE.tablebord TD {
+	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
+1px; BORDER-RIGHT-WIDTH: 1px
+}
+#content TABLE.qfinder {
+	PADDING-BOTTOM: 0.2em; MARGIN: 0px 0px 1em; FONT: 90%/1.1em Arial, =
+Helvetica, sans-serif; WIDTH: 100%; BORDER-BOTTOM: #5c9261 1px solid; =
+BORDER-COLLAPSE: collapse
+}
+#content TABLE.qfinder THEAD TH {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: =
+url(http://www.epa.gov/epafiles/s/i/qf-r.gif) #5c9261 no-repeat right =
+top; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px
+}
+#content TABLE.qfinder THEAD TH P {
+	PADDING-RIGHT: 8px; PADDING-LEFT: 8px; FONT-WEIGHT: bold; FONT-SIZE: =
+1.3em; BACKGROUND: url(http://www.epa.gov/epafiles/s/i/qf-l.gif) =
+no-repeat; PADDING-BOTTOM: 3px; MARGIN: 0px 8px 0px 0px; COLOR: #fff; =
+PADDING-TOP: 3px; TEXT-ALIGN: left
+}
+#content TABLE.qfinder THEAD TD {
+	PADDING-RIGHT: 8px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
+PADDING-TOP: 0px
+}
+#content TABLE.qfinder TBODY TD {
+	VERTICAL-ALIGN: top; LINE-HEIGHT: 1.2em; PADDING-TOP: 0.1em
+}
+#content TABLE.qfinder A {
+	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 7px; PADDING-BOTTOM: =
+0px; MARGIN: 0px; PADDING-TOP: 0px; TEXT-DECORATION: none
+}
+#content TABLE.qfinder TD A:hover {
+	BACKGROUND-COLOR: #f1f1f1; TEXT-DECORATION: none
+}
+#content TABLE.qfinder TD A.more {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 17px; BACKGROUND: =
+url(http://www.epa.gov/epahome/images/more_topic.gif) no-repeat 7px 3px; =
+PADDING-BOTTOM: 0px; PADDING-TOP: 0px
+}
+#content FORM.form LABEL {
+	DISPLAY: block; FLOAT: left; MARGIN-BOTTOM: 10px; WIDTH: 150px
+}
+#content FORM.form INPUT {
+	DISPLAY: block; FLOAT: left; MARGIN-BOTTOM: 10px; WIDTH: 150px
+}
+#content FORM.form FIELDSET {
+	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
+none; BORDER-BOTTOM-STYLE: none
+}
+#content FORM.form LABEL {
+	PADDING-RIGHT: 10px; WIDTH: 100px; TEXT-ALIGN: right
+}
+#content FORM.form BR {
+	CLEAR: left
+}
+#content FORM.form INPUT#formsubmit {
+	MARGIN: 10px 0px 10px 110px; WIDTH: auto
+}
+
+------=_NextPart_000_0003_01C86FE3.9CC848D0
+Content-Type: text/css;
+	charset="iso-8859-1"
+Content-Transfer-Encoding: quoted-printable
+Content-Location: http://www.epa.gov/epafiles/s/print.css
+
+@import url( epa-content.css );
+BODY {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: #fff; =
+PADDING-BOTTOM: 0px; MARGIN: 0px; FONT: 10pt/1.1 Verdana, sans-serif; =
+COLOR: #000; PADDING-TOP: 0px
+}
+#skipnav {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
+PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
+BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
+BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
+BORDER-BOTTOM-STYLE: none
+}
+#skiptop {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
+PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
+BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
+BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
+BORDER-BOTTOM-STYLE: none
+}
+#skipbot {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
+PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
+BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
+BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
+BORDER-BOTTOM-STYLE: none
+}
+HR.skip {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
+PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
+BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
+BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
+BORDER-BOTTOM-STYLE: none
+}
+#areaname #banner {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
+PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
+BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
+BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
+BORDER-BOTTOM-STYLE: none
+}
+#areaname P#tagline {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
+PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
+BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
+BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
+BORDER-BOTTOM-STYLE: none
+}
+#EPAsearch {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
+PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
+BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
+BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
+BORDER-BOTTOM-STYLE: none
+}
+#header P {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
+PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
+BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
+BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
+BORDER-BOTTOM-STYLE: none
+}
+BODY#aara #content #quickfinder B.cn {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
+PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
+BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
+BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
+BORDER-BOTTOM-STYLE: none
+}
+#content #sitewidea {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
+PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
+BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
+BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
+BORDER-BOTTOM-STYLE: none
+}
+#content #sitewideb {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
+PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
+BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
+BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
+BORDER-BOTTOM-STYLE: none
+}
+#content #sitewidec {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
+PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
+BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
+BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
+BORDER-BOTTOM-STYLE: none
+}
+#content #areafooter {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
+PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
+BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
+BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
+BORDER-BOTTOM-STYLE: none
+}
+#content .pagetop {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
+PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
+BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
+BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
+BORDER-BOTTOM-STYLE: none
+}
+#area-nav H3 {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
+PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
+BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
+BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
+BORDER-BOTTOM-STYLE: none
+}
+#area-nav {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
+PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
+BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
+BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
+BORDER-BOTTOM-STYLE: none
+}
+UL#globalfooter {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
+PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
+BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
+BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
+BORDER-BOTTOM-STYLE: none
+}
+A IMG {
+	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
+0px; BORDER-RIGHT-WIDTH: 0px
+}
+A {
+	COLOR: #000
+}
+#header {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: #fff; =
+PADDING-BOTTOM: 0px; MARGIN: 0px 0px 30px; PADDING-TOP: 0px; POSITION: =
+static
+}
+#content {
+	MARGIN: 40px 20px
+}
+BODY#aara #content {
+	MARGIN: 50px 20px 40px
+}
+#footer {
+	MARGIN: 0px
+}
+#header DIV#logo {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; LEFT: 0px; PADDING-BOTTOM: 0px; =
+MARGIN: 0px; WIDTH: 100px; PADDING-TOP: 0px; POSITION: relative; TOP: =
+0px
+}
+#header DIV#areaname P {
+	FONT-WEIGHT: normal; FONT-SIZE: 1.4em; BACKGROUND: none transparent =
+scroll repeat 0% 0%; LEFT: 0px; MARGIN: 40px 0px -100px 120px; OVERFLOW: =
+visible; WIDTH: 75%; COLOR: #a0a0a0; LINE-HEIGHT: 1.3; POSITION: =
+relative; TOP: -130px; TEXT-ALIGN: left
+}
+BODY#aara DIV#areaname {
+	MARGIN: 0px
+}
+BODY#espanol DIV#areaname {
+	MARGIN: 0px
+}
+BODY#aara DIV#areaname P {
+	MARGIN: 40px 0px -60px 146px
+}
+BODY#espanol DIV#areaname P {
+	MARGIN: 40px 0px -100px 120px
+}
+#header UL {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0.85em; =
+PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 120px; COLOR: #a0a0a0; =
+LINE-HEIGHT: 1.2; PADDING-TOP: 0px; LIST-STYLE-TYPE: none; =
+LETTER-SPACING: 0px
+}
+BODY#aara #header UL {
+	MARGIN: -60px 0px 0px 146px
+}
+#header UL LI {
+	PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 14px; BACKGROUND: =
+url(http://www.epa.gov/epafiles/s/i/breadcrumbarrow.gif) no-repeat 0% =
+50%; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px
+}
+#header UL LI A {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
+0px; PADDING-TOP: 0px
+}
+#header UL LI.first {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND-IMAGE: none; =
+PADDING-BOTTOM: 0px; PADDING-TOP: 0px
+}
+#content H1 {
+	FONT-SIZE: 1.7em; MARGIN: 0px; BORDER-BOTTOM: #000 2px solid
+}
+#content H2 {
+	FONT-SIZE: 1.4em
+}
+#content H3 {
+	FONT-SIZE: 1.2em
+}
+#content H4 {
+	FONT-SIZE: 1em
+}
+#content H5 {
+	FONT-SIZE: 0.9em
+}
+#content .boxmulti {
+	BACKGROUND-IMAGE: none
+}
+#content .boxnat {
+	BACKGROUND-IMAGE: none
+}
+#content .boxmulti H5 {
+	BACKGROUND-IMAGE: none
+}
+#content .boxnat H5 {
+	BACKGROUND-IMAGE: none
+}
+#content UL {
+	LIST-STYLE-TYPE: disc
+}
+#content .boxmulti UL LI {
+	LIST-STYLE-TYPE: disc
+}
+#content .boxalert UL LI {
+	LIST-STYLE-TYPE: disc
+}
+#content .color1 UL LI {
+	LIST-STYLE-TYPE: disc
+}
+P#url {
+	FONT-SIZE: 0.85em; RIGHT: 40px; COLOR: #a0a0a0; POSITION: absolute; =
+TOP: 0px
+}
+P#date {
+	FONT-SIZE: 0.85em; RIGHT: 40px; COLOR: #a0a0a0; POSITION: absolute; =
+TOP: 0px
+}
+P#date {
+	TOP: 15px
+}
+H2.printOnly {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 10pt; PADDING-BOTTOM: =
+0px; MARGIN: 3px 0px; COLOR: #aaa; PADDING-TOP: 0px
+}
+OL.printOnly {
+	MARGIN-TOP: 0px; PADDING-TOP: 0px
+}
+OL.printOnly LI {
+	MARGIN-TOP: 0px; PADDING-LEFT: 0px; FONT-SIZE: 9pt; MARGIN-LEFT: 3px; =
+COLOR: #bbb; PADDING-TOP: 0px
+}
+
+@media Print   =20
+{
+#printAsIs {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0px; LEFT: 0px; =
+PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 0px; =
+BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
+BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 0px; HEIGHT: 0px; =
+BORDER-BOTTOM-STYLE: none
+}
+
+}
+
+------=_NextPart_000_0003_01C86FE3.9CC848D0
+Content-Type: application/octet-stream
+Content-Transfer-Encoding: quoted-printable
+Content-Location: http://www.epa.gov/epafiles/js/epa-core.js
+
+// EPA's core functions
+// 05 June 2007
+// For comments and explanations, see =
+http://www.epa.gov/epafiles/js/epa-full.txt
+
+function printAsIs_Date_URL() {
+	if(!document.getElementById('footer')) return;
+	var footer =3D document.getElementById('footer');
+
+	var printText =3D document.createElement('p');
+	printText.id =3D 'printAsIs';
+	var print_function =3D document.createElement('a'); print_function.href =
+=3D '#';
+  print_function.title =3D 'Print this page as-is.';
+  print_function.onclick =3D function(){ print_preview(); return false; =
+};
+  print_function.appendChild(document.createTextNode('Print As-Is') );
+	printText.appendChild(print_function);
+	footer.appendChild(printText);
+
+	var urlText =3D document.createElement('p');
+	urlText.id =3D 'url';
+	urlText.appendChild(document.createTextNode(window.location.href));
+	footer.insertBefore(urlText,printText);
+
+	var x =3D new Date(document.lastModified); var Modif =3D new =
+Date(x.toGMTString());
+	var days =3D =
+['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];=
+
+	var months =3D =
+['January','February','March','April','May','June','July','August','Septe=
+mber','October','November','December'];
+	var datetowrite =3D 'Last updated on ' + days[Modif.getDay()] + ', ' + =
+months[Modif.getMonth()] + ' ' + Modif.getDate() + nths(Modif.getDate()) =
++ ', ' + takeYear(Modif) + '.';
+	var dateText =3D document.createElement('p'); dateText.id =3D 'date';
+	dateText.appendChild(document.createTextNode(datetowrite));
+	footer.insertBefore(dateText, urlText);
+}
+
+function print_preview() {
+	var links =3D document.getElementsByTagName('link');
+	for (var i =3D 0; i < links.length; i++) {
+		var linkHREF =3D links[i].getAttribute('href');
+		if (linkHREF =3D=3D 'http://www.epa.gov/epafiles/s/print.css') {
+			links[i].removeAttribute('href'); links[i].href =3D =
+'http://www.epa.gov/epafiles/s/epa.css';
+		}
+	}
+	add_preview_message();
+}
+
+function add_preview_message() {
+	var footer =3D document.getElementById('footer');
+	var printPara =3D document.createElement('p');
+	printPara.innerHTML =3D '<b>This document will now print as it appears =
+on screen when you use the File &raquo; Print command.</b><br>Use View =
+&raquo; Refresh to return to original state.';
+	footer.appendChild(printPara);
+}
+
+function newIcon() {=09
+	if(!document.getElementsByTagName('ins')) return;
+	var newItem =3D =
+document.getElementById('content').getElementsByTagName('ins');
+	for ( var i =3D 0; i < newItem.length; i++) {
+		if (!newItem[i].getAttribute('datetime')) continue;
+		var a =3D newItem[i].getAttribute('datetime');
+		var b =3D new Array(); b =3D a.split('-');
+		var postedDate =3D (Date.UTC(b[0],b[1],b[2],0,0,0))/86400000;
+		var x =3D new Date(); var today =3D new Date(x.toGMTString());
+		var now =3D =
+(Date.UTC(takeYear(today),today.getMonth(),today.getDate(),0,0,0))/864000=
+00;
+		var timeLeft =3D postedDate - (now + 1);
+		if (timeLeft < 31  &&  timeLeft > 0) {
+			var icon =3D document.createElement('img');
+			icon.alt =3D 'New!'; icon.src =3D =
+'http://www.epa.gov/epafiles/images/new-en.gif';
+			icon.width =3D '34'; icon.height =3D '16';
+			newItem[i].appendChild(icon);
+		}
+	}
+}
+
+function takeYear(theDate) { var x =3D theDate.getYear(); var y =3D x % =
+100; y +=3D (y < 38) ? 2000 : 1900; return y; }
+function nths(day) {
+	if (day =3D=3D 1 || day =3D=3D 21 || day =3D=3D 31) return 'st'; if =
+(day =3D=3D 2 || day =3D=3D 22) return 'nd';
+	if (day =3D=3D 3 || day =3D=3D 23) return 'rd'; return 'th';
+}
+
+function notice() {
+	var script =3D document.createElement('script');
+	script.type =3D 'text/javascript';
+	script.src =3D 'http://www.epa.gov/epahome/notice.js';
+	document.getElementsByTagName('head')[0].appendChild(script);
+}
+
+function addClass(element,name) {
+  if (!element.className) {
+    element.className =3D name;
+  } else {
+    element.className+=3D ' ';
+    element.className+=3D name;
+  }
+}
+
+function stripeTables() {
+	if (!document.getElementsByTagName('table')) return;
+	var tables =3D document.getElementsByTagName('table');
+	for (var i =3D 0; i<tables.length; i++) {
+		if (tables[i].className.match('zebra')) {
+			var myTR =3D tables[i].getElementsByTagName('tr');
+      for (var j=3D1; j<myTR.length; j=3Dj+2) {
+        addClass(myTR[j],'rowTint');
+      }
+    }
+  }
+}
+
+function trim(c) { if (c) c =3D c.replace(/^\s*|\s*$/,'');	return c;}
+function hasClass(obj, c) { if (!obj || !c) return false; c =3D trim(c); =
+var oldC =3D trim(obj.className); if (c && oldC && =
+oldC.match('\\b'+c+'\\b')) return true; else return false;}
+function walk(parent, list, contained) { if (!parent || !list || =
+!contained) return false; var num =3D 0; for (var j in contained) { num =
+=3D Math.max(num, contained[j]);} for (var i=3D0; i < =
+parent.childNodes.length; i++) { if (parent.childNodes[i].nodeType !=3D =
+1) continue; var child =3D parent.childNodes[i]; if (hasClass(child, =
+'ignore')) continue; else if ( (child.getAttribute('href') || =
+child.getAttribute('cite')) && !child.getAttribute('src') ) { var =
+thisLink =3D (child.getAttribute('href') ? child.href : child.cite); if =
+(thisLink.match(window.location+'#\w*') || =
+thisLink.match('^javascript:') || thisLink.match('^mailto:') || thisLink =
+=3D=3D child.innerHTML) continue; var note =3D =
+document.createElement('sup'); addClass(note,'printOnly'); var note_txt; =
+if (contained[thisLink]) { note_txt =3D =
+document.createTextNode(contained[thisLink]);} else { var li =3D =
+document.createElement('li'); var li_txt =3D =
+document.createTextNode(thisLink); li.appendChild(li_txt); =
+list.appendChild(li); num++; contained[thisLink] =3D num; note_txt =3D =
+document.createTextNode(num);} note.appendChild(note_txt); =
+parent.insertBefore(note, child.nextSibling); } else { walk(child, list, =
+contained);}}}
+function footnoteLinks(containerID,targetID) { if =
+(!document.getElementById(containerID) || =
+!document.getElementById(targetID)) return false; var container =3D =
+document.getElementById(containerID); var target =3D =
+document.getElementById(targetID); var h2 =3D =
+document.createElement('h2'); addClass(h2, 'printOnly'); var h2_txt =3D =
+document.createTextNode('URLs Provided for your Reference'); =
+h2.appendChild(h2_txt); var ol =3D document.createElement('ol'); =
+addClass(ol, 'printOnly'); var myArr =3D new Array(); walk(container, =
+ol, myArr); if (ol.getElementsByTagName('li').length) { =
+target.appendChild(h2); target.appendChild(ol);} =
+addClass(document.getElementsByTagName('html')[0], 'noted'); return =
+true;}
+
+function addEvent( obj, type, fn ) {
+	if (document.getElementById && document.createTextNode) {
+		if (obj.addEventListener)
+			obj.addEventListener( type, fn, false );
+		else if (obj.attachEvent) {
+			obj['e'+type+fn] =3D fn;
+			obj[type+fn] =3D function() { obj['e'+type+fn]( window.event ); }
+			obj.attachEvent( 'on'+type, obj[type+fn] );
+		}
+	}
+}
+	addEvent(window, 'load', printAsIs_Date_URL); addEvent(window, 'load', =
+newIcon);
+	addEvent(window, 'load', notice); addEvent(window, 'load', =
+stripeTables);
+	addEvent(window, 'load', function() =
+{footnoteLinks('printURLs','content');});
+------=_NextPart_000_0003_01C86FE3.9CC848D0--
diff --git a/tika-parsers/src/test/resources/test-documents/testRFC822_quoted b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822_quoted
similarity index 97%
rename from tika-parsers/src/test/resources/test-documents/testRFC822_quoted
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822_quoted
index ac100af..66ae28a 100644
--- a/tika-parsers/src/test/resources/test-documents/testRFC822_quoted
+++ b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822_quoted
@@ -1,13 +1,13 @@
-Delivered-To: a.person@example.com
-Return-Path: <an...@another-example.com>
-MIME-Version: 1.0
-Date: Fri, 26 Nov 2010 19:57:53 +0000
-Subject: Sample with Quoted Printable Text
-From: Another Person <an...@another-example.com>
-To: A. Person <a....@example.com>
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: quoted-printable
-
-D=C3=BCsseldorf has non-ascii. Lines can be spl=
-it like this. Spaces at the end of a line=20
-must be encoded.
+Delivered-To: a.person@example.com
+Return-Path: <an...@another-example.com>
+MIME-Version: 1.0
+Date: Fri, 26 Nov 2010 19:57:53 +0000
+Subject: Sample with Quoted Printable Text
+From: Another Person <an...@another-example.com>
+To: A. Person <a....@example.com>
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: quoted-printable
+
+D=C3=BCsseldorf has non-ascii. Lines can be spl=
+it like this. Spaces at the end of a line=20
+must be encoded.
diff --git a/tika-parsers/src/test/resources/test-documents/testRFC822_simple_inline_body.txt b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822_simple_inline_body.txt
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testRFC822_simple_inline_body.txt
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822_simple_inline_body.txt
diff --git a/tika-parsers/src/test/resources/test-documents/testRFC822_x-.eml b/tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822_x-.eml
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testRFC822_x-.eml
rename to tika-parser-modules/tika-parser-mail-module/src/test/resources/test-documents/testRFC822_x-.eml
diff --git a/tika-parser-modules/tika-parser-math-module/pom.xml b/tika-parser-modules/tika-parser-math-module/pom.xml
new file mode 100644
index 0000000..85d64d3
--- /dev/null
+++ b/tika-parser-modules/tika-parser-math-module/pom.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>tika-parser-modules</artifactId>
+        <groupId>org.apache.tika</groupId>
+        <version>2.0.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>tika-parser-math-module</artifactId>
+
+
+    <dependencies>
+        <dependency>
+            <groupId>com.epam</groupId>
+            <artifactId>parso</artifactId>
+            <version>${parso.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.tallison</groupId>
+            <artifactId>jmatio</artifactId>
+            <version>1.5</version>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/mat/MatParser.java b/tika-parser-modules/tika-parser-math-module/src/main/java/org/apache/tika/parser/mat/MatParser.java
similarity index 100%
rename from tika-parsers/src/main/java/org/apache/tika/parser/mat/MatParser.java
rename to tika-parser-modules/tika-parser-math-module/src/main/java/org/apache/tika/parser/mat/MatParser.java
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/sas/SAS7BDATParser.java b/tika-parser-modules/tika-parser-math-module/src/main/java/org/apache/tika/parser/sas/SAS7BDATParser.java
similarity index 98%
rename from tika-parsers/src/main/java/org/apache/tika/parser/sas/SAS7BDATParser.java
rename to tika-parser-modules/tika-parser-math-module/src/main/java/org/apache/tika/parser/sas/SAS7BDATParser.java
index f6b7efc..a065358 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/sas/SAS7BDATParser.java
+++ b/tika-parser-modules/tika-parser-math-module/src/main/java/org/apache/tika/parser/sas/SAS7BDATParser.java
@@ -27,6 +27,7 @@ import java.util.Set;
 import org.apache.tika.exception.TikaException;
 import org.apache.tika.metadata.Database;
 import org.apache.tika.metadata.HttpHeaders;
+import org.apache.tika.metadata.MachineMetadata;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.metadata.OfficeOpenXMLExtended;
 import org.apache.tika.metadata.PagedText;
@@ -34,7 +35,6 @@ import org.apache.tika.metadata.TikaCoreProperties;
 import org.apache.tika.mime.MediaType;
 import org.apache.tika.parser.AbstractParser;
 import org.apache.tika.parser.ParseContext;
-import org.apache.tika.parser.executable.MachineMetadata;
 import org.apache.tika.sax.XHTMLContentHandler;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.SAXException;
@@ -90,7 +90,7 @@ public class SAS7BDATParser extends AbstractParser {
         metadata.set(OfficeOpenXMLExtended.APP_VERSION, props.getSasRelease());
         metadata.set(MachineMetadata.ARCHITECTURE_BITS, 
                      props.isU64() ? "64" : "32");
-        metadata.set(MachineMetadata.ENDIAN, props.getEndianness() == 1 ? 
+        metadata.set(MachineMetadata.ENDIAN, props.getEndianness() == 1 ?
                      MachineMetadata.Endian.LITTLE.getName() : 
                      MachineMetadata.Endian.BIG.getName());
 
diff --git a/tika-parsers/src/main/resources/org/apache/tika/parser/ner/nltk/NLTKServer.properties b/tika-parser-modules/tika-parser-math-module/src/main/resources/META-INF/services/org.apache.tika.parser.Parser
similarity index 91%
copy from tika-parsers/src/main/resources/org/apache/tika/parser/ner/nltk/NLTKServer.properties
copy to tika-parser-modules/tika-parser-math-module/src/main/resources/META-INF/services/org.apache.tika.parser.Parser
index 5909b69..fe394ef 100644
--- a/tika-parsers/src/main/resources/org/apache/tika/parser/ner/nltk/NLTKServer.properties
+++ b/tika-parser-modules/tika-parser-math-module/src/main/resources/META-INF/services/org.apache.tika.parser.Parser
@@ -13,4 +13,5 @@
 #  See the License for the specific language governing permissions and
 #  limitations under the License.
 
-nltk.server.url=http://localhost:8881
+org.apache.tika.parser.mat.MatParser
+org.apache.tika.parser.sas.SAS7BDATParser
\ No newline at end of file
diff --git a/tika-parsers/src/test/java/org/apache/tika/parser/mat/MatParserTest.java b/tika-parser-modules/tika-parser-math-module/src/test/java/org/apache/tika/parser/mat/MatParserTest.java
similarity index 100%
rename from tika-parsers/src/test/java/org/apache/tika/parser/mat/MatParserTest.java
rename to tika-parser-modules/tika-parser-math-module/src/test/java/org/apache/tika/parser/mat/MatParserTest.java
diff --git a/tika-parsers/src/test/java/org/apache/tika/parser/sas/SAS7BDATParserTest.java b/tika-parser-modules/tika-parser-math-module/src/test/java/org/apache/tika/parser/sas/SAS7BDATParserTest.java
similarity index 99%
rename from tika-parsers/src/test/java/org/apache/tika/parser/sas/SAS7BDATParserTest.java
rename to tika-parser-modules/tika-parser-math-module/src/test/java/org/apache/tika/parser/sas/SAS7BDATParserTest.java
index 2ee5e12..12b27a8 100644
--- a/tika-parsers/src/test/java/org/apache/tika/parser/sas/SAS7BDATParserTest.java
+++ b/tika-parser-modules/tika-parser-math-module/src/test/java/org/apache/tika/parser/sas/SAS7BDATParserTest.java
@@ -24,13 +24,13 @@ import java.util.Arrays;
 import org.apache.tika.TikaTest;
 import org.apache.tika.metadata.Database;
 import org.apache.tika.metadata.HttpHeaders;
+import org.apache.tika.metadata.MachineMetadata;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.metadata.OfficeOpenXMLExtended;
 import org.apache.tika.metadata.PagedText;
 import org.apache.tika.metadata.TikaCoreProperties;
 import org.apache.tika.parser.ParseContext;
 import org.apache.tika.parser.Parser;
-import org.apache.tika.parser.executable.MachineMetadata;
 import org.apache.tika.sax.BodyContentHandler;
 import org.junit.Test;
 import org.xml.sax.ContentHandler;
diff --git a/tika-parsers/src/test/resources/test-documents/breidamerkurjokull_radar_profiles_2009.mat b/tika-parser-modules/tika-parser-math-module/src/test/resources/test-documents/breidamerkurjokull_radar_profiles_2009.mat
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/breidamerkurjokull_radar_profiles_2009.mat
rename to tika-parser-modules/tika-parser-math-module/src/test/resources/test-documents/breidamerkurjokull_radar_profiles_2009.mat
diff --git a/tika-parsers/src/test/resources/test-documents/test-columnar.sas.xml b/tika-parser-modules/tika-parser-math-module/src/test/resources/test-documents/test-columnar.sas.xml
similarity index 96%
rename from tika-parsers/src/test/resources/test-documents/test-columnar.sas.xml
rename to tika-parser-modules/tika-parser-math-module/src/test/resources/test-documents/test-columnar.sas.xml
index 45df965..16d2817 100644
--- a/tika-parsers/src/test/resources/test-documents/test-columnar.sas.xml
+++ b/tika-parser-modules/tika-parser-math-module/src/test/resources/test-documents/test-columnar.sas.xml
@@ -1,113 +1,113 @@
-<?xml version="1.0" encoding="windows-1252" ?>
-<TABLE>
-   <TESTXML>
-      <recnum>0</recnum>
-      <square>0</square>
-      <desc>This is row            0 of           10</desc>
-      <pctdone>0</pctdone>
-      <pctincr missing="M" />
-      <date>0</date>
-      <datetime>1960-01-01T00:00:01</datetime>
-      <time>00:00:01</time>
-   </TESTXML>
-   <TESTXML>
-      <recnum>1</recnum>
-      <square>1</square>
-      <desc>This is row            1 of           10</desc>
-      <pctdone>0.1</pctdone>
-      <pctincr>0</pctincr>
-      <date>1</date>
-      <datetime>1960-01-01T00:00:10</datetime>
-      <time>00:00:03</time>
-   </TESTXML>
-   <TESTXML>
-      <recnum>2</recnum>
-      <square>4</square>
-      <desc>This is row            2 of           10</desc>
-      <pctdone>0.2</pctdone>
-      <pctincr>0.5</pctincr>
-      <date>16</date>
-      <datetime>1960-01-01T00:01:40</datetime>
-      <time>00:00:09</time>
-   </TESTXML>
-   <TESTXML>
-      <recnum>3</recnum>
-      <square>9</square>
-      <desc>This is row            3 of           10</desc>
-      <pctdone>0.3</pctdone>
-      <pctincr>0.6666666667</pctincr>
-      <date>81</date>
-      <datetime>1960-01-01T00:16:40</datetime>
-      <time>00:00:27</time>
-   </TESTXML>
-   <TESTXML>
-      <recnum>4</recnum>
-      <square>16</square>
-      <desc>This is row            4 of           10</desc>
-      <pctdone>0.4</pctdone>
-      <pctincr>0.75</pctincr>
-      <date>256</date>
-      <datetime>1960-01-01T02:46:40</datetime>
-      <time>00:01:21</time>
-   </TESTXML>
-   <TESTXML>
-      <recnum>5</recnum>
-      <square>25</square>
-      <desc>This is row            5 of           10</desc>
-      <pctdone>0.5</pctdone>
-      <pctincr>0.8</pctincr>
-      <date>625</date>
-      <datetime>1960-01-02T03:46:40</datetime>
-      <time>00:04:03</time>
-   </TESTXML>
-   <TESTXML>
-      <recnum>6</recnum>
-      <square>36</square>
-      <desc>This is row            6 of           10</desc>
-      <pctdone>0.6</pctdone>
-      <pctincr>0.8333333333</pctincr>
-      <date>1296</date>
-      <datetime>1960-01-12T13:46:40</datetime>
-      <time>00:12:09</time>
-   </TESTXML>
-   <TESTXML>
-      <recnum>7</recnum>
-      <square>49</square>
-      <desc>This is row            7 of           10</desc>
-      <pctdone>0.7</pctdone>
-      <pctincr>0.8571428571</pctincr>
-      <date>2401</date>
-      <datetime>1960-04-25T17:46:40</datetime>
-      <time>00:36:27</time>
-   </TESTXML>
-   <TESTXML>
-      <recnum>8</recnum>
-      <square>64</square>
-      <desc>This is row            8 of           10</desc>
-      <pctdone>0.8</pctdone>
-      <pctincr>0.875</pctincr>
-      <date>4096</date>
-      <datetime>1963-03-03T09:46:40</datetime>
-      <time>01:49:21</time>
-   </TESTXML>
-   <TESTXML>
-      <recnum>9</recnum>
-      <square>81</square>
-      <desc>This is row            9 of           10</desc>
-      <pctdone>0.9</pctdone>
-      <pctincr>0.8888888889</pctincr>
-      <date>6561</date>
-      <datetime>1991-09-09T01:46:40</datetime>
-      <time>05:28:03</time>
-   </TESTXML>
-   <TESTXML>
-      <recnum>10</recnum>
-      <square>100</square>
-      <desc>This is row           10 of           10</desc>
-      <pctdone>1</pctdone>
-      <pctincr>0.9</pctincr>
-      <date>10000</date>
-      <datetime>2276-11-19T17:46:40</datetime>
-      <time>16:24:09</time>
-   </TESTXML>
-</TABLE>
+<?xml version="1.0" encoding="windows-1252" ?>
+<TABLE>
+   <TESTXML>
+      <recnum>0</recnum>
+      <square>0</square>
+      <desc>This is row            0 of           10</desc>
+      <pctdone>0</pctdone>
+      <pctincr missing="M" />
+      <date>0</date>
+      <datetime>1960-01-01T00:00:01</datetime>
+      <time>00:00:01</time>
+   </TESTXML>
+   <TESTXML>
+      <recnum>1</recnum>
+      <square>1</square>
+      <desc>This is row            1 of           10</desc>
+      <pctdone>0.1</pctdone>
+      <pctincr>0</pctincr>
+      <date>1</date>
+      <datetime>1960-01-01T00:00:10</datetime>
+      <time>00:00:03</time>
+   </TESTXML>
+   <TESTXML>
+      <recnum>2</recnum>
+      <square>4</square>
+      <desc>This is row            2 of           10</desc>
+      <pctdone>0.2</pctdone>
+      <pctincr>0.5</pctincr>
+      <date>16</date>
+      <datetime>1960-01-01T00:01:40</datetime>
+      <time>00:00:09</time>
+   </TESTXML>
+   <TESTXML>
+      <recnum>3</recnum>
+      <square>9</square>
+      <desc>This is row            3 of           10</desc>
+      <pctdone>0.3</pctdone>
+      <pctincr>0.6666666667</pctincr>
+      <date>81</date>
+      <datetime>1960-01-01T00:16:40</datetime>
+      <time>00:00:27</time>
+   </TESTXML>
+   <TESTXML>
+      <recnum>4</recnum>
+      <square>16</square>
+      <desc>This is row            4 of           10</desc>
+      <pctdone>0.4</pctdone>
+      <pctincr>0.75</pctincr>
+      <date>256</date>
+      <datetime>1960-01-01T02:46:40</datetime>
+      <time>00:01:21</time>
+   </TESTXML>
+   <TESTXML>
+      <recnum>5</recnum>
+      <square>25</square>
+      <desc>This is row            5 of           10</desc>
+      <pctdone>0.5</pctdone>
+      <pctincr>0.8</pctincr>
+      <date>625</date>
+      <datetime>1960-01-02T03:46:40</datetime>
+      <time>00:04:03</time>
+   </TESTXML>
+   <TESTXML>
+      <recnum>6</recnum>
+      <square>36</square>
+      <desc>This is row            6 of           10</desc>
+      <pctdone>0.6</pctdone>
+      <pctincr>0.8333333333</pctincr>
+      <date>1296</date>
+      <datetime>1960-01-12T13:46:40</datetime>
+      <time>00:12:09</time>
+   </TESTXML>
+   <TESTXML>
+      <recnum>7</recnum>
+      <square>49</square>
+      <desc>This is row            7 of           10</desc>
+      <pctdone>0.7</pctdone>
+      <pctincr>0.8571428571</pctincr>
+      <date>2401</date>
+      <datetime>1960-04-25T17:46:40</datetime>
+      <time>00:36:27</time>
+   </TESTXML>
+   <TESTXML>
+      <recnum>8</recnum>
+      <square>64</square>
+      <desc>This is row            8 of           10</desc>
+      <pctdone>0.8</pctdone>
+      <pctincr>0.875</pctincr>
+      <date>4096</date>
+      <datetime>1963-03-03T09:46:40</datetime>
+      <time>01:49:21</time>
+   </TESTXML>
+   <TESTXML>
+      <recnum>9</recnum>
+      <square>81</square>
+      <desc>This is row            9 of           10</desc>
+      <pctdone>0.9</pctdone>
+      <pctincr>0.8888888889</pctincr>
+      <date>6561</date>
+      <datetime>1991-09-09T01:46:40</datetime>
+      <time>05:28:03</time>
+   </TESTXML>
+   <TESTXML>
+      <recnum>10</recnum>
+      <square>100</square>
+      <desc>This is row           10 of           10</desc>
+      <pctdone>1</pctdone>
+      <pctincr>0.9</pctincr>
+      <date>10000</date>
+      <datetime>2276-11-19T17:46:40</datetime>
+      <time>16:24:09</time>
+   </TESTXML>
+</TABLE>
diff --git a/tika-parsers/src/test/resources/test-documents/test-columnar.sas7bdat b/tika-parser-modules/tika-parser-math-module/src/test/resources/test-documents/test-columnar.sas7bdat
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/test-columnar.sas7bdat
rename to tika-parser-modules/tika-parser-math-module/src/test/resources/test-documents/test-columnar.sas7bdat
diff --git a/tika-parsers/src/test/resources/test-documents/testMATLAB.m b/tika-parser-modules/tika-parser-math-module/src/test/resources/test-documents/testMATLAB.m
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testMATLAB.m
rename to tika-parser-modules/tika-parser-math-module/src/test/resources/test-documents/testMATLAB.m
diff --git a/tika-parsers/src/test/resources/test-documents/testMATLAB_barcast.m b/tika-parser-modules/tika-parser-math-module/src/test/resources/test-documents/testMATLAB_barcast.m
similarity index 97%
rename from tika-parsers/src/test/resources/test-documents/testMATLAB_barcast.m
rename to tika-parser-modules/tika-parser-math-module/src/test/resources/test-documents/testMATLAB_barcast.m
index 6499a6f..5cad76d 100644
--- a/tika-parsers/src/test/resources/test-documents/testMATLAB_barcast.m
+++ b/tika-parser-modules/tika-parser-math-module/src/test/resources/test-documents/testMATLAB_barcast.m
@@ -1,383 +1,383 @@
-%% CONTROL CODE FOR FULLY BAYESIAN SPATIO-TEMPORAL TEMPERATURE RECONSTRUCTION
-%EVERYTHING IS MODULAR TO ALLOW FOR EASY DEBUGGING AND ADAPTATION
-% _vNewModel_Oct08: change the formalism to reflect new model (Beta_1 now
-% normal). Allows for multiple proxies
-clear all; close all;
-%SET MATLAB'S CURRENT DIRECTORY TO HERE. 
-% set the priors and the inital values for the MCMC sampler
-Prior_pars_vNewModel
-Initial_par_vals_vNewModel
-%% Set the seed of the random number generators
-randn('state', sum((1000+600)*clock))
-rand('state', sum((1000+800)*clock))
-
-%% load the data
-cd TestData
-load BARCAST_INPUT_vNewMeth1
-%break it apart
-Locs=BARCAST_INPUT.Master_Locs;
-N_Locs=length(Locs(:,1)); %Number of locations:
-timeline=[BARCAST_INPUT.Data_timeline(1)-1, BARCAST_INPUT.Data_timeline];
-N_Times=length(timeline)-1; %Number of DATA times
-loc_areas=BARCAST_INPUT.Areas;
-Inds_GridLocs_Central=BARCAST_INPUT.Inds_Central;
-
-%get the number of proxy types:
-N_PT=length(fieldnames(BARCAST_INPUT))-5;
-
-%stack the three data matrices, one on top of the other
-%the first N_Locs ROWS are the Inst, the next N_Locs ROWS the first proxy
-%type, the next the third. . . . .. Each column a year. The first
-%corresponds to the SECOND entry in timeline. 
-Data_ALL=BARCAST_INPUT.Inst_Data;
-for kk=1:1:N_PT
-    tp=eval(['BARCAST_INPUT.Prox_Data', num2str(kk)]);
-    Data_ALL=[Data_ALL; tp];
-end
-
-% % % % All_locs_wInd=BARCAST_INPUT.All_locs_wInd;
-% % % % lon_lat_area=BARCAST_INPUT.lon_lat_area;
-% % % % DATA_Mat=BARCAST_INPUT.DATA_Mat;
-% % % % DATA_Mat_locs=BARCAST_INPUT.DATA_Mat_locs;
-% % % % Inds_GridLocs_Central=BARCAST_INPUT.Inds_GridLocs_Central;
-% % % % timeline=BARCAST_INPUT.timeline;
-% % % % clear BARCAST_INPUT
-
-%Priors and MH jumping parameters, from Prior_pars_vNewModel
-load PRIORS_vNewMeth1
-load MHpars_vNewMeth1
-%Initial values from Initial_par_vals_vNewModel
-load INITIAL_VALS_vNewMeth1
-
-%The Order of THE SCALAR parameters WILL ALWAYS thus:
-%1 = alpha, the AR(1) coefficient
-%2 = mu, the constant par in the linear mean of the AR(1) process
-%3 = sigma2, the partial sill in the spatial covariance matrix
-%4 = phi, the range parameter in the spatial covariance matrix
-%5 = tau2_I, the Inst measurement error
-%6 = tau2_P, the measurement error, first PROX type
-%7 = Beta_1, the scaling par in the  first P observation equation
-%8 = Beta_0, the additive par in the first P observation equation
-%and, if there is second proxy type
-%9  = tau2_P_2, the measurement error, second PROX type
-%10 = Beta_1, the scaling par in the  second P observation equation
-%11 = Beta_0, the additive par in the second P observation equation
-%and, if there is third proxy type . . . . 
-
-%A NOTE ON GAMMA NOTATION. WE USE THE NOTATION OF Gelman et al, "Bayesian
-%Data Analysis", WHERE GAMMA PARAMETERS ALPHA, BETA)==(SHAPE, INVERSE SCALE). 
-%THE RANDRAW.M CODE USES (A,B)==(SHAPE, SCALE), AND THE CALL IS RANDRAW('GAMMA', [M,B,A], SAMPLESIZE), 
-%WHERE M IS THE LOCATION (NOT NEEDED). SO IN THE NOTATION OF GELMAN ET AT, THE CALL IS
-%RANDRAW('GAMMA', [0,1/BETA,ALPHA], SAMPLESIZE). 
-%For example,
-%RANDRAW('GAMMA', [0,1/PRIORS.sigma2(2),PRIORS.sigma2(1)], 1), AND ETC. 
-
-%switch back tot he main directory
-cd ..
-%% SET a few parameters
-%Number of iterations of the complete sampler
-Sampler_Its=2000;
-
-%Number of times to update only the temperature array before beginning to
-%update the other parameters
-pre_Sampler_Its=500; 
-
-
-%% Areal weights vector for averaging the temperatures at each year
-%note that some of the elments of the temeprature are given 0 weight -
-%outside the prediction bounds. This is based on an input of the area of
-%each gridbox
-SpaceWeight=loc_areas/sum(loc_areas);
-%and for the central region/region of interest
-Areas_Central=zeros(1,N_Locs);
-Areas_Central(Inds_GridLocs_Central)=loc_areas(Inds_GridLocs_Central);
-SpaceWeight_Central=Areas_Central/sum(Areas_Central);
-
-%(In some applications, the goal might be to estimate the block average
-%over a subset of the locations in the reconstruction. For example, the
-%goal might be to reconstruct temperatures in Maine, but proxy records from
-%NH are incldued in the analysis, as they help to constrain temperatures in
-%Maine. SO some of the weights are, in this case, set to zero). 
-
-
-%% CALCULATE FIXED QUANTITIES (DO NOT DEPEND ON UNKOWN PARAMETERS)
-
-%The matrix of distances between every possible pair of points, (I,P,R)
-All_DistMat=EarthDistances(Locs);
-
-%The H(t) selection matrix. 
-%Basically, H(t) tells us which Inst and prox
-%locations have measurements for a given year. So: define H(t) for each
-%year as an indicator vector, and thus HH a matrix such that each column is
-%the indicator vector for that year. In other words, this is the complete
-%indicator matrix for the presence of data::
-%1=YES Measurement;
-%0=NO  Measurement
-%Simply a ZERO wherever there is a NaN in Data_ALL, and a ONE whereever
-%this is a value
-HH_SelectMat=ones(size(Data_ALL))-isnan(Data_ALL);
-
-%The total number of Inst/Prox Observations are needed for several
-%conditional posteriors, and can be calculated from the HH_SelectMat:
-M_InstProx=NaN(1+N_PT,1);
-%vectot: first the total number of inst obsm then the total number of each
-%prox type, in order.
-%Inst:
-M_InstProx(1)=sum(sum(HH_SelectMat(1:1:N_Locs, :)));
-%Prox:
-for kk=1:1:N_PT
-    M_InstProx(kk+1)=sum(sum(HH_SelectMat(kk*N_Locs+1:1:(kk+1)*N_Locs, :)));
-end
-
-%% Set the initial values of the Field matrix and Current Parameter Vector
-% These will be updated and then saved at each iteration of the sampler.
-% They are initially filled with the values from INITIAL_VALS.
-% Paramter/field values at each step of the gibbs sampler are taken from
-% these objects, and new draws override the current entries. This ensures
-% that each step of the Gibbs sampler is ALWAYS using the most recent set of ALL 
-% parameters, without having to deal with +/-1 indices.
-
-%Array of the estimated true temperature values, set to the initial values:  
-Temperature_MCMC_Sampler=INITIAL_VALS.Temperature;
-%Order: All I, P with locs common to I, Rest of the P, R.
-%In other words, ordered the same as InstProx_locs, then with Rand_locs
-%added on
-%note that
-%[Inst_locs; Prox_locs] = InstProx_locs([Inst_inds,Prox_inds],:)
-%SO: Temperature_MCMC_Sampler([Inst_inds,Prox_inds], KK) extracts the
-%elements that can be compared to the corresponding time of DATA_Mat
-
-% Current values of the scalar parameters
-INITIAL_SCALAR_VALS=rmfield(INITIAL_VALS, 'Temperature');
-CURRENT_PARS=cell2mat(struct2cell(INITIAL_SCALAR_VALS));
-
-% OR LOAD TRUE VALUES - FOR TESTING
-% load TestData\Pars_TRUE
-% CURRENT_PARS=Pars_TRUE';
-% 
-% load TestData\TrueTemps_v1
-% Temperature_MCMC_Sampler=Temperature_Matrix;
-
-%% DEFINE EMPTY MATRICES that will be filled with the sampler
-%DEFINE the empty parameter matrix:
-N_Pars=length(CURRENT_PARS);
-Paramters_MCMC_Samples=NaN(N_Pars, Sampler_Its);
-%The empty matrix of the samples of the blockaverage timeseries:
-BlockAve_MCMC_Samples=NaN(N_Times+1, pre_Sampler_Its+Sampler_Its);
-%and the central/target portion
-BlockAve_Central_MCMC_Samples=NaN(N_Times+1, pre_Sampler_Its+Sampler_Its);
-%NOTE the initial values of the parameters, field, and block averages will
-%NOT be saved. So the first item in all matrices/arrays are the results
-%after the first iteration of the sampler
-
-%IN this case, as the amount of data is small, we are able to deal
-%with the whole array of space time draws. In applications with larger
-%data, this is not possible (memory overflow). 
-Temperature_ARRAY=NaN(N_Locs, N_Times+1, pre_Sampler_Its+Sampler_Its);
-
-
-%% CALCULATE PARAMETER DEPENDENT QUANTITIES
-%that are used several times in the sampler
-%
-%The idea: calculate the quantities with the initial parameter values, then
-%update as soon as possible, leaving the variablle name the same
-%
-%calculate the initial spatial correlation matrix, and its inverse
-%these are needed several times.
-%AS SOON as phi is updated, this is updated, ensuring that the
-%correlation matrix and its inverse are always up to date, regardless of
-%the order of the sampling below.
-CURRENT_spatial_corr_mat=exp(-CURRENT_PARS(4)*All_DistMat);
-CURRENT_inv_spatial_corr_mat=inv(CURRENT_spatial_corr_mat);
-
-%% To speed up the code 
-%1. Find the UNIQUE missing data patterns, number them.
-%2. Index each year by the missing data pattern.
-%3. For each missing data pattern, calculate the inverse and square root of
-%the conditional posterior covariance of a T_k, and stack them
-%4. Rewrite the T_k_Updater to simply call these matrices. 
-%This reduces the number of matrix inversions for each FULL iteration of
-%the sampler to the number of UNIQUE data patterns, and reduces the number
-%for the pre iterations to 2. 
-
-U_Patterns=unique(HH_SelectMat', 'rows');
-%create an index vector that gices, for each year, the number of the
-%corresponding pattern in U_Patterns
-%Basically - HH_SelectMat can be represented by U_Patterns and this index vector:
-Pattern_by_Year=NaN(N_Times,1);
-for kk=1:1:length(U_Patterns(:,1));
-    dummy=ismember(HH_SelectMat', U_Patterns(kk,:), 'rows');
-    Pattern_by_Year(find(dummy==1))=kk;
-end
-
-%Input the CURRENT_PARS vector and etc into Covariance_Patterns, which returns two 3d
-%arrays: the covariance amtrix for each missing data patter (for
-%the mean calculation) and the squre root of the covariance matrix (to make
-%the draw). 
-[CURRENT_COV_ARRAY, CURRENT_SQRT_COV_ARRAY]=Covariance_Patterns(U_Patterns, CURRENT_PARS, CURRENT_inv_spatial_corr_mat, N_Locs, N_PT);
-
-
-
-%% In an attempt to speed convergence of the variance paramters
-% we will uptate only the true temperature array for a number of
-% iterations, and then add the updating of the other parameters. This is to
-% prevent the model from requiring large variances to fit the observations
-% to the data.
-%timertimer=NaN;
-for samples=1:1:pre_Sampler_Its
-    tic;
-    %% SAMPLE T(0): True temperature the year before the first measurement.
-    Temperature_MCMC_Sampler(:,1)=T_0_Updater_vNM(PRIORS.T_0, Temperature_MCMC_Sampler(:,2), CURRENT_PARS, CURRENT_inv_spatial_corr_mat);
-    
-    %% SAMPLE T(1), . . ., T(last-1). Recall that the T matrix starts at time=0, while the W matrix starts at time=1
-    for Tm=2:1:N_Times
-        Temperature_MCMC_Sampler(:,Tm)=T_k_Updater_vFAST(Temperature_MCMC_Sampler(:, Tm-1), Temperature_MCMC_Sampler(:,Tm+1), Data_ALL(:,Tm-1), CURRENT_PARS, U_Patterns(Pattern_by_Year(Tm-1),:),CURRENT_COV_ARRAY(:,:,Pattern_by_Year(Tm-1)),CURRENT_SQRT_COV_ARRAY(:,:,Pattern_by_Year(Tm-1)),CURRENT_inv_spatial_corr_mat, N_Locs, N_PT);
-    end
-    %This is a SLOW step, because it is actually N_Times-1 steps. . . 
-
-    %% SAMPLE T(last)
-    Temperature_MCMC_Sampler(:,N_Times+1)=T_last_Updater_vNM(Temperature_MCMC_Sampler(:, N_Times), Data_ALL(:,N_Times), HH_SelectMat(:, N_Times), CURRENT_PARS, CURRENT_inv_spatial_corr_mat, N_Locs, N_PT);
-           
-    %% Fill in the next iteration of the BlockAve_MCMC_Samples matrix: 
-	BlockAve_MCMC_Samples(:,samples)=(SpaceWeight*Temperature_MCMC_Sampler)';
-    BlockAve_Central_MCMC_Samples(:, samples)=(SpaceWeight_Central*Temperature_MCMC_Sampler)';
-    %Fill in the next slice of the space-time field draw array
-    Temperature_ARRAY(:,:,samples)=Temperature_MCMC_Sampler;
-    
-    %save the current draw of the space-time temp matrix
-    %save(['TestData\FieldDraws\Temp_MCMC_vNM_Test_PreStep' num2str(samples)],'Temperature_MCMC_Sampler');
-
-    timertimer=toc;
-	disp(['Working on pre-MCMC iteration ', num2str(samples), ' of ', num2str(pre_Sampler_Its), '. Last iteration took ', num2str(timertimer), ' seconds.'])
-
-end
-
-timertimer=NaN;
-%% RUN THE SAMPLER
-for samples=1:1:Sampler_Its
-    
-    tic
-    %% SAMPLE T(0): True temperature the year before the first measurement.
-    Temperature_MCMC_Sampler(:,1)=T_0_Updater_vNM(PRIORS.T_0, Temperature_MCMC_Sampler(:,2), CURRENT_PARS, CURRENT_inv_spatial_corr_mat);
-    
-    %% SAMPLE T(1), . . ., T(last-1). Recall that the T matrix starts at time=0, while the W matrix starts at time=1
-    for Tm=2:1:N_Times
-        Temperature_MCMC_Sampler(:,Tm)=T_k_Updater_vFAST(Temperature_MCMC_Sampler(:, Tm-1), Temperature_MCMC_Sampler(:,Tm+1), Data_ALL(:,Tm-1), CURRENT_PARS, U_Patterns(Pattern_by_Year(Tm-1),:),CURRENT_COV_ARRAY(:,:,Pattern_by_Year(Tm-1)),CURRENT_SQRT_COV_ARRAY(:,:,Pattern_by_Year(Tm-1)),CURRENT_inv_spatial_corr_mat, N_Locs, N_PT);
-    end
-    %This is a SLOW step, because it is actually N_Times-1 steps. . . 
-
-    %% SAMPLE T(last)
-    Temperature_MCMC_Sampler(:,N_Times+1)=T_last_Updater_vNM(Temperature_MCMC_Sampler(:, N_Times), Data_ALL(:,N_Times), HH_SelectMat(:, N_Times), CURRENT_PARS, CURRENT_inv_spatial_corr_mat, N_Locs, N_PT);
-    
-    %% SAMPLE AR(1) coefficient    
-    New_Alpha=Alpha_Updater_vNM(PRIORS.alpha, Temperature_MCMC_Sampler, CURRENT_PARS, CURRENT_inv_spatial_corr_mat);
-    CURRENT_PARS(1)=New_Alpha;
-    clear New_Alpha
-
-    %% SAMPLE AR(1) mean constant parameter, mu:
-    New_mu=Mu_Updater_vNM(PRIORS.mu, Temperature_MCMC_Sampler, CURRENT_PARS, CURRENT_inv_spatial_corr_mat);
-    CURRENT_PARS(2)=New_mu;
-    clear New_AR_mean_mu
-    
-    %% SAMPLE Partial Sill of the spatial covaraince martrix
-    New_sigma2=Sigma2_Updater_vNM(PRIORS.sigma2, Temperature_MCMC_Sampler, CURRENT_PARS, CURRENT_inv_spatial_corr_mat);
-    %ARTIFICIALLY put a cieling at, say, 5.
-    %CHECK a posterior that, one the algorithm has converged, ALL draws are
-    %lower than this. 
-    CURRENT_PARS(3)=min(5, New_sigma2);
-    clear New_sigma2
-	
-    %% SAMPLE Range Parameter of the spatial covaraince martrix (METROPOLIS)
-    % This also updates the spatial corelation matrix and its inverse
-    [New_phi, New_scm, New_iscm]=Phi_Updater_vNM(PRIORS.phi, Temperature_MCMC_Sampler, CURRENT_PARS, CURRENT_spatial_corr_mat, CURRENT_inv_spatial_corr_mat, All_DistMat, MHpars.log_phi);
-    CURRENT_PARS(4)=New_phi;
-    CURRENT_spatial_corr_mat=New_scm;
-    CURRENT_inv_spatial_corr_mat=New_iscm;
-    clear New_phi New_iscm New_scm
-    
-    %% SAMPLE Instrumental measurement error
-    New_tau2_I=tau2_I_Updater_vNM(PRIORS.tau2_I, Temperature_MCMC_Sampler, Data_ALL, N_Locs, M_InstProx(1));
-    %ARTIFICIALLY put a cieling at, say, 5.
-    %CHECK a posterior that, one the algorithm has converged, ALL draws are
-    %lower than this. 
-    CURRENT_PARS(5)=min(5, New_tau2_I);
-    clear New_tau2_I
-    
-    
-    
-    %% NEED TO LOOP THE SAMPLING OF THESE THREE PARAMETERS
-    for Pnum=1:1:N_PT
-        %curtail the CURRENT_PARS vector to only include the pars for one
-        %proxy type at a time:
-        CURRENT_PARS_Brief=[CURRENT_PARS(1:1:5); CURRENT_PARS([6:1:8]+(Pnum-1)*3)];
-        %Similarily exract each type of proxy data:
-        Prox_Data_Brief=eval(['BARCAST_INPUT.Prox_Data', num2str(Pnum)]);
-
-        %% SAMPLE Proxy measurement error
-        New_tau2_P=tau2_P_Updater_vNM(eval(['PRIORS.tau2_P_', num2str(Pnum)]), Temperature_MCMC_Sampler, Prox_Data_Brief, CURRENT_PARS_Brief, M_InstProx(Pnum+1));
-        %ARTIFICIALLY put a cieling at, say, 50.
-        %CHECK a posterior that, one the algorithm has converged, ALL draws are
-        %lower than this.
-        CURRENT_PARS_Brief(6)=min(10, New_tau2_P);
-        clear New_tau2_P
-
-        %% SAMPLE Scaling constant in the proxy observation equation
-        New_beta_1=Beta_1_Updater_vNM(eval(['PRIORS.Beta_1_', num2str(Pnum)]), Temperature_MCMC_Sampler, Prox_Data_Brief, CURRENT_PARS_Brief);
-        CURRENT_PARS_Brief(7)=New_beta_1;
-        clear New_beta_1
-
-        %% SAMPLE Additive constant in the proxy observation equation
-        New_Beta_0=Beta_0_Updater_vNM(eval(['PRIORS.Beta_0_', num2str(Pnum)]), Temperature_MCMC_Sampler, Prox_Data_Brief, CURRENT_PARS_Brief, M_InstProx(Pnum+1));
-        CURRENT_PARS_Brief(8)=New_Beta_0;
-        clear New_Beta_0
-
-        CURRENT_PARS([6:1:8]+(Pnum-1)*3)=CURRENT_PARS_Brief(6:1:8);
-
-    end
-    
-    %% UPDATE the covariance arrays used in the T_k_Updater step
-    [CURRENT_COV_ARRAY, CURRENT_SQRT_COV_ARRAY]=Covariance_Patterns(U_Patterns, CURRENT_PARS, CURRENT_inv_spatial_corr_mat, N_Locs, N_PT);
-
-    
-    %% UPDATE THE VARIOUS MATRICES, SAVE CURRENT TEMPERTAURE MATRIX
-    %update the Paramters_MCMC_Samples matrix:
-    Paramters_MCMC_Samples(:, samples)=CURRENT_PARS;
-    %CURRENT_PARS is not cleared: it is, after all, the current parameter
-    %vector. 
-    
-    %Fill in the next iteration of the BlockAve_MCMC_Samples matrix:
-    BlockAve_MCMC_Samples(:, pre_Sampler_Its+samples)=(SpaceWeight*Temperature_MCMC_Sampler)';
-    BlockAve_Central_MCMC_Samples(:, pre_Sampler_Its+samples)=(SpaceWeight_Central*Temperature_MCMC_Sampler)';
-
-    %add the new draw of the space-time temp matrix
-    Temperature_ARRAY(:,:,pre_Sampler_Its+samples)=Temperature_MCMC_Sampler;
-    %save the current draw of the space-time temp matrix
-    %save(['TestData\FieldDraws\Temp_MCMC_vNM_Test_Step' num2str(samples)],'Temperature_MCMC_Sampler');    
-    
-    %SAVE the matrix of parameter vector draws and the matrix of block
-    %average vectors. (This way, even if the code is stopped prematurely,
-    %we get something)
-    %cd TestData
-    %cd FieldDraws
-    %save TestData\FieldDraws\Paramters_MCMC_Samples_vNM Paramters_MCMC_Samples 
-    %save TestData\FieldDraws\Temperature_ARRAY_vNM Temperature_ARRAY
-    %save TestData\FieldDraws\BlockAve_MCMC_Samples_vNM BlockAve_MCMC_Samples
-    %save TestData\FieldDraws\BlockAve_Central_MCMC_Samples_vNM BlockAve_Central_MCMC_Samples
-    %and back
-    %cd ..
-    %cd ..
-    timertimer=toc;
-    disp(['Finished MCMC iteration ', num2str(samples), ' of ', num2str(Sampler_Its), '. Last iteration took ', num2str(timertimer), ' seconds.'])
-end
-
-%% SAVE the matrix of parameter vector draws and the matrix of block
-%average vectors. 
-cd TestData
-cd FieldDraws
-    save Paramters_MCMC_Samples_vNM Paramters_MCMC_Samples 
-    save Temperature_ARRAY_vNM Temperature_ARRAY
-    save BlockAve_MCMC_Samples_vNM BlockAve_MCMC_Samples
-    save BlockAve_Central_MCMC_Samples_vNM BlockAve_Central_MCMC_Samples
-%and back
-cd ..
-cd ..
+%% CONTROL CODE FOR FULLY BAYESIAN SPATIO-TEMPORAL TEMPERATURE RECONSTRUCTION
+%EVERYTHING IS MODULAR TO ALLOW FOR EASY DEBUGGING AND ADAPTATION
+% _vNewModel_Oct08: change the formalism to reflect new model (Beta_1 now
+% normal). Allows for multiple proxies
+clear all; close all;
+%SET MATLAB'S CURRENT DIRECTORY TO HERE. 
+% set the priors and the inital values for the MCMC sampler
+Prior_pars_vNewModel
+Initial_par_vals_vNewModel
+%% Set the seed of the random number generators
+randn('state', sum((1000+600)*clock))
+rand('state', sum((1000+800)*clock))
+
+%% load the data
+cd TestData
+load BARCAST_INPUT_vNewMeth1
+%break it apart
+Locs=BARCAST_INPUT.Master_Locs;
+N_Locs=length(Locs(:,1)); %Number of locations:
+timeline=[BARCAST_INPUT.Data_timeline(1)-1, BARCAST_INPUT.Data_timeline];
+N_Times=length(timeline)-1; %Number of DATA times
+loc_areas=BARCAST_INPUT.Areas;
+Inds_GridLocs_Central=BARCAST_INPUT.Inds_Central;
+
+%get the number of proxy types:
+N_PT=length(fieldnames(BARCAST_INPUT))-5;
+
+%stack the three data matrices, one on top of the other
+%the first N_Locs ROWS are the Inst, the next N_Locs ROWS the first proxy
+%type, the next the third. . . . .. Each column a year. The first
+%corresponds to the SECOND entry in timeline. 
+Data_ALL=BARCAST_INPUT.Inst_Data;
+for kk=1:1:N_PT
+    tp=eval(['BARCAST_INPUT.Prox_Data', num2str(kk)]);
+    Data_ALL=[Data_ALL; tp];
+end
+
+% % % % All_locs_wInd=BARCAST_INPUT.All_locs_wInd;
+% % % % lon_lat_area=BARCAST_INPUT.lon_lat_area;
+% % % % DATA_Mat=BARCAST_INPUT.DATA_Mat;
+% % % % DATA_Mat_locs=BARCAST_INPUT.DATA_Mat_locs;
+% % % % Inds_GridLocs_Central=BARCAST_INPUT.Inds_GridLocs_Central;
+% % % % timeline=BARCAST_INPUT.timeline;
+% % % % clear BARCAST_INPUT
+
+%Priors and MH jumping parameters, from Prior_pars_vNewModel
+load PRIORS_vNewMeth1
+load MHpars_vNewMeth1
+%Initial values from Initial_par_vals_vNewModel
+load INITIAL_VALS_vNewMeth1
+
+%The Order of THE SCALAR parameters WILL ALWAYS thus:
+%1 = alpha, the AR(1) coefficient
+%2 = mu, the constant par in the linear mean of the AR(1) process
+%3 = sigma2, the partial sill in the spatial covariance matrix
+%4 = phi, the range parameter in the spatial covariance matrix
+%5 = tau2_I, the Inst measurement error
+%6 = tau2_P, the measurement error, first PROX type
+%7 = Beta_1, the scaling par in the  first P observation equation
+%8 = Beta_0, the additive par in the first P observation equation
+%and, if there is second proxy type
+%9  = tau2_P_2, the measurement error, second PROX type
+%10 = Beta_1, the scaling par in the  second P observation equation
+%11 = Beta_0, the additive par in the second P observation equation
+%and, if there is third proxy type . . . . 
+
+%A NOTE ON GAMMA NOTATION. WE USE THE NOTATION OF Gelman et al, "Bayesian
+%Data Analysis", WHERE GAMMA PARAMETERS ALPHA, BETA)==(SHAPE, INVERSE SCALE). 
+%THE RANDRAW.M CODE USES (A,B)==(SHAPE, SCALE), AND THE CALL IS RANDRAW('GAMMA', [M,B,A], SAMPLESIZE), 
+%WHERE M IS THE LOCATION (NOT NEEDED). SO IN THE NOTATION OF GELMAN ET AT, THE CALL IS
+%RANDRAW('GAMMA', [0,1/BETA,ALPHA], SAMPLESIZE). 
+%For example,
+%RANDRAW('GAMMA', [0,1/PRIORS.sigma2(2),PRIORS.sigma2(1)], 1), AND ETC. 
+
+%switch back tot he main directory
+cd ..
+%% SET a few parameters
+%Number of iterations of the complete sampler
+Sampler_Its=2000;
+
+%Number of times to update only the temperature array before beginning to
+%update the other parameters
+pre_Sampler_Its=500; 
+
+
+%% Areal weights vector for averaging the temperatures at each year
+%note that some of the elments of the temeprature are given 0 weight -
+%outside the prediction bounds. This is based on an input of the area of
+%each gridbox
+SpaceWeight=loc_areas/sum(loc_areas);
+%and for the central region/region of interest
+Areas_Central=zeros(1,N_Locs);
+Areas_Central(Inds_GridLocs_Central)=loc_areas(Inds_GridLocs_Central);
+SpaceWeight_Central=Areas_Central/sum(Areas_Central);
+
+%(In some applications, the goal might be to estimate the block average
+%over a subset of the locations in the reconstruction. For example, the
+%goal might be to reconstruct temperatures in Maine, but proxy records from
+%NH are incldued in the analysis, as they help to constrain temperatures in
+%Maine. SO some of the weights are, in this case, set to zero). 
+
+
+%% CALCULATE FIXED QUANTITIES (DO NOT DEPEND ON UNKOWN PARAMETERS)
+
+%The matrix of distances between every possible pair of points, (I,P,R)
+All_DistMat=EarthDistances(Locs);
+
+%The H(t) selection matrix. 
+%Basically, H(t) tells us which Inst and prox
+%locations have measurements for a given year. So: define H(t) for each
+%year as an indicator vector, and thus HH a matrix such that each column is
+%the indicator vector for that year. In other words, this is the complete
+%indicator matrix for the presence of data::
+%1=YES Measurement;
+%0=NO  Measurement
+%Simply a ZERO wherever there is a NaN in Data_ALL, and a ONE whereever
+%this is a value
+HH_SelectMat=ones(size(Data_ALL))-isnan(Data_ALL);
+
+%The total number of Inst/Prox Observations are needed for several
+%conditional posteriors, and can be calculated from the HH_SelectMat:
+M_InstProx=NaN(1+N_PT,1);
+%vectot: first the total number of inst obsm then the total number of each
+%prox type, in order.
+%Inst:
+M_InstProx(1)=sum(sum(HH_SelectMat(1:1:N_Locs, :)));
+%Prox:
+for kk=1:1:N_PT
+    M_InstProx(kk+1)=sum(sum(HH_SelectMat(kk*N_Locs+1:1:(kk+1)*N_Locs, :)));
+end
+
+%% Set the initial values of the Field matrix and Current Parameter Vector
+% These will be updated and then saved at each iteration of the sampler.
+% They are initially filled with the values from INITIAL_VALS.
+% Paramter/field values at each step of the gibbs sampler are taken from
+% these objects, and new draws override the current entries. This ensures
+% that each step of the Gibbs sampler is ALWAYS using the most recent set of ALL 
+% parameters, without having to deal with +/-1 indices.
+
+%Array of the estimated true temperature values, set to the initial values:  
+Temperature_MCMC_Sampler=INITIAL_VALS.Temperature;
+%Order: All I, P with locs common to I, Rest of the P, R.
+%In other words, ordered the same as InstProx_locs, then with Rand_locs
+%added on
+%note that
+%[Inst_locs; Prox_locs] = InstProx_locs([Inst_inds,Prox_inds],:)
+%SO: Temperature_MCMC_Sampler([Inst_inds,Prox_inds], KK) extracts the
+%elements that can be compared to the corresponding time of DATA_Mat
+
+% Current values of the scalar parameters
+INITIAL_SCALAR_VALS=rmfield(INITIAL_VALS, 'Temperature');
+CURRENT_PARS=cell2mat(struct2cell(INITIAL_SCALAR_VALS));
+
+% OR LOAD TRUE VALUES - FOR TESTING
+% load TestData\Pars_TRUE
+% CURRENT_PARS=Pars_TRUE';
+% 
+% load TestData\TrueTemps_v1
+% Temperature_MCMC_Sampler=Temperature_Matrix;
+
+%% DEFINE EMPTY MATRICES that will be filled with the sampler
+%DEFINE the empty parameter matrix:
+N_Pars=length(CURRENT_PARS);
+Paramters_MCMC_Samples=NaN(N_Pars, Sampler_Its);
+%The empty matrix of the samples of the blockaverage timeseries:
+BlockAve_MCMC_Samples=NaN(N_Times+1, pre_Sampler_Its+Sampler_Its);
+%and the central/target portion
+BlockAve_Central_MCMC_Samples=NaN(N_Times+1, pre_Sampler_Its+Sampler_Its);
+%NOTE the initial values of the parameters, field, and block averages will
+%NOT be saved. So the first item in all matrices/arrays are the results
+%after the first iteration of the sampler
+
+%IN this case, as the amount of data is small, we are able to deal
+%with the whole array of space time draws. In applications with larger
+%data, this is not possible (memory overflow). 
+Temperature_ARRAY=NaN(N_Locs, N_Times+1, pre_Sampler_Its+Sampler_Its);
+
+
+%% CALCULATE PARAMETER DEPENDENT QUANTITIES
+%that are used several times in the sampler
+%
+%The idea: calculate the quantities with the initial parameter values, then
+%update as soon as possible, leaving the variablle name the same
+%
+%calculate the initial spatial correlation matrix, and its inverse
+%these are needed several times.
+%AS SOON as phi is updated, this is updated, ensuring that the
+%correlation matrix and its inverse are always up to date, regardless of
+%the order of the sampling below.
+CURRENT_spatial_corr_mat=exp(-CURRENT_PARS(4)*All_DistMat);
+CURRENT_inv_spatial_corr_mat=inv(CURRENT_spatial_corr_mat);
+
+%% To speed up the code 
+%1. Find the UNIQUE missing data patterns, number them.
+%2. Index each year by the missing data pattern.
+%3. For each missing data pattern, calculate the inverse and square root of
+%the conditional posterior covariance of a T_k, and stack them
+%4. Rewrite the T_k_Updater to simply call these matrices. 
+%This reduces the number of matrix inversions for each FULL iteration of
+%the sampler to the number of UNIQUE data patterns, and reduces the number
+%for the pre iterations to 2. 
+
+U_Patterns=unique(HH_SelectMat', 'rows');
+%create an index vector that gices, for each year, the number of the
+%corresponding pattern in U_Patterns
+%Basically - HH_SelectMat can be represented by U_Patterns and this index vector:
+Pattern_by_Year=NaN(N_Times,1);
+for kk=1:1:length(U_Patterns(:,1));
+    dummy=ismember(HH_SelectMat', U_Patterns(kk,:), 'rows');
+    Pattern_by_Year(find(dummy==1))=kk;
+end
+
+%Input the CURRENT_PARS vector and etc into Covariance_Patterns, which returns two 3d
+%arrays: the covariance amtrix for each missing data patter (for
+%the mean calculation) and the squre root of the covariance matrix (to make
+%the draw). 
+[CURRENT_COV_ARRAY, CURRENT_SQRT_COV_ARRAY]=Covariance_Patterns(U_Patterns, CURRENT_PARS, CURRENT_inv_spatial_corr_mat, N_Locs, N_PT);
+
+
+
+%% In an attempt to speed convergence of the variance paramters
+% we will uptate only the true temperature array for a number of
+% iterations, and then add the updating of the other parameters. This is to
+% prevent the model from requiring large variances to fit the observations
+% to the data.
+%timertimer=NaN;
+for samples=1:1:pre_Sampler_Its
+    tic;
+    %% SAMPLE T(0): True temperature the year before the first measurement.
+    Temperature_MCMC_Sampler(:,1)=T_0_Updater_vNM(PRIORS.T_0, Temperature_MCMC_Sampler(:,2), CURRENT_PARS, CURRENT_inv_spatial_corr_mat);
+    
+    %% SAMPLE T(1), . . ., T(last-1). Recall that the T matrix starts at time=0, while the W matrix starts at time=1
+    for Tm=2:1:N_Times
+        Temperature_MCMC_Sampler(:,Tm)=T_k_Updater_vFAST(Temperature_MCMC_Sampler(:, Tm-1), Temperature_MCMC_Sampler(:,Tm+1), Data_ALL(:,Tm-1), CURRENT_PARS, U_Patterns(Pattern_by_Year(Tm-1),:),CURRENT_COV_ARRAY(:,:,Pattern_by_Year(Tm-1)),CURRENT_SQRT_COV_ARRAY(:,:,Pattern_by_Year(Tm-1)),CURRENT_inv_spatial_corr_mat, N_Locs, N_PT);
+    end
+    %This is a SLOW step, because it is actually N_Times-1 steps. . . 
+
+    %% SAMPLE T(last)
+    Temperature_MCMC_Sampler(:,N_Times+1)=T_last_Updater_vNM(Temperature_MCMC_Sampler(:, N_Times), Data_ALL(:,N_Times), HH_SelectMat(:, N_Times), CURRENT_PARS, CURRENT_inv_spatial_corr_mat, N_Locs, N_PT);
+           
+    %% Fill in the next iteration of the BlockAve_MCMC_Samples matrix: 
+	BlockAve_MCMC_Samples(:,samples)=(SpaceWeight*Temperature_MCMC_Sampler)';
+    BlockAve_Central_MCMC_Samples(:, samples)=(SpaceWeight_Central*Temperature_MCMC_Sampler)';
+    %Fill in the next slice of the space-time field draw array
+    Temperature_ARRAY(:,:,samples)=Temperature_MCMC_Sampler;
+    
+    %save the current draw of the space-time temp matrix
+    %save(['TestData\FieldDraws\Temp_MCMC_vNM_Test_PreStep' num2str(samples)],'Temperature_MCMC_Sampler');
+
+    timertimer=toc;
+	disp(['Working on pre-MCMC iteration ', num2str(samples), ' of ', num2str(pre_Sampler_Its), '. Last iteration took ', num2str(timertimer), ' seconds.'])
+
+end
+
+timertimer=NaN;
+%% RUN THE SAMPLER
+for samples=1:1:Sampler_Its
+    
+    tic
+    %% SAMPLE T(0): True temperature the year before the first measurement.
+    Temperature_MCMC_Sampler(:,1)=T_0_Updater_vNM(PRIORS.T_0, Temperature_MCMC_Sampler(:,2), CURRENT_PARS, CURRENT_inv_spatial_corr_mat);
+    
+    %% SAMPLE T(1), . . ., T(last-1). Recall that the T matrix starts at time=0, while the W matrix starts at time=1
+    for Tm=2:1:N_Times
+        Temperature_MCMC_Sampler(:,Tm)=T_k_Updater_vFAST(Temperature_MCMC_Sampler(:, Tm-1), Temperature_MCMC_Sampler(:,Tm+1), Data_ALL(:,Tm-1), CURRENT_PARS, U_Patterns(Pattern_by_Year(Tm-1),:),CURRENT_COV_ARRAY(:,:,Pattern_by_Year(Tm-1)),CURRENT_SQRT_COV_ARRAY(:,:,Pattern_by_Year(Tm-1)),CURRENT_inv_spatial_corr_mat, N_Locs, N_PT);
+    end
+    %This is a SLOW step, because it is actually N_Times-1 steps. . . 
+
+    %% SAMPLE T(last)
+    Temperature_MCMC_Sampler(:,N_Times+1)=T_last_Updater_vNM(Temperature_MCMC_Sampler(:, N_Times), Data_ALL(:,N_Times), HH_SelectMat(:, N_Times), CURRENT_PARS, CURRENT_inv_spatial_corr_mat, N_Locs, N_PT);
+    
+    %% SAMPLE AR(1) coefficient    
+    New_Alpha=Alpha_Updater_vNM(PRIORS.alpha, Temperature_MCMC_Sampler, CURRENT_PARS, CURRENT_inv_spatial_corr_mat);
+    CURRENT_PARS(1)=New_Alpha;
+    clear New_Alpha
+
+    %% SAMPLE AR(1) mean constant parameter, mu:
+    New_mu=Mu_Updater_vNM(PRIORS.mu, Temperature_MCMC_Sampler, CURRENT_PARS, CURRENT_inv_spatial_corr_mat);
+    CURRENT_PARS(2)=New_mu;
+    clear New_AR_mean_mu
+    
+    %% SAMPLE Partial Sill of the spatial covaraince martrix
+    New_sigma2=Sigma2_Updater_vNM(PRIORS.sigma2, Temperature_MCMC_Sampler, CURRENT_PARS, CURRENT_inv_spatial_corr_mat);
+    %ARTIFICIALLY put a cieling at, say, 5.
+    %CHECK a posterior that, one the algorithm has converged, ALL draws are
+    %lower than this. 
+    CURRENT_PARS(3)=min(5, New_sigma2);
+    clear New_sigma2
+	
+    %% SAMPLE Range Parameter of the spatial covaraince martrix (METROPOLIS)
+    % This also updates the spatial corelation matrix and its inverse
+    [New_phi, New_scm, New_iscm]=Phi_Updater_vNM(PRIORS.phi, Temperature_MCMC_Sampler, CURRENT_PARS, CURRENT_spatial_corr_mat, CURRENT_inv_spatial_corr_mat, All_DistMat, MHpars.log_phi);
+    CURRENT_PARS(4)=New_phi;
+    CURRENT_spatial_corr_mat=New_scm;
+    CURRENT_inv_spatial_corr_mat=New_iscm;
+    clear New_phi New_iscm New_scm
+    
+    %% SAMPLE Instrumental measurement error
+    New_tau2_I=tau2_I_Updater_vNM(PRIORS.tau2_I, Temperature_MCMC_Sampler, Data_ALL, N_Locs, M_InstProx(1));
+    %ARTIFICIALLY put a cieling at, say, 5.
+    %CHECK a posterior that, one the algorithm has converged, ALL draws are
+    %lower than this. 
+    CURRENT_PARS(5)=min(5, New_tau2_I);
+    clear New_tau2_I
+    
+    
+    
+    %% NEED TO LOOP THE SAMPLING OF THESE THREE PARAMETERS
+    for Pnum=1:1:N_PT
+        %curtail the CURRENT_PARS vector to only include the pars for one
+        %proxy type at a time:
+        CURRENT_PARS_Brief=[CURRENT_PARS(1:1:5); CURRENT_PARS([6:1:8]+(Pnum-1)*3)];
+        %Similarily exract each type of proxy data:
+        Prox_Data_Brief=eval(['BARCAST_INPUT.Prox_Data', num2str(Pnum)]);
+
+        %% SAMPLE Proxy measurement error
+        New_tau2_P=tau2_P_Updater_vNM(eval(['PRIORS.tau2_P_', num2str(Pnum)]), Temperature_MCMC_Sampler, Prox_Data_Brief, CURRENT_PARS_Brief, M_InstProx(Pnum+1));
+        %ARTIFICIALLY put a cieling at, say, 50.
+        %CHECK a posterior that, one the algorithm has converged, ALL draws are
+        %lower than this.
+        CURRENT_PARS_Brief(6)=min(10, New_tau2_P);
+        clear New_tau2_P
+
+        %% SAMPLE Scaling constant in the proxy observation equation
+        New_beta_1=Beta_1_Updater_vNM(eval(['PRIORS.Beta_1_', num2str(Pnum)]), Temperature_MCMC_Sampler, Prox_Data_Brief, CURRENT_PARS_Brief);
+        CURRENT_PARS_Brief(7)=New_beta_1;
+        clear New_beta_1
+
+        %% SAMPLE Additive constant in the proxy observation equation
+        New_Beta_0=Beta_0_Updater_vNM(eval(['PRIORS.Beta_0_', num2str(Pnum)]), Temperature_MCMC_Sampler, Prox_Data_Brief, CURRENT_PARS_Brief, M_InstProx(Pnum+1));
+        CURRENT_PARS_Brief(8)=New_Beta_0;
+        clear New_Beta_0
+
+        CURRENT_PARS([6:1:8]+(Pnum-1)*3)=CURRENT_PARS_Brief(6:1:8);
+
+    end
+    
+    %% UPDATE the covariance arrays used in the T_k_Updater step
+    [CURRENT_COV_ARRAY, CURRENT_SQRT_COV_ARRAY]=Covariance_Patterns(U_Patterns, CURRENT_PARS, CURRENT_inv_spatial_corr_mat, N_Locs, N_PT);
+
+    
+    %% UPDATE THE VARIOUS MATRICES, SAVE CURRENT TEMPERTAURE MATRIX
+    %update the Paramters_MCMC_Samples matrix:
+    Paramters_MCMC_Samples(:, samples)=CURRENT_PARS;
+    %CURRENT_PARS is not cleared: it is, after all, the current parameter
+    %vector. 
+    
+    %Fill in the next iteration of the BlockAve_MCMC_Samples matrix:
+    BlockAve_MCMC_Samples(:, pre_Sampler_Its+samples)=(SpaceWeight*Temperature_MCMC_Sampler)';
+    BlockAve_Central_MCMC_Samples(:, pre_Sampler_Its+samples)=(SpaceWeight_Central*Temperature_MCMC_Sampler)';
+
+    %add the new draw of the space-time temp matrix
+    Temperature_ARRAY(:,:,pre_Sampler_Its+samples)=Temperature_MCMC_Sampler;
+    %save the current draw of the space-time temp matrix
+    %save(['TestData\FieldDraws\Temp_MCMC_vNM_Test_Step' num2str(samples)],'Temperature_MCMC_Sampler');    
+    
+    %SAVE the matrix of parameter vector draws and the matrix of block
+    %average vectors. (This way, even if the code is stopped prematurely,
+    %we get something)
+    %cd TestData
+    %cd FieldDraws
+    %save TestData\FieldDraws\Paramters_MCMC_Samples_vNM Paramters_MCMC_Samples 
+    %save TestData\FieldDraws\Temperature_ARRAY_vNM Temperature_ARRAY
+    %save TestData\FieldDraws\BlockAve_MCMC_Samples_vNM BlockAve_MCMC_Samples
+    %save TestData\FieldDraws\BlockAve_Central_MCMC_Samples_vNM BlockAve_Central_MCMC_Samples
+    %and back
+    %cd ..
+    %cd ..
+    timertimer=toc;
+    disp(['Finished MCMC iteration ', num2str(samples), ' of ', num2str(Sampler_Its), '. Last iteration took ', num2str(timertimer), ' seconds.'])
+end
+
+%% SAVE the matrix of parameter vector draws and the matrix of block
+%average vectors. 
+cd TestData
+cd FieldDraws
+    save Paramters_MCMC_Samples_vNM Paramters_MCMC_Samples 
+    save Temperature_ARRAY_vNM Temperature_ARRAY
+    save BlockAve_MCMC_Samples_vNM BlockAve_MCMC_Samples
+    save BlockAve_Central_MCMC_Samples_vNM BlockAve_Central_MCMC_Samples
+%and back
+cd ..
+cd ..
diff --git a/tika-parsers/src/test/resources/test-documents/testMATLAB_wtsgaus.m b/tika-parser-modules/tika-parser-math-module/src/test/resources/test-documents/testMATLAB_wtsgaus.m
similarity index 96%
rename from tika-parsers/src/test/resources/test-documents/testMATLAB_wtsgaus.m
rename to tika-parser-modules/tika-parser-math-module/src/test/resources/test-documents/testMATLAB_wtsgaus.m
index f7700f7..f8943f2 100644
--- a/tika-parsers/src/test/resources/test-documents/testMATLAB_wtsgaus.m
+++ b/tika-parser-modules/tika-parser-math-module/src/test/resources/test-documents/testMATLAB_wtsgaus.m
@@ -1,52 +1,52 @@
-function b=wtsgaus(p,N)
-% wtsgaus: weights for gaussian filter with specified frequency response 
-% b=wtsgaus(p,N);
-% Last revised 2003-3-14
-%
-% Weights for gaussian filter with specified frequency response 
-% Specify te wavelength for the 0.50 respons, and the length of series, get
-% the coefficients, or weights
-%
-%*** INPUT
-%
-% p (1 x 1)i  period (years) at which filter is to have amp frequency response of 0.5
-% N (1 x 1)i  length of the time series (number of observations)
-%
-%*** OUTPUT
-%
-% b (1 x n)r  computed weights
-% 
-%
-%*** REFERENCES
-% 
-% WMO 1966, p. 47
-%
-%*** UW FUNCTIONS CALLED -- NONE
-%*** TOOLBOXES NEEDED -- stats
-%
-%*** NOTES
-%
-% Amplitude of frequency response drops to 0.50 at a wavelength of 
-% about 6 standard deviations of the appropriate guassian curve
-%
-% N is used as an input to restict the possible filter size (number of weights) to no larger than the sample length
-
-if p>N; 
-    error(['Desired 50% period ' num2str(p) ' is greater than  the sample length ' int2str(N)]);
-end;
-
-
-% Check that period of 50% response at least 5 yr
-if p<5;
-   error('Period of 50% response must be at least 5 yr');
-end;
-
-sigma=p/6;  % Gaussian curve should have this standard deviation
-
-x=-N:N;
-b=normpdf(x/sigma,0,1);
-bmax=max(b);
-bkeep = b>=0.05*bmax; % keep weights at least 5% as big as central weight
-b=b(bkeep);
-b=b/sum(b); % force weights to sum to one
-
+function b=wtsgaus(p,N)
+% wtsgaus: weights for gaussian filter with specified frequency response 
+% b=wtsgaus(p,N);
+% Last revised 2003-3-14
+%
+% Weights for gaussian filter with specified frequency response 
+% Specify te wavelength for the 0.50 respons, and the length of series, get
+% the coefficients, or weights
+%
+%*** INPUT
+%
+% p (1 x 1)i  period (years) at which filter is to have amp frequency response of 0.5
+% N (1 x 1)i  length of the time series (number of observations)
+%
+%*** OUTPUT
+%
+% b (1 x n)r  computed weights
+% 
+%
+%*** REFERENCES
+% 
+% WMO 1966, p. 47
+%
+%*** UW FUNCTIONS CALLED -- NONE
+%*** TOOLBOXES NEEDED -- stats
+%
+%*** NOTES
+%
+% Amplitude of frequency response drops to 0.50 at a wavelength of 
+% about 6 standard deviations of the appropriate guassian curve
+%
+% N is used as an input to restict the possible filter size (number of weights) to no larger than the sample length
+
+if p>N; 
+    error(['Desired 50% period ' num2str(p) ' is greater than  the sample length ' int2str(N)]);
+end;
+
+
+% Check that period of 50% response at least 5 yr
+if p<5;
+   error('Period of 50% response must be at least 5 yr');
+end;
+
+sigma=p/6;  % Gaussian curve should have this standard deviation
+
+x=-N:N;
+b=normpdf(x/sigma,0,1);
+bmax=max(b);
+bkeep = b>=0.05*bmax; % keep weights at least 5% as big as central weight
+b=b(bkeep);
+b=b/sum(b); % force weights to sum to one
+
diff --git a/tika-parsers/src/test/resources/test-documents/testSAS.sas b/tika-parser-modules/tika-parser-math-module/src/test/resources/test-documents/testSAS.sas
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testSAS.sas
rename to tika-parser-modules/tika-parser-math-module/src/test/resources/test-documents/testSAS.sas
diff --git a/tika-parsers/src/test/resources/test-documents/testSAS.sas7bdat b/tika-parser-modules/tika-parser-math-module/src/test/resources/test-documents/testSAS.sas7bdat
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testSAS.sas7bdat
rename to tika-parser-modules/tika-parser-math-module/src/test/resources/test-documents/testSAS.sas7bdat
diff --git a/tika-parsers/src/test/resources/test-documents/testSAS.sd2 b/tika-parser-modules/tika-parser-math-module/src/test/resources/test-documents/testSAS.sd2
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testSAS.sd2
rename to tika-parser-modules/tika-parser-math-module/src/test/resources/test-documents/testSAS.sd2
diff --git a/tika-parsers/src/test/resources/test-documents/testSAS.xpt b/tika-parser-modules/tika-parser-math-module/src/test/resources/test-documents/testSAS.xpt
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/testSAS.xpt
rename to tika-parser-modules/tika-parser-math-module/src/test/resources/test-documents/testSAS.xpt
diff --git a/tika-parsers/src/test/resources/test-documents/testSAS2.sas b/tika-parser-modules/tika-parser-math-module/src/test/resources/test-documents/testSAS2.sas
similarity index 95%
rename from tika-parsers/src/test/resources/test-documents/testSAS2.sas
rename to tika-parser-modules/tika-parser-math-module/src/test/resources/test-documents/testSAS2.sas
index df52b1a..45297c1 100644
--- a/tika-parsers/src/test/resources/test-documents/testSAS2.sas
+++ b/tika-parser-modules/tika-parser-math-module/src/test/resources/test-documents/testSAS2.sas
@@ -1,70 +1,70 @@
-data testing;
-begin=0;
-end=10;
-msg="This is row %x of %y";
-
-do i = begin to end by 1;
-drop msg begin end i;
-recnum=i;
-square=i*i;
-desc=tranwrd(tranwrd(msg,"%x",i),"%y",end);
-format pctdone percent8.0;
-format pctincr percent7.1;
-pctdone=divide(i,end);
-pctincr=divide(i-1,i);
-/* Days / Seconds since Epoc / Seconds since midnight */
-format date ddmmyyd10.;
-format datetime datetime.;
-format time time.;
-date=i**4;
-datetime=10**i;
-time=3**i;
-output;
-end;
-label recnum="Record Number"
-      square="Square of the Record Number"
-	  desc="Description of the Row"
-	  pctdone="Percent Done"
-	  pctincr="Percent Increment";
-run;
-
-%let outpath = /home/tika/testing/sas;
-libname out          "&outpath";
-libname outxpt XPORT "&outpath./testing.xpt";
-libname outv6 v6     "&outpath";
-libname outxml xmlv2 "&outpath";
-
-data out.testing;
-set testing;
-run;
-data outv6.testv6;
-set testing;
-run;
-data outxml.testxml;
-set testing;
-run;
-proc copy in=out out=outxpt;
-select testing;
-run;
-
-
-proc print data=testing;
-run;
-
-proc export data=testing label
-  outfile="&outpath./testing.csv"
-  dbms=CSV REPLACE;
-putnames=yes;
-run;
-
-/* Due to SAS Limitations, you will need to manually */
-/* style the % and Date/Datetime columns in Excel */
-/* You will also need to save-as XLSB to generate that */
-proc export data=testing label 
-  outfile="&outpath./testing.xls"
-  dbms=XLS;
-run;
-proc export data=testing label
-  outfile="&outpath./testing.xlsx"
-  dbms=XLSX;
-run;
+data testing;
+begin=0;
+end=10;
+msg="This is row %x of %y";
+
+do i = begin to end by 1;
+drop msg begin end i;
+recnum=i;
+square=i*i;
+desc=tranwrd(tranwrd(msg,"%x",i),"%y",end);
+format pctdone percent8.0;
+format pctincr percent7.1;
+pctdone=divide(i,end);
+pctincr=divide(i-1,i);
+/* Days / Seconds since Epoc / Seconds since midnight */
+format date ddmmyyd10.;
+format datetime datetime.;
+format time time.;
+date=i**4;
+datetime=10**i;
+time=3**i;
+output;
+end;
+label recnum="Record Number"
+      square="Square of the Record Number"
+	  desc="Description of the Row"
+	  pctdone="Percent Done"
+	  pctincr="Percent Increment";
+run;
+
+%let outpath = /home/tika/testing/sas;
+libname out          "&outpath";
+libname outxpt XPORT "&outpath./testing.xpt";
+libname outv6 v6     "&outpath";
+libname outxml xmlv2 "&outpath";
+
+data out.testing;
+set testing;
+run;
+data outv6.testv6;
+set testing;
+run;
+data outxml.testxml;
+set testing;
+run;
+proc copy in=out out=outxpt;
+select testing;
+run;
+
+
+proc print data=testing;
+run;
+
+proc export data=testing label
+  outfile="&outpath./testing.csv"
+  dbms=CSV REPLACE;
+putnames=yes;
+run;
+
+/* Due to SAS Limitations, you will need to manually */
+/* style the % and Date/Datetime columns in Excel */
+/* You will also need to save-as XLSB to generate that */
+proc export data=testing label 
+  outfile="&outpath./testing.xls"
+  dbms=XLS;
+run;
+proc export data=testing label
+  outfile="&outpath./testing.xlsx"
+  dbms=XLSX;
+run;
diff --git a/tika-parsers/src/test/resources/test-documents/test_mat_text.mat b/tika-parser-modules/tika-parser-math-module/src/test/resources/test-documents/test_mat_text.mat
similarity index 100%
rename from tika-parsers/src/test/resources/test-documents/test_mat_text.mat
rename to tika-parser-modules/tika-parser-math-module/src/test/resources/test-documents/test_mat_text.mat
diff --git a/tika-parser-modules/tika-parser-microsoft-module/pom.xml b/tika-parser-modules/tika-parser-microsoft-module/pom.xml
index efe5a45..5c3a9a7 100644
--- a/tika-parser-modules/tika-parser-microsoft-module/pom.xml
+++ b/tika-parser-modules/tika-parser-microsoft-module/pom.xml
@@ -37,6 +37,11 @@
             <version>${project.version}</version>
         </dependency>
         <dependency>
+            <groupId>com.pff</groupId>
+            <artifactId>java-libpst</artifactId>
+            <version>0.9.3</version>
+        </dependency>
+        <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>tika-parser-zip-commons</artifactId>
             <version>${project.version}</version>
diff --git a/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/POIFSContainerDetector.java b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/POIFSContainerDetector.java
index 151d683..d942238 100644
--- a/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/POIFSContainerDetector.java
+++ b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/POIFSContainerDetector.java
@@ -137,16 +137,8 @@ public class POIFSContainerDetector implements Detector {
      * SolidWorks CAD file
      */
     public static final MediaType SLDWORKS = application("sldworks");
-    /**
-     * Hangul Word Processor (Korean)
-     */
-    public static final MediaType HWP = application("x-hwp-v5");
 
     /**
-     * Base QuattroPro mime
-     */
-    public static final MediaType QUATTROPRO = application("x-quattro-pro");
-    /**
      * Serial version UID
      */
     private static final long serialVersionUID = -3028021741663605293L;
@@ -252,9 +244,6 @@ public class POIFSContainerDetector implements Detector {
             } else {
                 return processCompObjFormatType(root);
             }
-        } else if (names.contains("\u0005HwpSummaryInformation")) {
-            // Hangul Word Processor v5+ (previous aren't OLE2-based)
-            return HWP;
         } else if (names.contains("WksSSWorkBook")) {
             // This check has to be before names.contains("Workbook")
             // Works 7.0 spreadsheet files contain both
@@ -322,14 +311,6 @@ public class POIFSContainerDetector implements Detector {
                     return MPP;
                 }
             }
-        } else if (names.contains("PerfectOffice_MAIN")) {
-            if (names.contains("SlideShow")) {
-                return MediaType.application("x-corelpresentations"); // .shw
-            } else if (names.contains("PerfectOffice_OBJECTS")) {
-                return new MediaType(QUATTROPRO, "version", "7-8"); // .wb?
-            }
-        } else if (names.contains("NativeContent_MAIN")) {
-            return new MediaType(QUATTROPRO, "version", "9"); // .qpw
         } else if (names.contains("Equation Native")) {
             return MS_EQUATION;
         } else {
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/chm/accessor/ChmAccessor.java b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmAccessor.java
similarity index 96%
rename from tika-parsers/src/main/java/org/apache/tika/parser/chm/accessor/ChmAccessor.java
rename to tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmAccessor.java
index e8bf1cc..75b6d07 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/chm/accessor/ChmAccessor.java
+++ b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmAccessor.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.tika.parser.chm.accessor;
+package org.apache.tika.parser.microsoft.chm;
 
 import java.io.Serializable;
 
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/chm/assertion/ChmAssert.java b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmAssert.java
similarity index 92%
rename from tika-parsers/src/main/java/org/apache/tika/parser/chm/assertion/ChmAssert.java
rename to tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmAssert.java
index 0c736e8..999eefb 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/chm/assertion/ChmAssert.java
+++ b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmAssert.java
@@ -14,16 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.tika.parser.chm.assertion;
+package org.apache.tika.parser.microsoft.chm;
 
 import java.io.IOException;
 import java.io.InputStream;
 
 import org.apache.tika.exception.TikaException;
-import org.apache.tika.parser.chm.accessor.ChmAccessor;
-import org.apache.tika.parser.chm.accessor.ChmLzxcResetTable;
-import org.apache.tika.parser.chm.core.ChmCommons;
-import org.apache.tika.parser.chm.exception.ChmParsingException;
 
 /**
  * Contains chm extractor assertions
@@ -45,8 +41,8 @@ public class ChmAssert {
      * @throws TikaException 
      */
     public static final void assertChmBlockSegment(byte[] data,
-            ChmLzxcResetTable resetTable, int blockNumber, int lzxcBlockOffset,
-            int lzxcBlockLength) throws TikaException {
+                                                   ChmLzxcResetTable resetTable, int blockNumber, int lzxcBlockOffset,
+                                                   int lzxcBlockLength) throws TikaException {
         if ((data == null))
             throw new TikaException("data[] is null");
 
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/chm/lzx/ChmBlockInfo.java b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmBlockInfo.java
similarity index 95%
rename from tika-parsers/src/main/java/org/apache/tika/parser/chm/lzx/ChmBlockInfo.java
rename to tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmBlockInfo.java
index 15b1c8d..065e5cc 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/chm/lzx/ChmBlockInfo.java
+++ b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmBlockInfo.java
@@ -14,12 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.tika.parser.chm.lzx;
-
-import org.apache.tika.exception.TikaException;
-import org.apache.tika.parser.chm.accessor.ChmLzxcControlData;
-import org.apache.tika.parser.chm.accessor.DirectoryListingEntry;
-import org.apache.tika.parser.chm.exception.ChmParsingException;
+package org.apache.tika.parser.microsoft.chm;
 
 /**
  * A container that contains chm block information such as: i. initial block is
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/chm/core/ChmCommons.java b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmCommons.java
similarity index 96%
rename from tika-parsers/src/main/java/org/apache/tika/parser/chm/core/ChmCommons.java
rename to tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmCommons.java
index 0bbdbe1..8c061f0 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/chm/core/ChmCommons.java
+++ b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmCommons.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.tika.parser.chm.core;
+package org.apache.tika.parser.microsoft.chm;
 
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
@@ -22,11 +22,6 @@ import java.io.IOException;
 import java.util.List;
 
 import org.apache.tika.exception.TikaException;
-import org.apache.tika.parser.chm.accessor.ChmLzxcResetTable;
-import org.apache.tika.parser.chm.accessor.DirectoryListingEntry;
-import org.apache.tika.parser.chm.assertion.ChmAssert;
-import org.apache.tika.parser.chm.exception.ChmParsingException;
-import org.apache.tika.parser.microsoft.ooxml.xwpf.XWPFEventBasedWordExtractor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/chm/core/ChmConstants.java b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmConstants.java
similarity index 99%
rename from tika-parsers/src/main/java/org/apache/tika/parser/chm/core/ChmConstants.java
rename to tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmConstants.java
index e423871..952444e 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/chm/core/ChmConstants.java
+++ b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmConstants.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.tika.parser.chm.core;
+package org.apache.tika.parser.microsoft.chm;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/chm/accessor/ChmDirectoryListingSet.java b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmDirectoryListingSet.java
similarity index 98%
rename from tika-parsers/src/main/java/org/apache/tika/parser/chm/accessor/ChmDirectoryListingSet.java
rename to tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmDirectoryListingSet.java
index 5b3d3f6..4ff5c96 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/chm/accessor/ChmDirectoryListingSet.java
+++ b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmDirectoryListingSet.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.tika.parser.chm.accessor;
+package org.apache.tika.parser.microsoft.chm;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 
@@ -25,9 +25,6 @@ import java.util.List;
 import java.util.Set;
 
 import org.apache.tika.exception.TikaException;
-import org.apache.tika.parser.chm.core.ChmCommons;
-import org.apache.tika.parser.chm.core.ChmConstants;
-import org.apache.tika.parser.chm.exception.ChmParsingException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/chm/core/ChmExtractor.java b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmExtractor.java
similarity index 95%
rename from tika-parsers/src/main/java/org/apache/tika/parser/chm/core/ChmExtractor.java
rename to tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmExtractor.java
index 3eefa21..8ba6686 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/chm/core/ChmExtractor.java
+++ b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmExtractor.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.tika.parser.chm.core;
+package org.apache.tika.parser.microsoft.chm;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 
@@ -26,17 +26,7 @@ import java.util.List;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.tika.exception.TikaException;
-import org.apache.tika.parser.chm.accessor.ChmDirectoryListingSet;
-import org.apache.tika.parser.chm.accessor.ChmItsfHeader;
-import org.apache.tika.parser.chm.accessor.ChmItspHeader;
-import org.apache.tika.parser.chm.accessor.ChmLzxcControlData;
-import org.apache.tika.parser.chm.accessor.ChmLzxcResetTable;
-import org.apache.tika.parser.chm.accessor.DirectoryListingEntry;
-import org.apache.tika.parser.chm.assertion.ChmAssert;
-import org.apache.tika.parser.chm.core.ChmCommons.EntryType;
-import org.apache.tika.parser.chm.lzx.ChmBlockInfo;
-import org.apache.tika.parser.chm.lzx.ChmLzxBlock;
-import org.apache.tika.parser.microsoft.ooxml.xwpf.XWPFEventBasedWordExtractor;
+import org.apache.tika.parser.microsoft.chm.ChmCommons.EntryType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/chm/accessor/ChmItsfHeader.java b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmItsfHeader.java
similarity index 98%
rename from tika-parsers/src/main/java/org/apache/tika/parser/chm/accessor/ChmItsfHeader.java
rename to tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmItsfHeader.java
index e4f9ee5..905a1d5 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/chm/accessor/ChmItsfHeader.java
+++ b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmItsfHeader.java
@@ -14,14 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.tika.parser.chm.accessor;
+package org.apache.tika.parser.microsoft.chm;
 
 import java.math.BigInteger;
 
 import org.apache.tika.exception.TikaException;
-import org.apache.tika.parser.chm.assertion.ChmAssert;
-import org.apache.tika.parser.chm.core.ChmConstants;
-import org.apache.tika.parser.chm.exception.ChmParsingException;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/chm/accessor/ChmItspHeader.java b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmItspHeader.java
similarity index 98%
rename from tika-parsers/src/main/java/org/apache/tika/parser/chm/accessor/ChmItspHeader.java
rename to tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmItspHeader.java
index 28e2ff3..dcd46f2 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/chm/accessor/ChmItspHeader.java
+++ b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmItspHeader.java
@@ -14,13 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.tika.parser.chm.accessor;
+package org.apache.tika.parser.microsoft.chm;
 
 import org.apache.tika.exception.TikaException;
-import org.apache.tika.parser.chm.assertion.ChmAssert;
-import org.apache.tika.parser.chm.core.ChmCommons;
-import org.apache.tika.parser.chm.core.ChmConstants;
-import org.apache.tika.parser.chm.exception.ChmParsingException;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/chm/lzx/ChmLzxBlock.java b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmLzxBlock.java
similarity index 99%
rename from tika-parsers/src/main/java/org/apache/tika/parser/chm/lzx/ChmLzxBlock.java
rename to tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmLzxBlock.java
index b5ea37a..f53e22a 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/chm/lzx/ChmLzxBlock.java
+++ b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmLzxBlock.java
@@ -14,16 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.tika.parser.chm.lzx;
+package org.apache.tika.parser.microsoft.chm;
 
 import java.math.BigInteger;
 
 import org.apache.tika.exception.TikaException;
-import org.apache.tika.parser.chm.core.ChmCommons;
-import org.apache.tika.parser.chm.core.ChmCommons.IntelState;
-import org.apache.tika.parser.chm.core.ChmCommons.LzxState;
-import org.apache.tika.parser.chm.core.ChmConstants;
-import org.apache.tika.parser.chm.exception.ChmParsingException;
+import org.apache.tika.parser.microsoft.chm.ChmCommons.IntelState;
+import org.apache.tika.parser.microsoft.chm.ChmCommons.LzxState;
 
 /**
  * Decompresses a chm block. Depending on chm block type chooses most relevant
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/chm/lzx/ChmLzxState.java b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmLzxState.java
similarity index 97%
rename from tika-parsers/src/main/java/org/apache/tika/parser/chm/lzx/ChmLzxState.java
rename to tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmLzxState.java
index 51dc5a5..30d122e 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/chm/lzx/ChmLzxState.java
+++ b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmLzxState.java
@@ -14,15 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.tika.parser.chm.lzx;
+package org.apache.tika.parser.microsoft.chm;
 
 import java.util.concurrent.CancellationException;
 import org.apache.tika.exception.TikaException;
-import org.apache.tika.parser.chm.core.ChmCommons;
-import org.apache.tika.parser.chm.core.ChmCommons.IntelState;
-import org.apache.tika.parser.chm.core.ChmCommons.LzxState;
-import org.apache.tika.parser.chm.core.ChmConstants;
-import org.apache.tika.parser.chm.exception.ChmParsingException;
+import org.apache.tika.parser.microsoft.chm.ChmCommons.IntelState;
+import org.apache.tika.parser.microsoft.chm.ChmCommons.LzxState;
 
 public class ChmLzxState implements Cloneable {
     /* Class' members */
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/chm/accessor/ChmLzxcControlData.java b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmLzxcControlData.java
similarity index 97%
rename from tika-parsers/src/main/java/org/apache/tika/parser/chm/accessor/ChmLzxcControlData.java
rename to tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmLzxcControlData.java
index 1bd0c4f..a2796d2 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/chm/accessor/ChmLzxcControlData.java
+++ b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmLzxcControlData.java
@@ -14,12 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.tika.parser.chm.accessor;
+package org.apache.tika.parser.microsoft.chm;
 
 import org.apache.tika.exception.TikaException;
-import org.apache.tika.parser.chm.assertion.ChmAssert;
-import org.apache.tika.parser.chm.core.ChmConstants;
-import org.apache.tika.parser.chm.exception.ChmParsingException;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/chm/accessor/ChmLzxcResetTable.java b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmLzxcResetTable.java
similarity index 97%
rename from tika-parsers/src/main/java/org/apache/tika/parser/chm/accessor/ChmLzxcResetTable.java
rename to tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmLzxcResetTable.java
index be57c3d..3b0d771 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/chm/accessor/ChmLzxcResetTable.java
+++ b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmLzxcResetTable.java
@@ -14,15 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.tika.parser.chm.accessor;
+package org.apache.tika.parser.microsoft.chm;
 
 import java.math.BigInteger;
 import java.util.Arrays;
 
 import org.apache.tika.exception.TikaException;
-import org.apache.tika.parser.chm.assertion.ChmAssert;
-import org.apache.tika.parser.chm.core.ChmConstants;
-import org.apache.tika.parser.chm.exception.ChmParsingException;
 
 /**
  * LZXC reset table For ensuring a decompression. Reads the block named
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/chm/ChmParser.java b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmParser.java
similarity index 96%
rename from tika-parsers/src/main/java/org/apache/tika/parser/chm/ChmParser.java
rename to tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmParser.java
index d9df348..2837863 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/chm/ChmParser.java
+++ b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmParser.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.tika.parser.chm;
+package org.apache.tika.parser.microsoft.chm;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
@@ -31,8 +31,6 @@ import org.apache.tika.mime.MediaType;
 import org.apache.tika.parser.AbstractParser;
 import org.apache.tika.parser.ParseContext;
 import org.apache.tika.parser.Parser;
-import org.apache.tika.parser.chm.accessor.DirectoryListingEntry;
-import org.apache.tika.parser.chm.core.ChmExtractor;
 import org.apache.tika.parser.html.HtmlParser;
 import org.apache.tika.sax.BodyContentHandler;
 import org.apache.tika.sax.EmbeddedContentHandler;
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/chm/exception/ChmParsingException.java b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmParsingException.java
similarity index 95%
rename from tika-parsers/src/main/java/org/apache/tika/parser/chm/exception/ChmParsingException.java
rename to tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmParsingException.java
index 46c522b..bb6ac71 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/chm/exception/ChmParsingException.java
+++ b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmParsingException.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.tika.parser.chm.exception;
+package org.apache.tika.parser.microsoft.chm;
 
 import org.apache.tika.exception.TikaException;
 
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/chm/accessor/ChmPmgiHeader.java b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmPmgiHeader.java
similarity index 95%
rename from tika-parsers/src/main/java/org/apache/tika/parser/chm/accessor/ChmPmgiHeader.java
rename to tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmPmgiHeader.java
index a98ae67..b5d647e 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/chm/accessor/ChmPmgiHeader.java
+++ b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmPmgiHeader.java
@@ -14,15 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.tika.parser.chm.accessor;
+package org.apache.tika.parser.microsoft.chm;
 
 import java.util.Arrays;
 
 import org.apache.tika.exception.TikaException;
-import org.apache.tika.parser.chm.assertion.ChmAssert;
-import org.apache.tika.parser.chm.core.ChmCommons;
-import org.apache.tika.parser.chm.core.ChmConstants;
-import org.apache.tika.parser.chm.exception.ChmParsingException;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/chm/accessor/ChmPmglHeader.java b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmPmglHeader.java
similarity index 97%
rename from tika-parsers/src/main/java/org/apache/tika/parser/chm/accessor/ChmPmglHeader.java
rename to tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmPmglHeader.java
index 0bfb95a..18d0df9 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/chm/accessor/ChmPmglHeader.java
+++ b/tika-parser-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmPmglHeader.java
... 5492 lines suppressed ...