diff --git a/BUILD.gn b/BUILD.gn
index 2f51c21..d0de412 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -201,7 +201,7 @@
     "core/fdrm/crypto/fx_crypt.cpp",
     "core/fdrm/crypto/fx_crypt_aes.cpp",
     "core/fdrm/crypto/fx_crypt_sha.cpp",
-    "core/include/fdrm/fx_crypt.h",
+    "core/fdrm/crypto/include/fx_crypt.h",
   ]
   configs += [ ":pdfium_config" ]
 }
@@ -390,11 +390,13 @@
 static_library("fpdftext") {
   sources = [
     "core/fpdftext/fpdf_text_int.cpp",
+    "core/fpdftext/include/ipdf_linkextract.h",
+    "core/fpdftext/include/ipdf_textpage.h",
+    "core/fpdftext/include/ipdf_textpagefind.h",
     "core/fpdftext/text_int.h",
     "core/fpdftext/unicodenormalization.cpp",
     "core/fpdftext/unicodenormalizationdata.cpp",
     "core/fpdftext/unicodenormalizationdata.h",
-    "core/include/fpdftext/fpdf_text.h",
   ]
   configs += [ ":pdfium_config" ]
 }
diff --git a/core/fdrm/crypto/fx_crypt.cpp b/core/fdrm/crypto/fx_crypt.cpp
index c1016cd..d5cbdb5 100644
--- a/core/fdrm/crypto/fx_crypt.cpp
+++ b/core/fdrm/crypto/fx_crypt.cpp
@@ -4,7 +4,7 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#include "core/include/fdrm/fx_crypt.h"
+#include "core/fdrm/crypto/include/fx_crypt.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/core/fdrm/crypto/fx_crypt_aes.cpp b/core/fdrm/crypto/fx_crypt_aes.cpp
index d27783f..b56d8fe 100644
--- a/core/fdrm/crypto/fx_crypt_aes.cpp
+++ b/core/fdrm/crypto/fx_crypt_aes.cpp
@@ -4,7 +4,7 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#include "core/include/fdrm/fx_crypt.h"
+#include "core/fdrm/crypto/include/fx_crypt.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/core/fdrm/crypto/fx_crypt_sha.cpp b/core/fdrm/crypto/fx_crypt_sha.cpp
index c7d1710..5f15589 100644
--- a/core/fdrm/crypto/fx_crypt_sha.cpp
+++ b/core/fdrm/crypto/fx_crypt_sha.cpp
@@ -4,7 +4,7 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#include "core/include/fdrm/fx_crypt.h"
+#include "core/fdrm/crypto/include/fx_crypt.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/core/include/fdrm/fx_crypt.h b/core/fdrm/crypto/include/fx_crypt.h
similarity index 95%
rename from core/include/fdrm/fx_crypt.h
rename to core/fdrm/crypto/include/fx_crypt.h
index 259dc85..fdba0e7 100644
--- a/core/include/fdrm/fx_crypt.h
+++ b/core/fdrm/crypto/include/fx_crypt.h
@@ -4,8 +4,8 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#ifndef CORE_INCLUDE_FDRM_FX_CRYPT_H_
-#define CORE_INCLUDE_FDRM_FX_CRYPT_H_
+#ifndef CORE_FDRM_CRYPTO_INCLUDE_FX_CRYPT_H_
+#define CORE_FDRM_CRYPTO_INCLUDE_FX_CRYPT_H_
 
 #include "core/include/fxcrt/fx_system.h"
 
@@ -68,4 +68,4 @@
 };
 #endif
 
-#endif  // CORE_INCLUDE_FDRM_FX_CRYPT_H_
+#endif  // CORE_FDRM_CRYPTO_INCLUDE_FX_CRYPT_H_
diff --git a/core/fpdfapi/fpdf_page/fpdf_page_doc.cpp b/core/fpdfapi/fpdf_page/fpdf_page_doc.cpp
index 1a31364..76ecdcc 100644
--- a/core/fpdfapi/fpdf_page/fpdf_page_doc.cpp
+++ b/core/fpdfapi/fpdf_page/fpdf_page_doc.cpp
@@ -6,8 +6,8 @@
 
 #include "core/fpdfapi/fpdf_page/pageint.h"
 
+#include "core/fdrm/crypto/include/fx_crypt.h"
 #include "core/fpdfapi/fpdf_font/font_int.h"
-#include "core/include/fdrm/fx_crypt.h"
 #include "core/include/fpdfapi/cpdf_array.h"
 #include "core/include/fpdfapi/cpdf_dictionary.h"
 #include "core/include/fpdfapi/cpdf_document.h"
diff --git a/core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.cpp b/core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.cpp
index b732389..0be414a 100644
--- a/core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.cpp
+++ b/core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.cpp
@@ -8,7 +8,7 @@
 
 #include <time.h>
 
-#include "core/include/fdrm/fx_crypt.h"
+#include "core/fdrm/crypto/include/fx_crypt.h"
 #include "core/include/fpdfapi/cpdf_parser.h"
 #include "core/include/fpdfapi/cpdf_simple_parser.h"
 #include "core/include/fpdfapi/ipdf_security_handler.h"
diff --git a/core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.cpp b/core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.cpp
index e5eb4c8..6da4cb1 100644
--- a/core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.cpp
+++ b/core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.cpp
@@ -8,8 +8,8 @@
 
 #include <time.h>
 
+#include "core/fdrm/crypto/include/fx_crypt.h"
 #include "core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.h"
-#include "core/include/fdrm/fx_crypt.h"
 #include "core/include/fpdfapi/cpdf_array.h"
 #include "core/include/fpdfapi/cpdf_dictionary.h"
 #include "core/include/fpdfapi/cpdf_object.h"
diff --git a/core/fpdftext/fpdf_text_int.cpp b/core/fpdftext/fpdf_text_int.cpp
index d16ccb8..1bd544c 100644
--- a/core/fpdftext/fpdf_text_int.cpp
+++ b/core/fpdftext/fpdf_text_int.cpp
@@ -13,18 +13,28 @@
 #include <utility>
 #include <vector>
 
+#include "core/fpdftext/include/ipdf_linkextract.h"
+#include "core/fpdftext/include/ipdf_textpage.h"
+#include "core/fpdftext/include/ipdf_textpagefind.h"
 #include "core/include/fpdfapi/cpdf_dictionary.h"
 #include "core/include/fpdfapi/cpdf_string.h"
 #include "core/include/fpdfapi/fpdf_module.h"
 #include "core/include/fpdfapi/fpdf_page.h"
 #include "core/include/fpdfapi/fpdf_pageobj.h"
 #include "core/include/fpdfapi/fpdf_resource.h"
-#include "core/include/fpdftext/fpdf_text.h"
 #include "core/include/fxcrt/fx_bidi.h"
 #include "core/include/fxcrt/fx_ext.h"
 #include "core/include/fxcrt/fx_ucd.h"
 #include "third_party/base/stl_util.h"
 
+#define FPDFTEXT_RLTB 1
+#define FPDFTEXT_LEFT -1
+#define FPDFTEXT_RIGHT 1
+
+#define FPDFTEXT_MATCHCASE 0x00000001
+#define FPDFTEXT_MATCHWHOLEWORD 0x00000002
+#define FPDFTEXT_CONSECUTIVE 0x00000004
+
 namespace {
 
 FX_BOOL _IsIgnoreSpaceCharacter(FX_WCHAR curChar) {
@@ -1899,7 +1909,8 @@
     FPDF_CHAR_INFO info;
     pTextPage->GetCharInfo(i, &info);
     int indexSize = pdfium::CollectionSize<int>(m_CharIndex);
-    if (info.m_Flag == CHAR_NORMAL || info.m_Flag == CHAR_GENERATED) {
+    if (info.m_Flag == FPDFTEXT_CHAR_NORMAL ||
+        info.m_Flag == FPDFTEXT_CHAR_GENERATED) {
       if (indexSize % 2) {
         m_CharIndex.push_back(1);
       } else {
@@ -2325,8 +2336,8 @@
   while (pos < TotalChar) {
     FPDF_CHAR_INFO pageChar;
     m_pTextPage->GetCharInfo(pos, &pageChar);
-    if (pageChar.m_Flag == CHAR_GENERATED || pageChar.m_Unicode == 0x20 ||
-        pos == TotalChar - 1) {
+    if (pageChar.m_Flag == FPDFTEXT_CHAR_GENERATED ||
+        pageChar.m_Unicode == 0x20 || pos == TotalChar - 1) {
       int nCount = pos - start;
       if (pos == TotalChar - 1) {
         nCount++;
diff --git a/core/fpdftext/include/ipdf_linkextract.h b/core/fpdftext/include/ipdf_linkextract.h
new file mode 100644
index 0000000..2d7fe02
--- /dev/null
+++ b/core/fpdftext/include/ipdf_linkextract.h
@@ -0,0 +1,26 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef CORE_FPDFTEXT_INCLUDE_IPDF_LINKEXTRACT_H_
+#define CORE_FPDFTEXT_INCLUDE_IPDF_LINKEXTRACT_H_
+
+#include "core/include/fxcrt/fx_coordinates.h"
+#include "core/include/fxcrt/fx_system.h"
+#include "core/fpdftext/include/ipdf_textpage.h"
+
+class IPDF_LinkExtract {
+ public:
+  static IPDF_LinkExtract* CreateLinkExtract();
+  virtual ~IPDF_LinkExtract() {}
+
+  virtual FX_BOOL ExtractLinks(const IPDF_TextPage* pTextPage) = 0;
+  virtual int CountLinks() const = 0;
+  virtual CFX_WideString GetURL(int index) const = 0;
+  virtual void GetBoundedSegment(int index, int& start, int& count) const = 0;
+  virtual void GetRects(int index, CFX_RectArray& rects) const = 0;
+};
+
+#endif  // CORE_FPDFTEXT_INCLUDE_IPDF_LINKEXTRACT_H_
diff --git a/core/fpdftext/include/ipdf_textpage.h b/core/fpdftext/include/ipdf_textpage.h
new file mode 100644
index 0000000..1698e9a
--- /dev/null
+++ b/core/fpdftext/include/ipdf_textpage.h
@@ -0,0 +1,69 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef CORE_FPDFTEXT_INCLUDE_IPDF_TEXTPAGE_H_
+#define CORE_FPDFTEXT_INCLUDE_IPDF_TEXTPAGE_H_
+
+#include "core/include/fpdfapi/fpdf_page.h"
+#include "core/include/fpdfapi/fpdf_pageobj.h"
+#include "core/include/fxcrt/fx_coordinates.h"
+#include "core/include/fxcrt/fx_system.h"
+
+struct FPDF_CHAR_INFO {
+  FX_WCHAR m_Unicode;
+  FX_WCHAR m_Charcode;
+  int32_t m_Flag;
+  FX_FLOAT m_FontSize;
+  FX_FLOAT m_OriginX;
+  FX_FLOAT m_OriginY;
+  CFX_FloatRect m_CharBox;
+  CPDF_TextObject* m_pTextObj;
+  CFX_Matrix m_Matrix;
+};
+
+class IPDF_TextPage {
+ public:
+  static IPDF_TextPage* CreateTextPage(const CPDF_Page* pPage, int flags = 0);
+  virtual ~IPDF_TextPage() {}
+
+  virtual void ParseTextPage() = 0;
+  virtual bool IsParsed() const = 0;
+  virtual int CharIndexFromTextIndex(int TextIndex) const = 0;
+  virtual int TextIndexFromCharIndex(int CharIndex) const = 0;
+  virtual int CountChars() const = 0;
+  virtual void GetCharInfo(int index, FPDF_CHAR_INFO* info) const = 0;
+  virtual void GetRectArray(int start,
+                            int nCount,
+                            CFX_RectArray& rectArray) const = 0;
+  virtual int GetIndexAtPos(CFX_FloatPoint point,
+                            FX_FLOAT xTolerance,
+                            FX_FLOAT yTolerance) const = 0;
+  virtual int GetIndexAtPos(FX_FLOAT x,
+                            FX_FLOAT y,
+                            FX_FLOAT xTolerance,
+                            FX_FLOAT yTolerance) const = 0;
+  virtual CFX_WideString GetTextByRect(const CFX_FloatRect& rect) const = 0;
+  virtual void GetRectsArrayByRect(const CFX_FloatRect& rect,
+                                   CFX_RectArray& resRectArray) const = 0;
+  virtual int CountRects(int start, int nCount) = 0;
+  virtual void GetRect(int rectIndex,
+                       FX_FLOAT& left,
+                       FX_FLOAT& top,
+                       FX_FLOAT& right,
+                       FX_FLOAT& bottom) const = 0;
+  virtual FX_BOOL GetBaselineRotate(int rectIndex, int& Rotate) = 0;
+  virtual FX_BOOL GetBaselineRotate(const CFX_FloatRect& rect, int& Rotate) = 0;
+  virtual int CountBoundedSegments(FX_FLOAT left,
+                                   FX_FLOAT top,
+                                   FX_FLOAT right,
+                                   FX_FLOAT bottom,
+                                   FX_BOOL bContains = FALSE) = 0;
+  virtual void GetBoundedSegment(int index, int& start, int& count) const = 0;
+  virtual int GetWordBreak(int index, int direction) const = 0;
+  virtual CFX_WideString GetPageText(int start = 0, int nCount = -1) const = 0;
+};
+
+#endif  // CORE_FPDFTEXT_INCLUDE_IPDF_TEXTPAGE_H_
diff --git a/core/fpdftext/include/ipdf_textpagefind.h b/core/fpdftext/include/ipdf_textpagefind.h
new file mode 100644
index 0000000..88774b6
--- /dev/null
+++ b/core/fpdftext/include/ipdf_textpagefind.h
@@ -0,0 +1,29 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef CORE_FPDFTEXT_INCLUDE_IPDF_TEXTPAGEFIND_H_
+#define CORE_FPDFTEXT_INCLUDE_IPDF_TEXTPAGEFIND_H_
+
+#include "core/fpdftext/include/ipdf_textpage.h"
+#include "core/include/fxcrt/fx_coordinates.h"
+#include "core/include/fxcrt/fx_string.h"
+
+class IPDF_TextPageFind {
+ public:
+  static IPDF_TextPageFind* CreatePageFind(const IPDF_TextPage* pTextPage);
+  virtual ~IPDF_TextPageFind() {}
+
+  virtual FX_BOOL FindFirst(const CFX_WideString& findwhat,
+                            int flags,
+                            int startPos = 0) = 0;
+  virtual FX_BOOL FindNext() = 0;
+  virtual FX_BOOL FindPrev() = 0;
+  virtual void GetRectArray(CFX_RectArray& rects) const = 0;
+  virtual int GetCurOrder() const = 0;
+  virtual int GetMatchedCount() const = 0;
+};
+
+#endif  // CORE_FPDFTEXT_INCLUDE_IPDF_TEXTPAGEFIND_H_
diff --git a/core/fpdftext/text_int.h b/core/fpdftext/text_int.h
index bc110c7..42e254e 100644
--- a/core/fpdftext/text_int.h
+++ b/core/fpdftext/text_int.h
@@ -10,8 +10,10 @@
 #include <deque>
 #include <vector>
 
+#include "core/fpdftext/include/ipdf_linkextract.h"
+#include "core/fpdftext/include/ipdf_textpage.h"
+#include "core/fpdftext/include/ipdf_textpagefind.h"
 #include "core/include/fpdfapi/fpdf_page.h"
-#include "core/include/fpdftext/fpdf_text.h"
 #include "core/include/fxcrt/fx_basic.h"
 
 class CFX_BidiChar;
diff --git a/core/include/fpdftext/fpdf_text.h b/core/include/fpdftext/fpdf_text.h
deleted file mode 100644
index a3457fc..0000000
--- a/core/include/fpdftext/fpdf_text.h
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright 2014 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef CORE_INCLUDE_FPDFTEXT_FPDF_TEXT_H_
-#define CORE_INCLUDE_FPDFTEXT_FPDF_TEXT_H_
-
-#include "core/include/fxcrt/fx_coordinates.h"
-#include "core/include/fxcrt/fx_system.h"
-
-class CPDF_Page;
-class CPDF_TextObject;
-class IPDF_LinkExtract;
-class IPDF_ReflowedPage;
-class IPDF_TextPage;
-class IPDF_TextPageFind;
-
-#define CHAR_ERROR -1
-#define CHAR_NORMAL 0
-#define CHAR_GENERATED 1
-#define CHAR_UNUNICODE 2
-
-struct FPDF_CHAR_INFO {
-  FX_WCHAR m_Unicode;
-  FX_WCHAR m_Charcode;
-  int32_t m_Flag;
-  FX_FLOAT m_FontSize;
-  FX_FLOAT m_OriginX;
-  FX_FLOAT m_OriginY;
-  CFX_FloatRect m_CharBox;
-  CPDF_TextObject* m_pTextObj;
-  CFX_Matrix m_Matrix;
-};
-
-using CFX_RectArray = CFX_ArrayTemplate<CFX_FloatRect>;
-
-#define FPDFTEXT_LRTB 0
-#define FPDFTEXT_RLTB 1
-#define FPDFTEXT_TBRL 2
-#define FPDFTEXT_LEFT -1
-#define FPDFTEXT_RIGHT 1
-#define FPDFTEXT_UP -2
-#define FPDFTEXT_DOWN 2
-
-class IPDF_TextPage {
- public:
-  static IPDF_TextPage* CreateTextPage(const CPDF_Page* pPage, int flags = 0);
-  static IPDF_TextPage* CreateReflowTextPage(IPDF_ReflowedPage* pRefPage);
-  virtual ~IPDF_TextPage() {}
-
-  virtual void ParseTextPage() = 0;
-  virtual bool IsParsed() const = 0;
-  virtual int CharIndexFromTextIndex(int TextIndex) const = 0;
-  virtual int TextIndexFromCharIndex(int CharIndex) const = 0;
-  virtual int CountChars() const = 0;
-  virtual void GetCharInfo(int index, FPDF_CHAR_INFO* info) const = 0;
-  virtual void GetRectArray(int start,
-                            int nCount,
-                            CFX_RectArray& rectArray) const = 0;
-  virtual int GetIndexAtPos(CFX_FloatPoint point,
-                            FX_FLOAT xTolerance,
-                            FX_FLOAT yTolerance) const = 0;
-  virtual int GetIndexAtPos(FX_FLOAT x,
-                            FX_FLOAT y,
-                            FX_FLOAT xTolerance,
-                            FX_FLOAT yTolerance) const = 0;
-  virtual CFX_WideString GetTextByRect(const CFX_FloatRect& rect) const = 0;
-  virtual void GetRectsArrayByRect(const CFX_FloatRect& rect,
-                                   CFX_RectArray& resRectArray) const = 0;
-  virtual int CountRects(int start, int nCount) = 0;
-  virtual void GetRect(int rectIndex,
-                       FX_FLOAT& left,
-                       FX_FLOAT& top,
-                       FX_FLOAT& right,
-                       FX_FLOAT& bottom) const = 0;
-  virtual FX_BOOL GetBaselineRotate(int rectIndex, int& Rotate) = 0;
-  virtual FX_BOOL GetBaselineRotate(const CFX_FloatRect& rect, int& Rotate) = 0;
-  virtual int CountBoundedSegments(FX_FLOAT left,
-                                   FX_FLOAT top,
-                                   FX_FLOAT right,
-                                   FX_FLOAT bottom,
-                                   FX_BOOL bContains = FALSE) = 0;
-  virtual void GetBoundedSegment(int index, int& start, int& count) const = 0;
-  virtual int GetWordBreak(int index, int direction) const = 0;
-  virtual CFX_WideString GetPageText(int start = 0, int nCount = -1) const = 0;
-};
-
-#define FPDFTEXT_MATCHCASE 0x00000001
-#define FPDFTEXT_MATCHWHOLEWORD 0x00000002
-#define FPDFTEXT_CONSECUTIVE 0x00000004
-
-class IPDF_TextPageFind {
- public:
-  static IPDF_TextPageFind* CreatePageFind(const IPDF_TextPage* pTextPage);
-  virtual ~IPDF_TextPageFind() {}
-
-  virtual FX_BOOL FindFirst(const CFX_WideString& findwhat,
-                            int flags,
-                            int startPos = 0) = 0;
-  virtual FX_BOOL FindNext() = 0;
-  virtual FX_BOOL FindPrev() = 0;
-  virtual void GetRectArray(CFX_RectArray& rects) const = 0;
-  virtual int GetCurOrder() const = 0;
-  virtual int GetMatchedCount() const = 0;
-};
-
-class IPDF_LinkExtract {
- public:
-  static IPDF_LinkExtract* CreateLinkExtract();
-  virtual ~IPDF_LinkExtract() {}
-
-  virtual FX_BOOL ExtractLinks(const IPDF_TextPage* pTextPage) = 0;
-  virtual int CountLinks() const = 0;
-  virtual CFX_WideString GetURL(int index) const = 0;
-  virtual void GetBoundedSegment(int index, int& start, int& count) const = 0;
-  virtual void GetRects(int index, CFX_RectArray& rects) const = 0;
-};
-
-#endif  // CORE_INCLUDE_FPDFTEXT_FPDF_TEXT_H_
diff --git a/core/include/fxcrt/fx_coordinates.h b/core/include/fxcrt/fx_coordinates.h
index 53b4c1a..0422da1 100644
--- a/core/include/fxcrt/fx_coordinates.h
+++ b/core/include/fxcrt/fx_coordinates.h
@@ -310,6 +310,7 @@
   FX_FLOAT right;
   FX_FLOAT top;
 };
+using CFX_RectArray = CFX_ArrayTemplate<CFX_FloatRect>;
 
 // LTWH rectangles (y-axis runs downwards).
 template <class baseType>
diff --git a/fpdfsdk/DEPS b/fpdfsdk/DEPS
index 488a396..ed11188 100644
--- a/fpdfsdk/DEPS
+++ b/fpdfsdk/DEPS
@@ -1,5 +1,6 @@
 include_rules = [
   '+core/include',
+  '+core/fpdftext/include',
   '+javascript/IJavaScript.h',
   '+public',
   '+v8',
diff --git a/fpdfsdk/fpdf_searchex.cpp b/fpdfsdk/fpdf_searchex.cpp
index 96c5e53..ab2baf5 100644
--- a/fpdfsdk/fpdf_searchex.cpp
+++ b/fpdfsdk/fpdf_searchex.cpp
@@ -6,7 +6,7 @@
 
 #include "public/fpdf_searchex.h"
 
-#include "core/include/fpdftext/fpdf_text.h"
+#include "core/fpdftext/include/ipdf_textpage.h"
 
 DLLEXPORT int STDCALL
 FPDFText_GetCharIndexFromTextIndex(FPDF_TEXTPAGE text_page, int nTextIndex) {
diff --git a/fpdfsdk/fpdftext.cpp b/fpdfsdk/fpdftext.cpp
index 80d5692..3e64d8e 100644
--- a/fpdfsdk/fpdftext.cpp
+++ b/fpdfsdk/fpdftext.cpp
@@ -6,8 +6,10 @@
 
 #include "public/fpdf_text.h"
 
+#include "core/fpdftext/include/ipdf_linkextract.h"
+#include "core/fpdftext/include/ipdf_textpage.h"
+#include "core/fpdftext/include/ipdf_textpagefind.h"
 #include "core/include/fpdfdoc/fpdf_doc.h"
-#include "core/include/fpdftext/fpdf_text.h"
 #include "fpdfsdk/include/fsdk_define.h"
 
 #ifdef PDF_ENABLE_XFA
diff --git a/fpdfsdk/include/fsdk_mgr.h b/fpdfsdk/include/fsdk_mgr.h
index 6543000..0073377 100644
--- a/fpdfsdk/include/fsdk_mgr.h
+++ b/fpdfsdk/include/fsdk_mgr.h
@@ -12,7 +12,6 @@
 #include <vector>
 
 #include "core/include/fpdfapi/cpdf_document.h"
-#include "core/include/fpdftext/fpdf_text.h"
 #include "fpdfsdk/include/fsdk_actionhandler.h"
 #include "fpdfsdk/include/fsdk_annothandler.h"
 #include "fpdfsdk/include/fsdk_baseannot.h"
diff --git a/fpdfsdk/javascript/DEPS b/fpdfsdk/javascript/DEPS
index 4b3f3dd..a1f0ec3 100644
--- a/fpdfsdk/javascript/DEPS
+++ b/fpdfsdk/javascript/DEPS
@@ -1,3 +1,4 @@
 include_rules = [
+  '+core/fdrm/crypto/include',
   '+xfa/fxjse'
 ]
diff --git a/fpdfsdk/javascript/JS_GlobalData.cpp b/fpdfsdk/javascript/JS_GlobalData.cpp
index 1408dbe..ba547fe 100644
--- a/fpdfsdk/javascript/JS_GlobalData.cpp
+++ b/fpdfsdk/javascript/JS_GlobalData.cpp
@@ -6,7 +6,7 @@
 
 #include "fpdfsdk/javascript/JS_GlobalData.h"
 
-#include "core/include/fdrm/fx_crypt.h"
+#include "core/fdrm/crypto/include/fx_crypt.h"
 #include "fpdfsdk/include/javascript/IJavaScript.h"
 
 #define JS_MAXGLOBALDATA (1024 * 4 - 8)
diff --git a/pdfium.gyp b/pdfium.gyp
index a7cb00d..9d986b2 100644
--- a/pdfium.gyp
+++ b/pdfium.gyp
@@ -212,7 +212,7 @@
       'target_name': 'fdrm',
       'type': 'static_library',
       'sources': [
-        'core/include/fdrm/fx_crypt.h',
+        'core/fdrm/crypto/include/fx_crypt.h',
         'core/fdrm/crypto/fx_crypt.cpp',
         'core/fdrm/crypto/fx_crypt_aes.cpp',
         'core/fdrm/crypto/fx_crypt_sha.cpp',
@@ -403,7 +403,9 @@
       'target_name': 'fpdftext',
       'type': 'static_library',
       'sources': [
-        'core/include/fpdftext/fpdf_text.h',
+        'core/fpdftext/include/ipdf_linkextract.h',
+        'core/fpdftext/include/ipdf_textpage.h',
+        'core/fpdftext/include/ipdf_textpagefind.h',
         'core/fpdftext/fpdf_text_int.cpp',
         'core/fpdftext/text_int.h',
         'core/fpdftext/unicodenormalization.cpp',
diff --git a/xfa/fxfa/app/DEPS b/xfa/fxfa/app/DEPS
new file mode 100644
index 0000000..a0d113f
--- /dev/null
+++ b/xfa/fxfa/app/DEPS
@@ -0,0 +1,3 @@
+include_rules = [
+  '+core/fdrm/crypto/include',
+]
diff --git a/xfa/fxfa/app/xfa_checksum.cpp b/xfa/fxfa/app/xfa_checksum.cpp
index 1639c0d..b9a7b50 100644
--- a/xfa/fxfa/app/xfa_checksum.cpp
+++ b/xfa/fxfa/app/xfa_checksum.cpp
@@ -6,7 +6,7 @@
 
 #include "xfa/fxfa/app/xfa_checksum.h"
 
-#include "core/include/fdrm/fx_crypt.h"
+#include "core/fdrm/crypto/include/fx_crypt.h"
 #include "xfa/fgas/crt/fgas_algorithm.h"
 
 CXFA_SAXReaderHandler::CXFA_SAXReaderHandler(CXFA_ChecksumContext* pContext)
