diff --git a/Makefile b/Makefile
index a127027..510237b 100644
--- a/Makefile
+++ b/Makefile
@@ -17,8 +17,7 @@
 		rbtree.c smalloc.c filehash.c profile.c debug.c lib/rand.c \
 		lib/num2str.c lib/ieee754.c $(wildcard crc/*.c) engines/cpu.c \
 		engines/mmap.c engines/sync.c engines/null.c engines/net.c \
-		memalign.c server.c client.c iolog.c backend.c libfio.c flow.c \
-		endian_check.c fio_initialization.c
+		memalign.c server.c client.c iolog.c backend.c libfio.c flow.c
 
 ifeq ($(UNAME), Linux)
   SOURCE += diskutil.c fifo.c blktrace.c helpers.c cgroup.c trim.c \
diff --git a/endian_check.c b/endian_check.c
deleted file mode 100644
index c6fc3e2..0000000
--- a/endian_check.c
+++ /dev/null
@@ -1,33 +0,0 @@
-#include <stdint.h>
-#include "os/os.h"
-
-int endian_check(void)
-{
-	union {
-		uint8_t c[8];
-		uint64_t v;
-	} u;
-	int le = 0, be = 0;
-
-	u.v = 0x12;
-	if (u.c[7] == 0x12)
-		be = 1;
-	else if (u.c[0] == 0x12)
-		le = 1;
-
-#if defined(FIO_LITTLE_ENDIAN)
-	if (be)
-		return 1;
-#elif defined(FIO_BIG_ENDIAN)
-	if (le)
-		return 1;
-#else
-	return 1;
-#endif
-
-	if (!le && !be)
-		return 1;
-
-	return 0;
-}
-
diff --git a/endian_check.h b/endian_check.h
deleted file mode 100644
index 2e06c3b..0000000
--- a/endian_check.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef ENDIAN_CHECK_H
-#define ENDIAN_CHECK_H
-
-int endian_check(void);
-
-#endif 
diff --git a/fio.c b/fio.c
index 52ed944..d628cfc 100644
--- a/fio.c
+++ b/fio.c
@@ -36,7 +36,6 @@
 #include "memalign.h"
 #include "client.h"
 #include "server.h"
-#include "fio_initialization.h"
 
 int main(int argc, char *argv[], char *envp[])
 {
diff --git a/fio.h b/fio.h
index 3efda51..9af047c 100644
--- a/fio.h
+++ b/fio.h
@@ -608,6 +608,10 @@
 extern char *num2str(unsigned long, int, int, int);
 extern int ioengine_load(struct thread_data *);
 
+extern unsigned long page_mask;
+extern unsigned long page_size;
+extern int initialize_fio(char *envp[]);
+
 #define FIO_GETOPT_JOB		0x89000000
 #define FIO_GETOPT_IOENGINE	0x98000000
 #define FIO_NR_OPTIONS		(FIO_MAX_OPTS + 128)
diff --git a/fio_initialization.c b/fio_initialization.c
deleted file mode 100644
index 8bd3374..0000000
--- a/fio_initialization.c
+++ /dev/null
@@ -1,43 +0,0 @@
-#include <locale.h>
-
-#include "endian_check.h"
-#include "smalloc.h"
-#include "fio.h"
-
-
-unsigned long page_mask;
-unsigned long page_size;
-
-int initialize_fio(char *envp[])
-{
-	long ps;
-
-	if (endian_check()) {
-		log_err("fio: endianness settings appear wrong.\n");
-		log_err("fio: please report this to fio@vger.kernel.org\n");
-		return 1;
-	}
-
-	arch_init(envp);
-
-	sinit();
-
-	/*
-	 * We need locale for number printing, if it isn't set then just
-	 * go with the US format.
-	 */
-	if (!getenv("LC_NUMERIC"))
-		setlocale(LC_NUMERIC, "en_US");
-
-	ps = sysconf(_SC_PAGESIZE);
-	if (ps < 0) {
-		log_err("Failed to get page size\n");
-		return 1;
-	}
-
-	page_size = ps;
-	page_mask = ps - 1;
-
-	fio_keywords_init();
-	return 0;
-}
diff --git a/fio_initialization.h b/fio_initialization.h
deleted file mode 100644
index 877cd44..0000000
--- a/fio_initialization.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef FIO_INITIALIZATION
-#define FIO_INITIALIZATION
-
-extern unsigned long page_mask;
-extern unsigned long page_size;
-extern int initialize_fio(char *envp[]);
-
-#endif
diff --git a/gfio.c b/gfio.c
index 852214e..1832220 100644
--- a/gfio.c
+++ b/gfio.c
@@ -26,7 +26,6 @@
 #include <glib.h>
 #include <gtk/gtk.h>
 
-#include "fio_initialization.h"
 #include "fio.h"
 
 #define ARRAYSIZE(x) (sizeof((x)) / (sizeof((x)[0])))
diff --git a/libfio.c b/libfio.c
index 668df45..95938c8 100644
--- a/libfio.c
+++ b/libfio.c
@@ -25,7 +25,12 @@
 #include <string.h>
 #include <sys/types.h>
 #include <signal.h>
+#include <stdint.h>
+#include <locale.h>
+
 #include "fio.h"
+#include "smalloc.h"
+#include "os/os.h"
 
 /*
  * Just expose an empty list, if the OS does not support disk util stats
@@ -36,6 +41,9 @@
 
 unsigned long arch_flags = 0;
 
+unsigned long page_mask;
+unsigned long page_size;
+
 static const char *fio_os_strings[os_nr] = {
 	"Invalid",
 	"Linux",
@@ -187,4 +195,66 @@
 	}
 }
 
+static int endian_check(void)
+{
+	union {
+		uint8_t c[8];
+		uint64_t v;
+	} u;
+	int le = 0, be = 0;
 
+	u.v = 0x12;
+	if (u.c[7] == 0x12)
+		be = 1;
+	else if (u.c[0] == 0x12)
+		le = 1;
+
+#if defined(FIO_LITTLE_ENDIAN)
+	if (be)
+		return 1;
+#elif defined(FIO_BIG_ENDIAN)
+	if (le)
+		return 1;
+#else
+	return 1;
+#endif
+
+	if (!le && !be)
+		return 1;
+
+	return 0;
+}
+
+int initialize_fio(char *envp[])
+{
+	long ps;
+
+	if (endian_check()) {
+		log_err("fio: endianness settings appear wrong.\n");
+		log_err("fio: please report this to fio@vger.kernel.org\n");
+		return 1;
+	}
+
+	arch_init(envp);
+
+	sinit();
+
+	/*
+	 * We need locale for number printing, if it isn't set then just
+	 * go with the US format.
+	 */
+	if (!getenv("LC_NUMERIC"))
+		setlocale(LC_NUMERIC, "en_US");
+
+	ps = sysconf(_SC_PAGESIZE);
+	if (ps < 0) {
+		log_err("Failed to get page size\n");
+		return 1;
+	}
+
+	page_size = ps;
+	page_mask = ps - 1;
+
+	fio_keywords_init();
+	return 0;
+}
