diff --git a/src/server/config.c b/src/common/config.c
similarity index 99%
rename from src/server/config.c
rename to src/common/config.c
index 4630b582e2e12eca4fba234fa973c16bc19b0584..2328a885debf7d36905a4d19047b505e987d39a1 100644
--- a/src/server/config.c
+++ b/src/common/config.c
@@ -9,7 +9,7 @@
  */
 #include <stdio.h>
 #include <stdlib.h>
-#include "common.h"
+#include "config.h"
 #include <regex.h>
 #include <string.h>
 #include <ctype.h>
diff --git a/src/common/config.h b/src/common/config.h
new file mode 100644
index 0000000000000000000000000000000000000000..1e7583ed91a03fe1588bdfa97950ed3b4d8f2628
--- /dev/null
+++ b/src/common/config.h
@@ -0,0 +1,32 @@
+/*
+ * OpenDispense2
+ *
+ * This code is published under the terms of the Acess licence.
+ * See the file COPYING for details.
+ *
+ * config.h - Config Header
+ */
+#ifndef _CONFIG_H_
+#define _CONFIG_H_
+
+#include <regex.h>
+extern void	CompileRegex(regex_t *Regex, const char *Pattern, int Flags);
+extern int	RunRegex(regex_t *regex, const char *string, int nMatches, regmatch_t *matches, const char *errorMessage);
+
+// === HELPER MACROS ===
+#define _EXPSTR(x)      #x
+#define EXPSTR(x)       _EXPSTR(x)
+
+#define ASSERT(cnd) do{if(!(cnd)){fprintf(stderr, "ASSERT failed at "__FILE__":"EXPSTR(__LINE__)" - "EXPSTR(cnd)"\n");exit(-1);}}while(0)
+
+
+
+// --- Config Database ---
+extern void	Config_ParseFile(const char *Filename);
+extern void	Config_AddValue(const char *Key, const char *Value);
+extern int	Config_GetValueCount(const char *KeyName);
+extern const char	*Config_GetValue(const char *KeyName, int Index);
+extern int	Config_GetValue_Bool(const char *KeyName, int Index);
+extern int	Config_GetValue_Int(const char *KeyName, int Index);
+
+#endif
diff --git a/src/server/Makefile b/src/server/Makefile
index f2ca96826b8f27f96f8d2ab9bf419fd9512cddd8..dcd6f0d10d70d05994e21756eb233c5f093fa445 100644
--- a/src/server/Makefile
+++ b/src/server/Makefile
@@ -29,10 +29,16 @@ install: $(BIN)
 $(BIN): $(OBJ)
 	$(CC) -o $(BIN) $(OBJ) $(LINKFLAGS)
 
-obj/%.o: %.c
+obj/%.o: %.c 
 	@mkdir -p $(dir $@)
 	$(CC) -c $< -o $@ $(CFLAGS) $(CPPFLAGS)
 	@cpp $< -MM -MF $@.d
 	
+
+obj/%.o: ../common/%.c 
+	@mkdir -p $(dir $@)
+	$(CC) -c $< -o $@ $(CFLAGS) $(CPPFLAGS)
+	@cpp $< -MM -MF $@.d
+
 -include $(DEPFILES)
 
diff --git a/src/server/common.h b/src/server/common.h
index 8a804972fff38e6b1707084e75da0e031ae4b5e8..1bdca84275dc4ad392bce589b0c536d00f9f9ffe 100644
--- a/src/server/common.h
+++ b/src/server/common.h
@@ -17,12 +17,8 @@
 #define	DEFAULT_ITEM_FILE	"/etc/opendispense/items.cfg"
 
 // === HELPER MACROS ===
-#define _EXPSTR(x)	#x
-#define EXPSTR(x)	_EXPSTR(x)
 
-#define UNUSED(var)	unused__##var __attribute__((__unused__))
-
-#define ASSERT(cnd) do{if(!(cnd)){fprintf(stderr, "ASSERT failed at "__FILE__":"EXPSTR(__LINE__)" - "EXPSTR(cnd)"\n");exit(-1);}}while(0)
+#define UNUSED(var)    unused__##var __attribute__((__unused__))
 
 // === STRUCTURES ===
 typedef struct sItem	tItem;
@@ -103,12 +99,4 @@ extern void	Log_Info(const char *Format, ...);
 #define Debug_Notice(msg, v...)	fprintf(stderr, "%08llun: "msg"\n", (unsigned long long)time(NULL) ,##v)
 #define Debug_Debug(msg, v...)	fprintf(stderr, "%08llud: "msg"\n", (unsigned long long)time(NULL) ,##v)
 
-// --- Config Database ---
-extern void	Config_ParseFile(const char *Filename);
-extern void	Config_AddValue(const char *Key, const char *Value);
-extern int	Config_GetValueCount(const char *KeyName);
-extern const char	*Config_GetValue(const char *KeyName, int Index);
-extern int	Config_GetValue_Bool(const char *KeyName, int Index);
-extern int	Config_GetValue_Int(const char *KeyName, int Index);
-
 #endif
diff --git a/src/server/handler_coke.c b/src/server/handler_coke.c
index ff051c8400b283f9a4239b85f824784bd03220e4..b9a9cf3271bbbd6e0a30e8441d7eee1ef165855b 100644
--- a/src/server/handler_coke.c
+++ b/src/server/handler_coke.c
@@ -11,6 +11,7 @@
  * - Remember, the coke machine echoes your text back to you!
  */
 #include "common.h"
+#include "../common/config.h"
 #include <stdio.h>
 #include <string.h>
 #include <stdarg.h>
diff --git a/src/server/main.c b/src/server/main.c
index 284002b487ac66315c5392300576ff05ba376a3d..c8be473bace3a469b9c03c5c953362281c021124 100644
--- a/src/server/main.c
+++ b/src/server/main.c
@@ -21,6 +21,7 @@
 #include <syslog.h>
 #include <pthread.h>
 #include "../cokebank.h"
+#include "../common/config.h"
 
 // === IMPORTS ===
 extern void	Init_Handlers(void);
diff --git a/src/server/server.c b/src/server/server.c
index c41cc2c30e899ce1ccca3a56ebca1a0b2450dc74..11846bb21fceb1836dba743e28f60e3bdfbddd76 100644
--- a/src/server/server.c
+++ b/src/server/server.c
@@ -10,6 +10,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include "common.h"
+#include "../common/config.h"
 #include <sys/socket.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>