diff --git a/Makefile.am b/Makefile.am
index 60811f1..6b81137 100644
--- a/Makefile.am
+++ b/Makefile.am
src_libshared_mainloop_la_SOURCES = $(shared_sources) \
src/shared/io-mainloop.c \
src/shared/timeout-mainloop.c \
- monitor/mainloop.h monitor/mainloop.c
+ src/shared/mainloop.h src/shared/mainloop.c
attrib_sources = attrib/att.h attrib/att-database.h attrib/att.c \
attrib/gatt.h attrib/gatt.c \
diff --git a/android/bluetoothd-snoop.c b/android/bluetoothd-snoop.c
index 776dca7..035875a 100644
--- a/android/bluetoothd-snoop.c
+++ b/android/bluetoothd-snoop.c
#include "lib/hci.h"
#include "lib/mgmt.h"
-#include "monitor/mainloop.h"
+#include "src/shared/mainloop.h"
#include "src/shared/btsnoop.h"
#include "src/log.h"
diff --git a/android/system-emulator.c b/android/system-emulator.c
index 4adc109..72dc5a0 100644
--- a/android/system-emulator.c
+++ b/android/system-emulator.c
#include <sys/types.h>
#include <sys/stat.h>
-#include "monitor/mainloop.h"
+#include "src/shared/mainloop.h"
static char exec_dir[PATH_MAX];
diff --git a/emulator/amp.c b/emulator/amp.c
index ab7f9de..8e10c99 100644
--- a/emulator/amp.c
+++ b/emulator/amp.c
#include <bluetooth/hci.h>
#include "src/shared/util.h"
-#include "monitor/mainloop.h"
+#include "src/shared/mainloop.h"
#include "monitor/bt.h"
#include "amp.h"
diff --git a/emulator/b1ee.c b/emulator/b1ee.c
index 3fb867d..1cb47d6 100644
--- a/emulator/b1ee.c
+++ b/emulator/b1ee.c
#include <bluetooth/bluetooth.h>
#include <bluetooth/hci.h>
-#include "monitor/mainloop.h"
+#include "src/shared/mainloop.h"
#define DEFAULT_SERVER "b1ee.com"
#define DEFAULT_HOST_PORT "45550" /* 0xb1ee */
diff --git a/emulator/hfp.c b/emulator/hfp.c
index 928a729..1edecb9 100644
--- a/emulator/hfp.c
+++ b/emulator/hfp.c
#include <sys/socket.h>
#include <sys/un.h>
-#include "monitor/mainloop.h"
+#include "src/shared/mainloop.h"
#include "src/shared/hfp.h"
static void hfp_debug(const char *str, void *user_data)
diff --git a/emulator/le.c b/emulator/le.c
index 30daa63..2a8fe46 100644
--- a/emulator/le.c
+++ b/emulator/le.c
#include "src/shared/util.h"
#include "src/shared/crypto.h"
#include "src/shared/ecc.h"
-#include "monitor/mainloop.h"
+#include "src/shared/mainloop.h"
#include "monitor/bt.h"
#include "phy.h"
diff --git a/emulator/main.c b/emulator/main.c
index f9857d0..56246a3 100644
--- a/emulator/main.c
+++ b/emulator/main.c
#include <stdbool.h>
#include <getopt.h>
-#include "monitor/mainloop.h"
+#include "src/shared/mainloop.h"
#include "serial.h"
#include "server.h"
#include "vhci.h"
diff --git a/emulator/phy.c b/emulator/phy.c
index 6852347..c63dc38 100644
--- a/emulator/phy.c
+++ b/emulator/phy.c
#include <time.h>
#include "src/shared/util.h"
-#include "monitor/mainloop.h"
+#include "src/shared/mainloop.h"
#include "phy.h"
diff --git a/emulator/serial.c b/emulator/serial.c
index 8b49dc6..844d85c 100644
--- a/emulator/serial.c
+++ b/emulator/serial.c
#include <bluetooth/bluetooth.h>
#include <bluetooth/hci.h>
-#include "monitor/mainloop.h"
+#include "src/shared/mainloop.h"
#include "btdev.h"
#include "serial.h"
diff --git a/emulator/server.c b/emulator/server.c
index c185edf..bdd481c 100644
--- a/emulator/server.c
+++ b/emulator/server.c
#include <bluetooth/bluetooth.h>
#include <bluetooth/hci.h>
-#include "monitor/mainloop.h"
+#include "src/shared/mainloop.h"
#include "btdev.h"
#include "server.h"
diff --git a/emulator/vhci.c b/emulator/vhci.c
index 2e35000..b32b1e6 100644
--- a/emulator/vhci.c
+++ b/emulator/vhci.c
#include <bluetooth/bluetooth.h>
#include <bluetooth/hci.h>
-#include "monitor/mainloop.h"
+#include "src/shared/mainloop.h"
#include "monitor/bt.h"
#include "btdev.h"
#include "vhci.h"
diff --git a/monitor/control.c b/monitor/control.c
index d9d6b44..c6ed03c 100644
--- a/monitor/control.c
+++ b/monitor/control.c
#include "src/shared/util.h"
#include "src/shared/btsnoop.h"
-#include "mainloop.h"
+#include "src/shared/mainloop.h"
+
#include "display.h"
#include "packet.h"
#include "hcidump.h"
diff --git a/monitor/hcidump.c b/monitor/hcidump.c
index 1515f93..13dc20b 100644
--- a/monitor/hcidump.c
+++ b/monitor/hcidump.c
#include <bluetooth/hci.h>
#include <bluetooth/hci_lib.h>
-#include "mainloop.h"
+#include "src/shared/mainloop.h"
+
#include "packet.h"
#include "hcidump.h"
diff --git a/monitor/main.c b/monitor/main.c
index f0922eb..de48db5 100644
--- a/monitor/main.c
+++ b/monitor/main.c
#include <string.h>
#include <getopt.h>
-#include "mainloop.h"
+#include "src/shared/mainloop.h"
+
#include "packet.h"
#include "lmp.h"
#include "keys.h"
diff --git a/src/shared/hci.c b/src/shared/hci.c
index 9ab8c6e..0db0146 100644
--- a/src/shared/hci.c
+++ b/src/shared/hci.c
#include <sys/uio.h>
#include "monitor/bt.h"
-#include "monitor/mainloop.h"
+#include "src/shared/mainloop.h"
#include "src/shared/io.h"
#include "src/shared/util.h"
#include "src/shared/queue.h"
diff --git a/src/shared/io-mainloop.c b/src/shared/io-mainloop.c
index 7f80d8f..4923710 100644
--- a/src/shared/io-mainloop.c
+++ b/src/shared/io-mainloop.c
#include <errno.h>
#include <sys/socket.h>
-#include "monitor/mainloop.h"
+#include "src/shared/mainloop.h"
#include "src/shared/util.h"
#include "src/shared/io.h"
diff --git a/monitor/mainloop.c b/src/shared/mainloop.c
similarity index 100%
rename from monitor/mainloop.c
rename to src/shared/mainloop.c
diff --git a/monitor/mainloop.h b/src/shared/mainloop.h
similarity index 100%
rename from monitor/mainloop.h
rename to src/shared/mainloop.h
diff --git a/src/shared/timeout-mainloop.c b/src/shared/timeout-mainloop.c
index 77aaa63..f099312 100644
--- a/src/shared/timeout-mainloop.c
+++ b/src/shared/timeout-mainloop.c
#include <stdlib.h>
-#include "monitor/mainloop.h"
-
+#include "mainloop.h"
#include "util.h"
#include "timeout.h"
diff --git a/tools/3dsp.c b/tools/3dsp.c
index 9f23d47..686fe13 100644
--- a/tools/3dsp.c
+++ b/tools/3dsp.c
#include <string.h>
#include <getopt.h>
-#include "monitor/mainloop.h"
#include "monitor/bt.h"
+#include "src/shared/mainloop.h"
#include "src/shared/timeout.h"
#include "src/shared/util.h"
#include "src/shared/hci.h"
diff --git a/tools/bluemoon.c b/tools/bluemoon.c
index 5e43107..650ab0c 100644
--- a/tools/bluemoon.c
+++ b/tools/bluemoon.c
#include <sys/stat.h>
#include <sys/param.h>
-#include "monitor/mainloop.h"
#include "monitor/bt.h"
+#include "src/shared/mainloop.h"
#include "src/shared/util.h"
#include "src/shared/hci.h"
diff --git a/tools/btattach.c b/tools/btattach.c
index bdbbe16..9957d36 100644
--- a/tools/btattach.c
+++ b/tools/btattach.c
#include <bluetooth/hci_lib.h>
#include "hciattach.h"
-#include "monitor/mainloop.h"
#include "monitor/bt.h"
+#include "src/shared/mainloop.h"
#include "src/shared/timeout.h"
#include "src/shared/util.h"
#include "src/shared/hci.h"
diff --git a/tools/btgatt-client.c b/tools/btgatt-client.c
index 8bda89b..75ea1ae 100644
--- a/tools/btgatt-client.c
+++ b/tools/btgatt-client.c
#include <bluetooth/l2cap.h>
#include "lib/uuid.h"
-#include "monitor/mainloop.h"
+#include "src/shared/mainloop.h"
#include "src/shared/util.h"
#include "src/shared/att.h"
#include "src/shared/queue.h"
diff --git a/tools/btgatt-server.c b/tools/btgatt-server.c
index d27cf10..5eab548 100644
--- a/tools/btgatt-server.c
+++ b/tools/btgatt-server.c
#include <bluetooth/l2cap.h>
#include "lib/uuid.h"
-#include "monitor/mainloop.h"
+#include "src/shared/mainloop.h"
#include "src/shared/util.h"
#include "src/shared/att.h"
#include "src/shared/queue.h"
diff --git a/tools/btinfo.c b/tools/btinfo.c
index b838c25..fd11ac4 100644
--- a/tools/btinfo.c
+++ b/tools/btinfo.c
#include <sys/ioctl.h>
#include <sys/socket.h>
-#include "monitor/mainloop.h"
#include "monitor/bt.h"
+#include "src/shared/mainloop.h"
#include "src/shared/timeout.h"
#include "src/shared/util.h"
#include "src/shared/hci.h"
diff --git a/tools/btmgmt.c b/tools/btmgmt.c
index 2f73f46..a1a1de7 100644
--- a/tools/btmgmt.c
+++ b/tools/btmgmt.c
#include "src/uuid-helper.h"
#include "lib/mgmt.h"
-#include "monitor/mainloop.h"
#include "client/display.h"
+#include "src/shared/mainloop.h"
#include "src/shared/io.h"
#include "src/shared/util.h"
#include "src/shared/mgmt.h"
diff --git a/tools/btproxy.c b/tools/btproxy.c
index 3503148..6c8f29b 100644
--- a/tools/btproxy.c
+++ b/tools/btproxy.c
#include <arpa/inet.h>
#include "src/shared/util.h"
-#include "monitor/mainloop.h"
+#include "src/shared/mainloop.h"
#include "monitor/bt.h"
#define BTPROTO_HCI 1
diff --git a/tools/cltest.c b/tools/cltest.c
index 0231805..6a19276 100644
--- a/tools/cltest.c
+++ b/tools/cltest.c
#include <bluetooth/hci_lib.h>
#include <bluetooth/l2cap.h>
-#include "monitor/mainloop.h"
+#include "src/shared/mainloop.h"
static bool send_message(const bdaddr_t *src, const bdaddr_t *dst,
uint16_t psm)
diff --git a/tools/ibeacon.c b/tools/ibeacon.c
index 28967de..9d48e66 100644
--- a/tools/ibeacon.c
+++ b/tools/ibeacon.c
#include <sys/ioctl.h>
#include <sys/socket.h>
-#include "monitor/mainloop.h"
#include "monitor/bt.h"
+#include "src/shared/mainloop.h"
#include "src/shared/timeout.h"
#include "src/shared/util.h"
#include "src/shared/hci.h"
diff --git a/tools/oobtest.c b/tools/oobtest.c
index 40f0376..7433690 100644
--- a/tools/oobtest.c
+++ b/tools/oobtest.c
#include "lib/bluetooth.h"
#include "lib/mgmt.h"
-#include "monitor/mainloop.h"
+#include "src/shared/mainloop.h"
#include "src/shared/util.h"
#include "src/shared/mgmt.h"