diff --git a/packages/core/src/schema/index.ts b/packages/core/src/schema/index.ts
index da1924211d5cbf5c408883a528821668a71a2d2d..a38ba9975b680beec9d6e550740e6c94fa00b35f 100644
--- a/packages/core/src/schema/index.ts
+++ b/packages/core/src/schema/index.ts
@@ -1,4 +1,4 @@
 export * from "./node";
-export { TransformComponent } from "./type";
+export { FileReader, TransformComponent, type BaseReader } from "./type";
 export { EngineResponse } from "./type/engine–response";
 export * from "./zod";
diff --git a/packages/core/src/schema/type.ts b/packages/core/src/schema/type.ts
index 7aa3add8a803f21f3dbe0c616ef14b62d2e99554..4c7271d90b3682e4fd96358a1a29eee90840c6ea 100644
--- a/packages/core/src/schema/type.ts
+++ b/packages/core/src/schema/type.ts
@@ -1,5 +1,5 @@
-import { randomUUID } from "@llamaindex/env";
-import type { BaseNode } from "./node";
+import { fs, path, randomUUID } from "@llamaindex/env";
+import type { BaseNode, Document } from "./node";
 
 interface TransformComponentSignature {
   <Options extends Record<string, unknown>>(
@@ -28,3 +28,37 @@ export class TransformComponent {
     return transform;
   }
 }
+
+/**
+ * A reader takes imports data into Document objects.
+ */
+export interface BaseReader {
+  loadData(...args: unknown[]): Promise<Document[]>;
+}
+
+/**
+ * A FileReader takes file paths and imports data into Document objects.
+ */
+export abstract class FileReader implements BaseReader {
+  abstract loadDataAsContent(
+    fileContent: Uint8Array,
+    fileName?: string,
+  ): Promise<Document[]>;
+
+  async loadData(filePath: string): Promise<Document[]> {
+    const fileContent = await fs.readFile(filePath);
+    const fileName = path.basename(filePath);
+    const docs = await this.loadDataAsContent(fileContent, fileName);
+    docs.forEach(FileReader.addMetaData(filePath));
+    return docs;
+  }
+
+  static addMetaData(filePath: string) {
+    return (doc: Document, index: number) => {
+      // generate id as loadDataAsContent is only responsible for the content
+      doc.id_ = `${filePath}_${index + 1}`;
+      doc.metadata["file_path"] = path.resolve(filePath);
+      doc.metadata["file_name"] = path.basename(filePath);
+    };
+  }
+}
diff --git a/packages/llamaindex/src/ingestion/IngestionPipeline.ts b/packages/llamaindex/src/ingestion/IngestionPipeline.ts
index fed97e9925e026caf2749e4fe2fdcf3f11c55f77..8b7f355aab3ad5496f1b355477773e3e20ee77ce 100644
--- a/packages/llamaindex/src/ingestion/IngestionPipeline.ts
+++ b/packages/llamaindex/src/ingestion/IngestionPipeline.ts
@@ -1,4 +1,4 @@
-import type { TransformComponent } from "@llamaindex/core/schema";
+import type { BaseReader, TransformComponent } from "@llamaindex/core/schema";
 import {
   ModalityType,
   splitNodesByType,
@@ -6,7 +6,6 @@ import {
   type Document,
   type Metadata,
 } from "@llamaindex/core/schema";
-import type { BaseReader } from "../readers/type.js";
 import type { BaseDocumentStore } from "../storage/docStore/types.js";
 import type {
   VectorStore,
@@ -107,6 +106,7 @@ export class IngestionPipeline {
       inputNodes.push(this.documents);
     }
     if (this.reader) {
+      // fixme: empty parameter might cause error
       inputNodes.push(await this.reader.loadData());
     }
     return inputNodes.flat();
diff --git a/packages/llamaindex/src/readers/AssemblyAIReader.ts b/packages/llamaindex/src/readers/AssemblyAIReader.ts
index 74184cb8fd4ae06fcefd225f7a930e86346de891..ee368682dd109903d5d2e10ad759fd4fe2db08fe 100644
--- a/packages/llamaindex/src/readers/AssemblyAIReader.ts
+++ b/packages/llamaindex/src/readers/AssemblyAIReader.ts
@@ -1,4 +1,4 @@
-import { Document } from "@llamaindex/core/schema";
+import { type BaseReader, Document } from "@llamaindex/core/schema";
 import { getEnv } from "@llamaindex/env";
 import type {
   BaseServiceParams,
@@ -8,7 +8,6 @@ import type {
   TranscriptSentence,
 } from "assemblyai";
 import { AssemblyAI } from "assemblyai";
-import type { BaseReader } from "./type.js";
 
 type AssemblyAIOptions = Partial<BaseServiceParams>;
 const defaultOptions = {
diff --git a/packages/llamaindex/src/readers/CSVReader.ts b/packages/llamaindex/src/readers/CSVReader.ts
index 9334574c769ff8fcb3ec37434531dd09a25e653b..eecb6a5bc4d0eaf6307407642ebca86ae2cca55d 100644
--- a/packages/llamaindex/src/readers/CSVReader.ts
+++ b/packages/llamaindex/src/readers/CSVReader.ts
@@ -1,7 +1,6 @@
-import { Document } from "@llamaindex/core/schema";
+import { type BaseReader, Document, FileReader } from "@llamaindex/core/schema";
 import type { ParseConfig } from "papaparse";
 import Papa from "papaparse";
-import { FileReader } from "./type.js";
 
 /**
  * papaparse-based csv parser
diff --git a/packages/llamaindex/src/readers/DiscordReader.ts b/packages/llamaindex/src/readers/DiscordReader.ts
index fdabcd0913b29e66a8f65babd07d9a33bd18548a..8cf92981a24bce348af0d1310f511d7c2e86aa0e 100644
--- a/packages/llamaindex/src/readers/DiscordReader.ts
+++ b/packages/llamaindex/src/readers/DiscordReader.ts
@@ -1,5 +1,5 @@
 import { REST, type RESTOptions } from "@discordjs/rest";
-import { Document } from "@llamaindex/core/schema";
+import { Document, type BaseReader } from "@llamaindex/core/schema";
 import { getEnv } from "@llamaindex/env";
 import { Routes, type APIEmbed, type APIMessage } from "discord-api-types/v10";
 
@@ -7,7 +7,7 @@ import { Routes, type APIEmbed, type APIMessage } from "discord-api-types/v10";
  * Represents a reader for Discord messages using @discordjs/rest
  * See https://github.com/discordjs/discord.js/tree/main/packages/rest
  */
-export class DiscordReader {
+export class DiscordReader implements BaseReader {
   private client: REST;
 
   constructor(
diff --git a/packages/llamaindex/src/readers/DocxReader.ts b/packages/llamaindex/src/readers/DocxReader.ts
index 765a322df9313572832829b8234ae6e042372ff5..79ce9857d5d439ae10270d4f4e19cab326869962 100644
--- a/packages/llamaindex/src/readers/DocxReader.ts
+++ b/packages/llamaindex/src/readers/DocxReader.ts
@@ -1,6 +1,5 @@
-import { Document } from "@llamaindex/core/schema";
+import { Document, FileReader } from "@llamaindex/core/schema";
 import mammoth from "mammoth";
-import { FileReader } from "./type.js";
 
 export class DocxReader extends FileReader {
   /** DocxParser */
diff --git a/packages/llamaindex/src/readers/HTMLReader.ts b/packages/llamaindex/src/readers/HTMLReader.ts
index 02e08263d46c58632352aecc68b08d722473172d..6246bf8a4a1d4ee11c62ef7fa00a61f550b9a232 100644
--- a/packages/llamaindex/src/readers/HTMLReader.ts
+++ b/packages/llamaindex/src/readers/HTMLReader.ts
@@ -1,6 +1,4 @@
-import { Document } from "@llamaindex/core/schema";
-import { FileReader } from "./type.js";
-
+import { Document, FileReader } from "@llamaindex/core/schema";
 /**
  * Extract the significant text from an arbitrary HTML document.
  * The contents of any head, script, style, and xml tags are removed completely.
diff --git a/packages/llamaindex/src/readers/ImageReader.ts b/packages/llamaindex/src/readers/ImageReader.ts
index 937737128d8ecb9024b2e5e94a01abcf8bec6f94..6a681e83f32cb5fde6e29b4c6f191a0e3433239a 100644
--- a/packages/llamaindex/src/readers/ImageReader.ts
+++ b/packages/llamaindex/src/readers/ImageReader.ts
@@ -1,6 +1,5 @@
 import type { Document } from "@llamaindex/core/schema";
-import { ImageDocument } from "@llamaindex/core/schema";
-import { FileReader } from "./type.js";
+import { FileReader, ImageDocument } from "@llamaindex/core/schema";
 
 /**
  * Reads the content of an image file into a Document object (which stores the image file as a Blob).
diff --git a/packages/llamaindex/src/readers/JSONReader.ts b/packages/llamaindex/src/readers/JSONReader.ts
index 13c54cd2bfcdc2dd101a3556a7a2c789cc9ee9e0..2f4f99a9f0c2e14d68f53f3b6218a3a2a3b3e8e1 100644
--- a/packages/llamaindex/src/readers/JSONReader.ts
+++ b/packages/llamaindex/src/readers/JSONReader.ts
@@ -1,7 +1,5 @@
 import type { JSONValue } from "@llamaindex/core/global";
-import { Document } from "@llamaindex/core/schema";
-import { FileReader } from "./type.js";
-
+import { Document, FileReader } from "@llamaindex/core/schema";
 export interface JSONReaderOptions {
   /**
    * Whether to ensure only ASCII characters.
diff --git a/packages/llamaindex/src/readers/LlamaParseReader.ts b/packages/llamaindex/src/readers/LlamaParseReader.ts
index 6532ac5ccf4703762981b4a31981144e162b84ae..b45bb9fc7761be15b7624214a5a32951d0bfb898 100644
--- a/packages/llamaindex/src/readers/LlamaParseReader.ts
+++ b/packages/llamaindex/src/readers/LlamaParseReader.ts
@@ -1,7 +1,92 @@
-import { Document } from "@llamaindex/core/schema";
+import { Document, FileReader } from "@llamaindex/core/schema";
 import { fs, getEnv } from "@llamaindex/env";
 import { filetypeinfo } from "magic-bytes.js";
-import { FileReader, type Language, type ResultType } from "./type.js";
+
+export type ResultType = "text" | "markdown" | "json";
+export type Language =
+  | "abq"
+  | "ady"
+  | "af"
+  | "ang"
+  | "ar"
+  | "as"
+  | "ava"
+  | "az"
+  | "be"
+  | "bg"
+  | "bh"
+  | "bho"
+  | "bn"
+  | "bs"
+  | "ch_sim"
+  | "ch_tra"
+  | "che"
+  | "cs"
+  | "cy"
+  | "da"
+  | "dar"
+  | "de"
+  | "en"
+  | "es"
+  | "et"
+  | "fa"
+  | "fr"
+  | "ga"
+  | "gom"
+  | "hi"
+  | "hr"
+  | "hu"
+  | "id"
+  | "inh"
+  | "is"
+  | "it"
+  | "ja"
+  | "kbd"
+  | "kn"
+  | "ko"
+  | "ku"
+  | "la"
+  | "lbe"
+  | "lez"
+  | "lt"
+  | "lv"
+  | "mah"
+  | "mai"
+  | "mi"
+  | "mn"
+  | "mr"
+  | "ms"
+  | "mt"
+  | "ne"
+  | "new"
+  | "nl"
+  | "no"
+  | "oc"
+  | "pi"
+  | "pl"
+  | "pt"
+  | "ro"
+  | "ru"
+  | "rs_cyrillic"
+  | "rs_latin"
+  | "sck"
+  | "sk"
+  | "sl"
+  | "sq"
+  | "sv"
+  | "sw"
+  | "ta"
+  | "tab"
+  | "te"
+  | "th"
+  | "tjk"
+  | "tl"
+  | "tr"
+  | "ug"
+  | "uk"
+  | "ur"
+  | "uz"
+  | "vi";
 
 const SUPPORT_FILE_EXT: string[] = [
   ".pdf",
diff --git a/packages/llamaindex/src/readers/MarkdownReader.ts b/packages/llamaindex/src/readers/MarkdownReader.ts
index 32c734f493cd279e97093815a2c8177b3c7e8a43..e8e43410c054b049b1eafe5b743c023962ed0608 100644
--- a/packages/llamaindex/src/readers/MarkdownReader.ts
+++ b/packages/llamaindex/src/readers/MarkdownReader.ts
@@ -1,5 +1,4 @@
-import { Document } from "@llamaindex/core/schema";
-import { FileReader } from "./type.js";
+import { Document, FileReader } from "@llamaindex/core/schema";
 
 type MarkdownTuple = [string | null, string];
 
diff --git a/packages/llamaindex/src/readers/NotionReader.ts b/packages/llamaindex/src/readers/NotionReader.ts
index 80168c7f83a6b485af41adc72b5c484d4d2ebeb4..8b2db4239a6cbe5adac4d76464b8fd254161c589 100644
--- a/packages/llamaindex/src/readers/NotionReader.ts
+++ b/packages/llamaindex/src/readers/NotionReader.ts
@@ -1,7 +1,7 @@
+import type { BaseReader } from "@llamaindex/core/schema";
 import { Document } from "@llamaindex/core/schema";
 import type { Crawler, CrawlerOptions, Page } from "notion-md-crawler";
 import { crawler, pageToString } from "notion-md-crawler";
-import type { BaseReader } from "./type.js";
 
 type NotionReaderOptions = Pick<CrawlerOptions, "client" | "serializers">;
 
diff --git a/packages/llamaindex/src/readers/PDFReader.ts b/packages/llamaindex/src/readers/PDFReader.ts
index 3e5e3e448518157509633a8faf579283f416aa21..bd46e3ce340f573fda36da1947bac91bf2088eb9 100644
--- a/packages/llamaindex/src/readers/PDFReader.ts
+++ b/packages/llamaindex/src/readers/PDFReader.ts
@@ -1,5 +1,4 @@
-import { Document } from "@llamaindex/core/schema";
-import { FileReader } from "./type.js";
+import { Document, FileReader } from "@llamaindex/core/schema";
 
 /**
  * Read the text of a PDF
diff --git a/packages/llamaindex/src/readers/SimpleDirectoryReader.edge.ts b/packages/llamaindex/src/readers/SimpleDirectoryReader.edge.ts
index 3e4e63dc8ab4d21a4564a5da19044fb0a4e26d9b..938eb89e3d72ebdaf92fda9e46b49d1459f89782 100644
--- a/packages/llamaindex/src/readers/SimpleDirectoryReader.edge.ts
+++ b/packages/llamaindex/src/readers/SimpleDirectoryReader.edge.ts
@@ -1,8 +1,8 @@
+import type { BaseReader, FileReader } from "@llamaindex/core/schema";
 import { Document } from "@llamaindex/core/schema";
 import { path } from "@llamaindex/env";
 import { walk } from "../storage/FileSystem.js";
 import { TextFileReader } from "./TextFileReader.js";
-import type { BaseReader, FileReader } from "./type.js";
 import pLimit from "./utils.js";
 
 type ReaderCallback = (
diff --git a/packages/llamaindex/src/readers/SimpleDirectoryReader.ts b/packages/llamaindex/src/readers/SimpleDirectoryReader.ts
index 1a259eb0f9eac963a070c0a49107ed5fcdd25ac8..b4e12523af5347f6c888fa31759e463eda916648 100644
--- a/packages/llamaindex/src/readers/SimpleDirectoryReader.ts
+++ b/packages/llamaindex/src/readers/SimpleDirectoryReader.ts
@@ -1,3 +1,4 @@
+import type { FileReader } from "@llamaindex/core/schema";
 import { Document } from "@llamaindex/core/schema";
 import { PapaCSVReader } from "./CSVReader.js";
 import { DocxReader } from "./DocxReader.js";
@@ -10,7 +11,6 @@ import {
   type SimpleDirectoryReaderLoadDataParams,
 } from "./SimpleDirectoryReader.edge.js";
 import { TextFileReader } from "./TextFileReader.js";
-import type { FileReader } from "./type.js";
 
 export const FILE_EXT_TO_READER: Record<string, FileReader> = {
   txt: new TextFileReader(),
diff --git a/packages/llamaindex/src/readers/SimpleMongoReader.ts b/packages/llamaindex/src/readers/SimpleMongoReader.ts
index 58dafc966a7f9c593476af76d4597fcd23dbf0c7..d85d1c13fab11c603fc3f83289ab84fedbb23032 100644
--- a/packages/llamaindex/src/readers/SimpleMongoReader.ts
+++ b/packages/llamaindex/src/readers/SimpleMongoReader.ts
@@ -1,7 +1,6 @@
 import type { Metadata } from "@llamaindex/core/schema";
-import { Document } from "@llamaindex/core/schema";
+import { type BaseReader, Document } from "@llamaindex/core/schema";
 import type { MongoClient } from "mongodb";
-import type { BaseReader } from "./type.js";
 
 /**
  * Read in from MongoDB
diff --git a/packages/llamaindex/src/readers/TextFileReader.ts b/packages/llamaindex/src/readers/TextFileReader.ts
index 972d787e4730f41c27b710a27fe85e44ebae73d0..785a8f01c070a7455848f0213eb03aa508e973b5 100644
--- a/packages/llamaindex/src/readers/TextFileReader.ts
+++ b/packages/llamaindex/src/readers/TextFileReader.ts
@@ -1,6 +1,4 @@
-import { Document } from "@llamaindex/core/schema";
-import { FileReader } from "./type.js";
-
+import { Document, FileReader } from "@llamaindex/core/schema";
 /**
  * Read a .txt file
  */
diff --git a/packages/llamaindex/src/readers/type.ts b/packages/llamaindex/src/readers/type.ts
index 80fe584e938029530e6a48b0c19e38b2e370c51e..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- a/packages/llamaindex/src/readers/type.ts
+++ b/packages/llamaindex/src/readers/type.ts
@@ -1,124 +0,0 @@
-import type { Document } from "@llamaindex/core/schema";
-import { fs, path } from "@llamaindex/env";
-
-/**
- * A reader takes imports data into Document objects.
- */
-export interface BaseReader {
-  loadData(...args: unknown[]): Promise<Document[]>;
-}
-
-/**
- * A FileReader takes file paths and imports data into Document objects.
- */
-export abstract class FileReader implements BaseReader {
-  abstract loadDataAsContent(
-    fileContent: Uint8Array,
-    fileName?: string,
-  ): Promise<Document[]>;
-
-  async loadData(filePath: string): Promise<Document[]> {
-    const fileContent = await fs.readFile(filePath);
-    const fileName = path.basename(filePath);
-    const docs = await this.loadDataAsContent(fileContent, fileName);
-    docs.forEach(FileReader.addMetaData(filePath));
-    return docs;
-  }
-
-  static addMetaData(filePath: string) {
-    return (doc: Document, index: number) => {
-      // generate id as loadDataAsContent is only responsible for the content
-      doc.id_ = `${filePath}_${index + 1}`;
-      doc.metadata["file_path"] = path.resolve(filePath);
-      doc.metadata["file_name"] = path.basename(filePath);
-    };
-  }
-}
-
-// For LlamaParseReader.ts
-
-export type ResultType = "text" | "markdown" | "json";
-export type Language =
-  | "abq"
-  | "ady"
-  | "af"
-  | "ang"
-  | "ar"
-  | "as"
-  | "ava"
-  | "az"
-  | "be"
-  | "bg"
-  | "bh"
-  | "bho"
-  | "bn"
-  | "bs"
-  | "ch_sim"
-  | "ch_tra"
-  | "che"
-  | "cs"
-  | "cy"
-  | "da"
-  | "dar"
-  | "de"
-  | "en"
-  | "es"
-  | "et"
-  | "fa"
-  | "fr"
-  | "ga"
-  | "gom"
-  | "hi"
-  | "hr"
-  | "hu"
-  | "id"
-  | "inh"
-  | "is"
-  | "it"
-  | "ja"
-  | "kbd"
-  | "kn"
-  | "ko"
-  | "ku"
-  | "la"
-  | "lbe"
-  | "lez"
-  | "lt"
-  | "lv"
-  | "mah"
-  | "mai"
-  | "mi"
-  | "mn"
-  | "mr"
-  | "ms"
-  | "mt"
-  | "ne"
-  | "new"
-  | "nl"
-  | "no"
-  | "oc"
-  | "pi"
-  | "pl"
-  | "pt"
-  | "ro"
-  | "ru"
-  | "rs_cyrillic"
-  | "rs_latin"
-  | "sck"
-  | "sk"
-  | "sl"
-  | "sq"
-  | "sv"
-  | "sw"
-  | "ta"
-  | "tab"
-  | "te"
-  | "th"
-  | "tjk"
-  | "tl"
-  | "tr"
-  | "ug"
-  | "uk"
-  | "ur"
-  | "uz"
-  | "vi";