diff --git a/autogen.sh b/autogen.sh
index 0265b368aac8945bef556539de6c383ec3d0278e..b4aa34cc1c08c434ff5c7f31df654d8643d15bd7 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -2,10 +2,11 @@
 
 touch NEWS
 if [[ $(uname) == "Darwin" ]]; then
- glibtoolize
-else
- libtoolize
+	glibtoolize
+elif [[ $(uname) != "MINGW"* ]]; then
+	libtoolize
 fi
+
 aclocal
 autoconf
 automake --add-missing
diff --git a/configure.ac b/configure.ac
index 08ff4b7f1dc8b75b38f6b59aac0919b5636a634e..08d16aa1b59559a493084fb5e147f61f09395c37 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,8 +1,6 @@
-AC_INIT([radtel], [0.1], [armin.luntzer@univie.ac.at], [])
+AC_INIT([radtel], [0.0.1], [armin.luntzer@univie.ac.at], [])
 AM_INIT_AUTOMAKE([subdir-objects foreign dist-xz])
 
-LT_INIT([dlopen])
-
 AC_PROG_CC
 AC_CONFIG_MACRO_DIRS([m4])
 
@@ -23,9 +21,18 @@ case "${host_os}" in
         ;;
 esac
 
+dnl libootl sucks on windows (for our purpose), so we'll build
+dnl plugin dlls ourselves
+test x$IS_WINDOWS != xtrue && LT_INIT([dlopen])
+test x$IS_WINDOWS = xtrue && AC_PROG_RANLIB
+
+
 AM_CONDITIONAL([OS_WINDOWS], [test x$IS_WINDOWS = xtrue])
 AM_CONDITIONAL([OS_DARWIN],  [test x$IS_DARWIN = xtrue])
 
+
+
+
 AC_PATH_PROG(GLIB_COMPILE_RESOURCES, glib-compile-resources)
 GLIB_GSETTINGS
 
diff --git a/src/server/Makefile.am b/src/server/Makefile.am
index 8c3399af92766e7cc09ff7b6045b0f492024d345..a0f45d7dd918ce0c2cf4f707bc5e937bf4c0e39a 100644
--- a/src/server/Makefile.am
+++ b/src/server/Makefile.am
@@ -30,11 +30,10 @@ radtelsrv_LDADD += -L$(top_builddir)/src/server/api -lbackend
 radtelsrv_LDFLAGS := $(radtel_LIBS)
 radtelsrv_LDFLAGS += -lm
 
-# do we need this?
-#if OS_WINDOWS
-#radtelsrv_LDFLAGS += -Wl,--out-implib,libhost.a
-#radtelsrv_LDFLAGS += -Wl,--export-all-symbols
-#endif
+if OS_WINDOWS
+radtelsrv_LDFLAGS += -Wl,--out-implib,libhost.a
+radtelsrv_LDFLAGS += -Wl,--export-all-symbols
+endif
 
 
 
diff --git a/src/server/backend.c b/src/server/backend.c
index 3f1deff2139da4dbf2603cd91aafec444e5bebe9..112c1f472aa24298f850de0cd5452bd44e6d72d0 100644
--- a/src/server/backend.c
+++ b/src/server/backend.c
@@ -66,11 +66,11 @@ static int backend_load_module_from_prefix(const gchar *plugin_path)
 	void (*mod_init)(void);
 
 
-
+	g_message("Will try to load plugin from %s", plugin_path);
 	mod = g_module_open(plugin_path, G_MODULE_BIND_LAZY);
 
 	if(!mod) {
-		g_debug("Unable to load plugin %s: %s", plugin_path,
+		g_warning("Unable to load plugin %s: %s", plugin_path,
 							g_module_error());
 		return -1;
 	}
@@ -117,6 +117,15 @@ static int backend_load_module(const gchar *plugin_path)
 		return 0;
 
 
+	/* try again in lib/plugdir */
+	plug = g_strconcat("lib/", PLUGDIR, "/", plugin_path, NULL);
+	ret = backend_load_module_from_prefix(plug);
+	g_free(plug);
+
+	if (!ret)
+		return 0;
+
+
 	/* try again in system lib dir/plugdir */
 	plug = g_strconcat(LIBDIR, "/", PLUGDIR, "/", plugin_path, NULL);
 	ret = backend_load_module_from_prefix(plug);
diff --git a/src/server/backends/SIM/Makefile.am b/src/server/backends/SIM/Makefile.am
index 72e7478bce3e56863178e30f84d6759e137c6a9e..195b5fb08073c65feead0b62ee75f195e9d0f5d4 100644
--- a/src/server/backends/SIM/Makefile.am
+++ b/src/server/backends/SIM/Makefile.am
@@ -8,8 +8,8 @@ pluginconfdir = $(sysconfdir)/$(confdir)/backends
 pluginconf_DATA = $(top_builddir)/src/server/config/backends/rt_sim.cfg
 
 
-AM_CPPFLAGS := \-DCONFDIR=\"$(confdir)\" \
-	       \-DSYSCONFDIR=\"$(sysconfdir)\"
+AM_CPPFLAGS := -DCONFDIR=\"$(confdir)\" \
+	       -DSYSCONFDIR=\"$(sysconfdir)\"
 
 
 AM_CFLAGS := $(GMODULE_CFLAGS)
@@ -25,22 +25,54 @@ if !OS_DARWIN
 AM_CFLAGS += -fopenmp
 endif
 
+if !OS_WINDOWS
 
+#plugin_LTLIBRARIES = rt_sim.la
+#rt_sim_la_LDFLAGS := -avoid-version
+#rt_sim_la_LDFLAGS += -module
+#rt_sim_la_LDFLAGS += -shared
+#rt_sim_la_LDFLAGS += -export-dynamic
+#
+#rt_sim_la_LIBADD := -L$(top_builddir)/src/net/  -lproto
+#rt_sim_la_LIBADD += -L$(top_builddir)/src/util/ -lutil
+#rt_sim_la_LIBADD += $(GMODULE_LIBS)
+#rt_sim_la_LIBADD += $(GTHREAD_LIBS)
+#rt_sim_la_LIBADD += $(GLIB_LIBS)
+#rt_sim_la_LIBADD += $(GTK3_LIBS)
+#rt_sim_la_LIBADD += $(GIO_LIBS)
+#
+#rt_sim_la_SOURCES = rt_sim.c
 
-plugin_LTLIBRARIES = rt_sim.la
+else
 
-rt_sim_la_LDFLAGS := -avoid-version
-rt_sim_la_LDFLAGS += -module
-rt_sim_la_LDFLAGS += -shared
-rt_sim_la_LDFLAGS += -export-dynamic
+# libtool stinks on windows. Rather, windows dlls stink
+# I'll build my own! With Black Jack! And hookers!
 
-rt_sim_la_LIBADD := -L$(top_builddir)/src/net/  -lproto
-rt_sim_la_LIBADD += -L$(top_builddir)/src/util/ -lutil
-rt_sim_la_LIBADD += $(GMODULE_LIBS)
-rt_sim_la_LIBADD += $(GTHREAD_LIBS)
-rt_sim_la_LIBADD += $(GLIB_LIBS)
-rt_sim_la_LIBADD += $(GTK3_LIBS)
-rt_sim_la_LIBADD += $(GIO_LIBS)
+all: rt_sim.dll
+
+SUFFIXES = .dll
+CLEANFILES = *.dll
+
+AM_CFLAGS += -Wl,-no-undefined
+AM_CFLAGS += -Wl,--unresolved-symbols=ignore-all
+AM_CFLAGS += -Wl,--enable-runtime-pseudo-reloc
+AM_CFLAGS += -shared
+AM_CFLAGS += -fPIC
+
+AM_LDFLAGS := -L$(top_builddir)/src/net/  -lproto
+AM_LDFLAGS += -L$(top_builddir)/src/util/ -lutil
+AM_LDFLAGS += $(GMODULE_LIBS)
+AM_LDFLAGS += $(GTHREAD_LIBS)
+AM_LDFLAGS += $(GLIB_LIBS)
+AM_LDFLAGS += $(GTK3_LIBS)
+AM_LDFLAGS += $(GIO_LIBS)
+AM_LDFLAGS += -L$(top_builddir)/src/server -lhost
+
+
+plugin_DATA = $(top_builddir)/src/server/backends/SIM/rt_sim.dll
+
+%.dll: %.c
+	$(CC) $(AM_CPPFLAGS) $(AM_CFLAGS) -I $(top_srcdir)/include -o $@  $< $(AM_LDFLAGS)
+endif
 
-rt_sim_la_SOURCES = rt_sim.c
 
diff --git a/src/server/cfg.c b/src/server/cfg.c
index 9743ecdc28da2a0370ab77fc35221920da82eaf7..c457a83cd6edff89de1c7c9a22db3e9eb292c883 100644
--- a/src/server/cfg.c
+++ b/src/server/cfg.c
@@ -187,10 +187,14 @@ static int server_load_config_from_prefix(const gchar *prefix, GError **err)
 	gchar *cfg;
 
 
+
 	kf = g_key_file_new();
 	flags = G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS;
 
 	cfg = g_strconcat(prefix, "server.cfg", NULL);
+
+	g_message("Will try to load config from %s", cfg);
+
 	ret = g_key_file_load_from_file(kf, cfg, flags, err);
 
 
@@ -240,6 +244,14 @@ int server_cfg_load(void)
 		g_free(prefix);
 	}
 
+	if (ret) {
+		g_clear_error(&error);
+		/* try again in confdir */
+		prefix = g_strconcat("etc/", CONFDIR, "/", NULL);
+		ret = server_load_config_from_prefix(prefix, &error);
+		g_free(prefix);
+	}
+
 	if (ret) {
 		g_clear_error(&error);
 		/* try again in sysconfdir */