diff --git a/inc/Makefile.am b/inc/Makefile.am
index 05db39c4310193702ca810f17495b18996c2b293..afce1bebac2c09336e06f9c33c9fe37b09963a22 100644
--- a/inc/Makefile.am
+++ b/inc/Makefile.am
@@ -1,3 +1,3 @@
 nobase_include_HEADERS  = lektor/cmd.h lektor/commands.h lektor/config.h lektor/database.h
-nobase_include_HEADERS += lektor/mkv.h lektor/net.h lektor/reg.h lektor/thread.h lektor/uri.h
-nobase_include_HEADERS += lektor/bufferfd.h lektor/common.h lektor/queue.h lektor/stack.h
+nobase_include_HEADERS += lektor/mkv.h lektor/net.h lektor/reg.h lektor/uri.h lektor/common.h
+nobase_include_HEADERS += lektor/bufferfd.h lektor/queue.h
diff --git a/inc/Makefile.in b/inc/Makefile.in
index 336ca52215ca76b28dbb6d4635666ef8e1d966ca..d5666c2876542f6ad4f674631431253cbae47b64 100644
--- a/inc/Makefile.in
+++ b/inc/Makefile.in
@@ -304,8 +304,8 @@ top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 nobase_include_HEADERS = lektor/cmd.h lektor/commands.h \
 	lektor/config.h lektor/database.h lektor/mkv.h lektor/net.h \
-	lektor/reg.h lektor/thread.h lektor/uri.h lektor/bufferfd.h \
-	lektor/common.h lektor/queue.h lektor/stack.h
+	lektor/reg.h lektor/uri.h lektor/common.h lektor/bufferfd.h \
+	lektor/queue.h
 all: all-am
 
 .SUFFIXES:
diff --git a/inc/lektor/lktmodule.h b/inc/lektor/lktmodule.h
index 7ddba4bd4dfa0363d60cfdb4fa4bb30030f6e9ed..996cc2c624768e31ea1ec6dc2406a06b1a758ccd 100644
--- a/inc/lektor/lktmodule.h
+++ b/inc/lektor/lktmodule.h
@@ -11,14 +11,14 @@
 #include <lektor/database.h>
 #include <lektor/net.h>
 #include <lektor/reg.h>
-
-#include <lektor/thread.h> /* To be moved in module_repo... */
+#include <lektor/stack.h>
 
 /* Include source files, only do it once per module ! */
 #if defined(__LKT_MODULE_MAIN_SOURCE__) && ! defined(LKT_STATIC_MODULE)
-#include "../../../src/base/thread.c"
 #include "../../../src/base/common.c"
+#include "../../../src/base/stack.c"
 #include "../../../src/database/queue.c"
+#include "../../../src/module/thread.c"
 #endif /* __LKT_MODULE_MAIN_SOURCE__ && ! LKT_STATIC_MODULE*/
 
 #endif /* __LKT_LKTMODULE_H__ */
diff --git a/inc/lektor/net.h b/inc/lektor/net.h
index d74fa7c6b2fdaf9e0a10e99cc89bf3c4b771b959..4ec9c4f89fe62677cf233083548846d8714c7af2 100644
--- a/inc/lektor/net.h
+++ b/inc/lektor/net.h
@@ -5,7 +5,6 @@
 #include <lektor/queue.h>
 #include <lektor/mkv.h>
 #include <lektor/config.h>
-#include <lektor/thread.h>
 #include <lektor/reg.h>
 #include <lektor/uri.h>
 
diff --git a/src/Makefile.am b/src/Makefile.am
index cd8897b41aba37fc870198d6201f72e4d0c0b71f..81cf2669fae29d72843a349e228e52fa6de4b4e4 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -35,8 +35,7 @@ endif
 ## Lib lektor
 # Base sources
 liblektor_la_SOURCES  = base/bufferfd.c base/cmd.c base/common.c base/config.c
-liblektor_la_SOURCES += base/reg.c base/stack.c base/uri.c base/thread.c
-liblektor_la_SOURCES += base/commands.c
+liblektor_la_SOURCES += base/reg.c base/uri.c base/commands.c base/stack.c
 
 # Database sources
 liblektor_la_SOURCES += database/disk.c database/memory.c
@@ -58,6 +57,11 @@ liblektor_la_LDFLAGS += -lSDL2 -lmpv
 liblektor_la_LIBADD   = liblktmodsdl.la liblktmodrepo.la
 endif
 
+# TODO pour le Kubat du futur: c'est pas beau, trouver un truc pour que ça se fasse tout seul
+if LKT_STATIC_MODULE
+liblektor_la_SOURCES += module/thread.c
+endif
+
 # Generated with `xxd`
 database/disk.c: database/disk.sql
 	@echo '__attribute__((unused)) unsigned char ___src_database_disk_sql[] = { ' > $@
diff --git a/src/Makefile.in b/src/Makefile.in
index 58de5c7d2efdff00d6ecba75bf0222d7dcf6a1b7..31e9041c838020004e10a9d999f585c0e0c00d68 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -94,6 +94,9 @@ host_triplet = @host@
 @LKT_STATIC_MODULE_TRUE@am__append_3 = -static
 @LKT_STATIC_MODULE_FALSE@am__append_4 = -shared
 @LKT_STATIC_MODULE_TRUE@am__append_5 = -lSDL2 -lmpv
+
+# TODO pour le Kubat du futur: c'est pas beau, trouver un truc pour que ça se fasse tout seul
+@LKT_STATIC_MODULE_TRUE@am__append_6 = module/thread.c
 bin_PROGRAMS = lektord$(EXEEXT) lkt$(EXEEXT)
 subdir = src
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -142,14 +145,22 @@ am__uninstall_files_from_dir = { \
 LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES)
 @LKT_STATIC_MODULE_TRUE@liblektor_la_DEPENDENCIES = liblktmodsdl.la \
 @LKT_STATIC_MODULE_TRUE@	liblktmodrepo.la
+am__liblektor_la_SOURCES_DIST = base/bufferfd.c base/cmd.c \
+	base/common.c base/config.c base/reg.c base/uri.c \
+	base/commands.c base/stack.c database/disk.c database/memory.c \
+	database/open.c database/playlist.c database/queue.c \
+	database/stickers.c database/update.c database/user.c \
+	database/config.c database/find.c mkv/mkv.c mkv/utils.c \
+	mkv/write.c net/command.c net/listen.c net/message.c \
+	module/thread.c
 am__dirstamp = $(am__leading_dot)dirstamp
+@LKT_STATIC_MODULE_TRUE@am__objects_1 = module/liblektor_la-thread.lo
 am_liblektor_la_OBJECTS = base/liblektor_la-bufferfd.lo \
 	base/liblektor_la-cmd.lo base/liblektor_la-common.lo \
 	base/liblektor_la-config.lo base/liblektor_la-reg.lo \
-	base/liblektor_la-stack.lo base/liblektor_la-uri.lo \
-	base/liblektor_la-thread.lo base/liblektor_la-commands.lo \
-	database/liblektor_la-disk.lo database/liblektor_la-memory.lo \
-	database/liblektor_la-open.lo \
+	base/liblektor_la-uri.lo base/liblektor_la-commands.lo \
+	base/liblektor_la-stack.lo database/liblektor_la-disk.lo \
+	database/liblektor_la-memory.lo database/liblektor_la-open.lo \
 	database/liblektor_la-playlist.lo \
 	database/liblektor_la-queue.lo \
 	database/liblektor_la-stickers.lo \
@@ -157,7 +168,8 @@ am_liblektor_la_OBJECTS = base/liblektor_la-bufferfd.lo \
 	database/liblektor_la-config.lo database/liblektor_la-find.lo \
 	mkv/liblektor_la-mkv.lo mkv/liblektor_la-utils.lo \
 	mkv/liblektor_la-write.lo net/liblektor_la-command.lo \
-	net/liblektor_la-listen.lo net/liblektor_la-message.lo
+	net/liblektor_la-listen.lo net/liblektor_la-message.lo \
+	$(am__objects_1)
 liblektor_la_OBJECTS = $(am_liblektor_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -218,7 +230,6 @@ am__depfiles_remade = base/$(DEPDIR)/cmd.Po base/$(DEPDIR)/common.Po \
 	base/$(DEPDIR)/liblektor_la-config.Plo \
 	base/$(DEPDIR)/liblektor_la-reg.Plo \
 	base/$(DEPDIR)/liblektor_la-stack.Plo \
-	base/$(DEPDIR)/liblektor_la-thread.Plo \
 	base/$(DEPDIR)/liblektor_la-uri.Plo \
 	database/$(DEPDIR)/liblektor_la-config.Plo \
 	database/$(DEPDIR)/liblektor_la-disk.Plo \
@@ -233,6 +244,7 @@ am__depfiles_remade = base/$(DEPDIR)/cmd.Po base/$(DEPDIR)/common.Po \
 	main/$(DEPDIR)/server.Po mkv/$(DEPDIR)/liblektor_la-mkv.Plo \
 	mkv/$(DEPDIR)/liblektor_la-utils.Plo \
 	mkv/$(DEPDIR)/liblektor_la-write.Plo \
+	module/$(DEPDIR)/liblektor_la-thread.Plo \
 	module/$(DEPDIR)/liblktmodrepo_la-module_repo.Plo \
 	module/$(DEPDIR)/liblktmodrepo_la-worker.Plo \
 	module/$(DEPDIR)/liblktmodsdl_la-module_sdl2.Plo \
@@ -261,8 +273,9 @@ am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
 SOURCES = $(liblektor_la_SOURCES) $(liblktmodrepo_la_SOURCES) \
 	$(liblktmodsdl_la_SOURCES) $(lektord_SOURCES) $(lkt_SOURCES)
-DIST_SOURCES = $(liblektor_la_SOURCES) $(liblktmodrepo_la_SOURCES) \
-	$(liblktmodsdl_la_SOURCES) $(lektord_SOURCES) $(lkt_SOURCES)
+DIST_SOURCES = $(am__liblektor_la_SOURCES_DIST) \
+	$(liblktmodrepo_la_SOURCES) $(liblktmodsdl_la_SOURCES) \
+	$(lektord_SOURCES) $(lkt_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -443,12 +456,12 @@ liblktmodsdl_la_LIBADD = -lSDL2 -lmpv
 
 # Net sources
 liblektor_la_SOURCES = base/bufferfd.c base/cmd.c base/common.c \
-	base/config.c base/reg.c base/stack.c base/uri.c base/thread.c \
-	base/commands.c database/disk.c database/memory.c \
-	database/open.c database/playlist.c database/queue.c \
-	database/stickers.c database/update.c database/user.c \
-	database/config.c database/find.c mkv/mkv.c mkv/utils.c \
-	mkv/write.c net/command.c net/listen.c net/message.c
+	base/config.c base/reg.c base/uri.c base/commands.c \
+	base/stack.c database/disk.c database/memory.c database/open.c \
+	database/playlist.c database/queue.c database/stickers.c \
+	database/update.c database/user.c database/config.c \
+	database/find.c mkv/mkv.c mkv/utils.c mkv/write.c \
+	net/command.c net/listen.c net/message.c $(am__append_6)
 
 # Liblektor configuration
 liblektor_la_CFLAGS = -fPIC
@@ -620,14 +633,12 @@ base/liblektor_la-config.lo: base/$(am__dirstamp) \
 	base/$(DEPDIR)/$(am__dirstamp)
 base/liblektor_la-reg.lo: base/$(am__dirstamp) \
 	base/$(DEPDIR)/$(am__dirstamp)
-base/liblektor_la-stack.lo: base/$(am__dirstamp) \
-	base/$(DEPDIR)/$(am__dirstamp)
 base/liblektor_la-uri.lo: base/$(am__dirstamp) \
 	base/$(DEPDIR)/$(am__dirstamp)
-base/liblektor_la-thread.lo: base/$(am__dirstamp) \
-	base/$(DEPDIR)/$(am__dirstamp)
 base/liblektor_la-commands.lo: base/$(am__dirstamp) \
 	base/$(DEPDIR)/$(am__dirstamp)
+base/liblektor_la-stack.lo: base/$(am__dirstamp) \
+	base/$(DEPDIR)/$(am__dirstamp)
 database/$(am__dirstamp):
 	@$(MKDIR_P) database
 	@: > database/$(am__dirstamp)
@@ -678,15 +689,17 @@ net/liblektor_la-listen.lo: net/$(am__dirstamp) \
 	net/$(DEPDIR)/$(am__dirstamp)
 net/liblektor_la-message.lo: net/$(am__dirstamp) \
 	net/$(DEPDIR)/$(am__dirstamp)
-
-liblektor.la: $(liblektor_la_OBJECTS) $(liblektor_la_DEPENDENCIES) $(EXTRA_liblektor_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(liblektor_la_LINK) $(am_liblektor_la_rpath) $(liblektor_la_OBJECTS) $(liblektor_la_LIBADD) $(LIBS)
 module/$(am__dirstamp):
 	@$(MKDIR_P) module
 	@: > module/$(am__dirstamp)
 module/$(DEPDIR)/$(am__dirstamp):
 	@$(MKDIR_P) module/$(DEPDIR)
 	@: > module/$(DEPDIR)/$(am__dirstamp)
+module/liblektor_la-thread.lo: module/$(am__dirstamp) \
+	module/$(DEPDIR)/$(am__dirstamp)
+
+liblektor.la: $(liblektor_la_OBJECTS) $(liblektor_la_DEPENDENCIES) $(EXTRA_liblektor_la_DEPENDENCIES) 
+	$(AM_V_CCLD)$(liblektor_la_LINK) $(am_liblektor_la_rpath) $(liblektor_la_OBJECTS) $(liblektor_la_LIBADD) $(LIBS)
 module/liblktmodrepo_la-module_repo.lo: module/$(am__dirstamp) \
 	module/$(DEPDIR)/$(am__dirstamp)
 module/liblktmodrepo_la-worker.lo: module/$(am__dirstamp) \
@@ -750,7 +763,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@base/$(DEPDIR)/liblektor_la-config.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@base/$(DEPDIR)/liblektor_la-reg.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@base/$(DEPDIR)/liblektor_la-stack.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@base/$(DEPDIR)/liblektor_la-thread.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@base/$(DEPDIR)/liblektor_la-uri.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@database/$(DEPDIR)/liblektor_la-config.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@database/$(DEPDIR)/liblektor_la-disk.Plo@am__quote@ # am--include-marker
@@ -767,6 +779,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@mkv/$(DEPDIR)/liblektor_la-mkv.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@mkv/$(DEPDIR)/liblektor_la-utils.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@mkv/$(DEPDIR)/liblektor_la-write.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@module/$(DEPDIR)/liblektor_la-thread.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@module/$(DEPDIR)/liblktmodrepo_la-module_repo.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@module/$(DEPDIR)/liblktmodrepo_la-worker.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@module/$(DEPDIR)/liblktmodsdl_la-module_sdl2.Plo@am__quote@ # am--include-marker
@@ -840,13 +853,6 @@ base/liblektor_la-reg.lo: base/reg.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblektor_la_CFLAGS) $(CFLAGS) -c -o base/liblektor_la-reg.lo `test -f 'base/reg.c' || echo '$(srcdir)/'`base/reg.c
 
-base/liblektor_la-stack.lo: base/stack.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblektor_la_CFLAGS) $(CFLAGS) -MT base/liblektor_la-stack.lo -MD -MP -MF base/$(DEPDIR)/liblektor_la-stack.Tpo -c -o base/liblektor_la-stack.lo `test -f 'base/stack.c' || echo '$(srcdir)/'`base/stack.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) base/$(DEPDIR)/liblektor_la-stack.Tpo base/$(DEPDIR)/liblektor_la-stack.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='base/stack.c' object='base/liblektor_la-stack.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblektor_la_CFLAGS) $(CFLAGS) -c -o base/liblektor_la-stack.lo `test -f 'base/stack.c' || echo '$(srcdir)/'`base/stack.c
-
 base/liblektor_la-uri.lo: base/uri.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblektor_la_CFLAGS) $(CFLAGS) -MT base/liblektor_la-uri.lo -MD -MP -MF base/$(DEPDIR)/liblektor_la-uri.Tpo -c -o base/liblektor_la-uri.lo `test -f 'base/uri.c' || echo '$(srcdir)/'`base/uri.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) base/$(DEPDIR)/liblektor_la-uri.Tpo base/$(DEPDIR)/liblektor_la-uri.Plo
@@ -854,13 +860,6 @@ base/liblektor_la-uri.lo: base/uri.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblektor_la_CFLAGS) $(CFLAGS) -c -o base/liblektor_la-uri.lo `test -f 'base/uri.c' || echo '$(srcdir)/'`base/uri.c
 
-base/liblektor_la-thread.lo: base/thread.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblektor_la_CFLAGS) $(CFLAGS) -MT base/liblektor_la-thread.lo -MD -MP -MF base/$(DEPDIR)/liblektor_la-thread.Tpo -c -o base/liblektor_la-thread.lo `test -f 'base/thread.c' || echo '$(srcdir)/'`base/thread.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) base/$(DEPDIR)/liblektor_la-thread.Tpo base/$(DEPDIR)/liblektor_la-thread.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='base/thread.c' object='base/liblektor_la-thread.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblektor_la_CFLAGS) $(CFLAGS) -c -o base/liblektor_la-thread.lo `test -f 'base/thread.c' || echo '$(srcdir)/'`base/thread.c
-
 base/liblektor_la-commands.lo: base/commands.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblektor_la_CFLAGS) $(CFLAGS) -MT base/liblektor_la-commands.lo -MD -MP -MF base/$(DEPDIR)/liblektor_la-commands.Tpo -c -o base/liblektor_la-commands.lo `test -f 'base/commands.c' || echo '$(srcdir)/'`base/commands.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) base/$(DEPDIR)/liblektor_la-commands.Tpo base/$(DEPDIR)/liblektor_la-commands.Plo
@@ -868,6 +867,13 @@ base/liblektor_la-commands.lo: base/commands.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblektor_la_CFLAGS) $(CFLAGS) -c -o base/liblektor_la-commands.lo `test -f 'base/commands.c' || echo '$(srcdir)/'`base/commands.c
 
+base/liblektor_la-stack.lo: base/stack.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblektor_la_CFLAGS) $(CFLAGS) -MT base/liblektor_la-stack.lo -MD -MP -MF base/$(DEPDIR)/liblektor_la-stack.Tpo -c -o base/liblektor_la-stack.lo `test -f 'base/stack.c' || echo '$(srcdir)/'`base/stack.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) base/$(DEPDIR)/liblektor_la-stack.Tpo base/$(DEPDIR)/liblektor_la-stack.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='base/stack.c' object='base/liblektor_la-stack.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblektor_la_CFLAGS) $(CFLAGS) -c -o base/liblektor_la-stack.lo `test -f 'base/stack.c' || echo '$(srcdir)/'`base/stack.c
+
 database/liblektor_la-disk.lo: database/disk.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblektor_la_CFLAGS) $(CFLAGS) -MT database/liblektor_la-disk.lo -MD -MP -MF database/$(DEPDIR)/liblektor_la-disk.Tpo -c -o database/liblektor_la-disk.lo `test -f 'database/disk.c' || echo '$(srcdir)/'`database/disk.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) database/$(DEPDIR)/liblektor_la-disk.Tpo database/$(DEPDIR)/liblektor_la-disk.Plo
@@ -980,6 +986,13 @@ net/liblektor_la-message.lo: net/message.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblektor_la_CFLAGS) $(CFLAGS) -c -o net/liblektor_la-message.lo `test -f 'net/message.c' || echo '$(srcdir)/'`net/message.c
 
+module/liblektor_la-thread.lo: module/thread.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblektor_la_CFLAGS) $(CFLAGS) -MT module/liblektor_la-thread.lo -MD -MP -MF module/$(DEPDIR)/liblektor_la-thread.Tpo -c -o module/liblektor_la-thread.lo `test -f 'module/thread.c' || echo '$(srcdir)/'`module/thread.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) module/$(DEPDIR)/liblektor_la-thread.Tpo module/$(DEPDIR)/liblektor_la-thread.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='module/thread.c' object='module/liblektor_la-thread.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblektor_la_CFLAGS) $(CFLAGS) -c -o module/liblektor_la-thread.lo `test -f 'module/thread.c' || echo '$(srcdir)/'`module/thread.c
+
 module/liblktmodrepo_la-module_repo.lo: module/module_repo.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblktmodrepo_la_CFLAGS) $(CFLAGS) -MT module/liblktmodrepo_la-module_repo.lo -MD -MP -MF module/$(DEPDIR)/liblktmodrepo_la-module_repo.Tpo -c -o module/liblktmodrepo_la-module_repo.lo `test -f 'module/module_repo.c' || echo '$(srcdir)/'`module/module_repo.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) module/$(DEPDIR)/liblktmodrepo_la-module_repo.Tpo module/$(DEPDIR)/liblktmodrepo_la-module_repo.Plo
@@ -1171,7 +1184,6 @@ distclean: distclean-am
 	-rm -f base/$(DEPDIR)/liblektor_la-config.Plo
 	-rm -f base/$(DEPDIR)/liblektor_la-reg.Plo
 	-rm -f base/$(DEPDIR)/liblektor_la-stack.Plo
-	-rm -f base/$(DEPDIR)/liblektor_la-thread.Plo
 	-rm -f base/$(DEPDIR)/liblektor_la-uri.Plo
 	-rm -f database/$(DEPDIR)/liblektor_la-config.Plo
 	-rm -f database/$(DEPDIR)/liblektor_la-disk.Plo
@@ -1188,6 +1200,7 @@ distclean: distclean-am
 	-rm -f mkv/$(DEPDIR)/liblektor_la-mkv.Plo
 	-rm -f mkv/$(DEPDIR)/liblektor_la-utils.Plo
 	-rm -f mkv/$(DEPDIR)/liblektor_la-write.Plo
+	-rm -f module/$(DEPDIR)/liblektor_la-thread.Plo
 	-rm -f module/$(DEPDIR)/liblktmodrepo_la-module_repo.Plo
 	-rm -f module/$(DEPDIR)/liblktmodrepo_la-worker.Plo
 	-rm -f module/$(DEPDIR)/liblktmodsdl_la-module_sdl2.Plo
@@ -1249,7 +1262,6 @@ maintainer-clean: maintainer-clean-am
 	-rm -f base/$(DEPDIR)/liblektor_la-config.Plo
 	-rm -f base/$(DEPDIR)/liblektor_la-reg.Plo
 	-rm -f base/$(DEPDIR)/liblektor_la-stack.Plo
-	-rm -f base/$(DEPDIR)/liblektor_la-thread.Plo
 	-rm -f base/$(DEPDIR)/liblektor_la-uri.Plo
 	-rm -f database/$(DEPDIR)/liblektor_la-config.Plo
 	-rm -f database/$(DEPDIR)/liblektor_la-disk.Plo
@@ -1266,6 +1278,7 @@ maintainer-clean: maintainer-clean-am
 	-rm -f mkv/$(DEPDIR)/liblektor_la-mkv.Plo
 	-rm -f mkv/$(DEPDIR)/liblektor_la-utils.Plo
 	-rm -f mkv/$(DEPDIR)/liblektor_la-write.Plo
+	-rm -f module/$(DEPDIR)/liblektor_la-thread.Plo
 	-rm -f module/$(DEPDIR)/liblktmodrepo_la-module_repo.Plo
 	-rm -f module/$(DEPDIR)/liblktmodrepo_la-worker.Plo
 	-rm -f module/$(DEPDIR)/liblktmodsdl_la-module_sdl2.Plo
diff --git a/src/module/module_sdl2.c b/src/module/module_sdl2.c
index 5dfcd79046e0e48d98888bc1a061043954b3bca8..8825ee294c37f988e19ed897809e69ca7bfe34e9 100644
--- a/src/module/module_sdl2.c
+++ b/src/module/module_sdl2.c
@@ -4,6 +4,7 @@
 #include <lektor/lktmodule.h>
 
 #include "mpv.h"
+#include "thread.h"
 
 #include <sqlite3.h>
 #include <sched.h>
diff --git a/src/base/thread.c b/src/module/thread.c
similarity index 99%
rename from src/base/thread.c
rename to src/module/thread.c
index 0ef3bca850c6bb6dcd19f4ddc03d69b1194b1597..fb4a20c11a3eea77f1d6d03928e52143d9031a11 100644
--- a/src/base/thread.c
+++ b/src/module/thread.c
@@ -1,7 +1,6 @@
 #define _POSIX_C_SOURCE 200809L
 
 #include <lektor/common.h>
-#include <lektor/thread.h>
 #include <pthread.h>
 #include <sys/types.h>
 #include <stdlib.h>
@@ -9,6 +8,7 @@
 #include <stdio.h>
 #include <unistd.h>
 #include <string.h>
+#include "thread.h"
 
 struct __args {
     void *(*start)(struct poller_thread_arg *);
diff --git a/inc/lektor/thread.h b/src/module/thread.h
similarity index 95%
rename from inc/lektor/thread.h
rename to src/module/thread.h
index da681f162cf125a56e18c593bcd6c9f332de27bb..9f41398b31f02033d10538ef9535f63d99d6836c 100644
--- a/inc/lektor/thread.h
+++ b/src/module/thread.h
@@ -1,8 +1,7 @@
 #if ! defined(__LKT_THREAD_H__)
 #define __LKT_THREAD_H__
 
-#include <lektor/common.h>
-#include <lektor/stack.h>
+#include <lektor/lktmodule.h>
 #include <pthread.h>
 #include <sys/types.h>