diff --git a/src/Makefile.am b/src/Makefile.am
index ec38babb819b2aec2493ad33d77ed432a57d4549..d6d74872338487caa3179884cb6581093d997466 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -3,11 +3,6 @@ bin_PROGRAMS = knotc
 libexec_PROGRAMS = knot-zoneparser unittests
 sbin_PROGRAMS = knotd
 
-# FIXME: Move header files to $(topdir)/include
-AM_CFLAGS =		\
-	-D_XOPEN_SOURCE=600 \
-	-D_GNU_SOURCE
-
 # $(YACC) will generate header file
 AM_YFLAGS = -d
 
diff --git a/src/alloc/malloc.c b/src/alloc/malloc.c
index 8af86b666f0b7cd70c9dce11b1e1a33fde20d77c..f8a2618aef9ad17e908ca83f95605b94fb02b075 100644
--- a/src/alloc/malloc.c
+++ b/src/alloc/malloc.c
@@ -1,6 +1,4 @@
-#include "config.h"
-#include "other/debug.h"
-
+#include <config.h>
 /*
  * Skip unit if not debugging memory.
  */
@@ -9,6 +7,9 @@
 #include <string.h>
 #include <sys/resource.h>
 
+#include "common.h"
+#include "other/debug.h"
+
 #ifdef MEM_DEBUG
 /*
  * ((destructor)) attribute executes this function after main().
diff --git a/src/alloc/malloc.h b/src/alloc/malloc.h
index 48c8aaafea17320672be2f1a0f8f00f8534530db..1c1807987efefa79eb1b9767de23063bfb613b97 100644
--- a/src/alloc/malloc.h
+++ b/src/alloc/malloc.h
@@ -13,7 +13,7 @@
 #define __CUTEDNS_MALLOC_H__
 
 #include <stdlib.h>
-#include "debug.h"
+#include "other/debug.h"
 
 /*! \brief Print usage statistics.
  *
diff --git a/src/alloc/slab.c b/src/alloc/slab.c
index 22430c2085fa1d761c8fe008606b020592304f14..1177be71c1e720f55009b1f2e827271499fd7224 100644
--- a/src/alloc/slab.c
+++ b/src/alloc/slab.c
@@ -1,11 +1,13 @@
+#include <config.h>
 #include <stdio.h>
 #include <unistd.h>
 #include <string.h>
 #include <assert.h>
 #include <stdlib.h>
 #include <sys/mman.h>
-#include "slab.h"
+
 #include "common.h"
+#include "slab.h"
 
 
 /* Magic constants.
diff --git a/src/common.h b/src/common.h
index c35f3510698ec41effaf7b02d875235a97e888e1..d21e2f55b33ad1fb85595cb92e7c19c1ae9df0b4 100644
--- a/src/common.h
+++ b/src/common.h
@@ -14,7 +14,6 @@
 
 #include <signal.h>
 #include <stdint.h>
-#include "config.h"
 
 /* Common types and constants.
  */
diff --git a/src/ctl/knotc_main.c b/src/ctl/knotc_main.c
index b477cba576c1cedcbd978dd24c7b3a96f3826958..80214a4ac18b870a4ef3f7f7081d024f52b63409 100644
--- a/src/ctl/knotc_main.c
+++ b/src/ctl/knotc_main.c
@@ -1,10 +1,11 @@
+#include <config.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
 #include <string.h>
 
 #include "common.h"
-#include "process.h"
+#include "ctl/process.h"
 
 enum Constants {
 	WAITPID_TIMEOUT = 10
diff --git a/src/ctl/process.c b/src/ctl/process.c
index d9526ae9036894b0428324906ec32f898f055b7f..b78ff68ece1dd235fbce2fbba5297786d3551901 100644
--- a/src/ctl/process.c
+++ b/src/ctl/process.c
@@ -1,10 +1,12 @@
+#include <config.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <ctype.h>
 #include <errno.h>
 #include <string.h>
 
-#include "process.h"
+#include "common.h"
+#include "ctl/process.h"
 #include "other/log.h"
 
 char* pid_filename()
diff --git a/src/dnslib/consts.h b/src/dnslib/consts.h
index 642c191029ce4f713ed2a2aab6a61ef4511e4ec2..2ee4ecef06d1f74b3a6760d63eb5532c37e3a3e0 100644
--- a/src/dnslib/consts.h
+++ b/src/dnslib/consts.h
@@ -13,7 +13,7 @@
 #define _CUTEDNS_DNSLIB_CONSTS_H_
 
 #include <stdint.h>
-#include "descriptor.h"
+#include "dnslib/descriptor.h"
 
 /*
  * OPCODEs
diff --git a/src/dnslib/debug.c b/src/dnslib/debug.c
index 2a0bee5703efa6e7be03e45b165303a1f1afb64d..1cdb1b4fc06c089fb4310cbe1236d0cf792430ee 100644
--- a/src/dnslib/debug.c
+++ b/src/dnslib/debug.c
@@ -1,9 +1,11 @@
+#include <config.h>
 #include <stdio.h>
 #include <stdint.h>
 #include <assert.h>
 #include <stdlib.h>
 
-#include "debug.h"
+#include "common.h"
+#include "dnslib/debug.h"
 #include "dnslib/dnslib.h"
 
 void dnslib_rdata_dump(dnslib_rdata_t *rdata, uint32_t type, char loaded_zone)
diff --git a/src/dnslib/descriptor.c b/src/dnslib/descriptor.c
index 77c57842addd54232af5f83496a3f28ae447e0d5..49476d8e6c8b908c656b0e7cfd7860ec56a509dd 100644
--- a/src/dnslib/descriptor.c
+++ b/src/dnslib/descriptor.c
@@ -1,3 +1,4 @@
+#include <config.h>
 #include <stdlib.h>
 #include <string.h>
 #include <stdio.h>
@@ -7,7 +8,8 @@
 #include <sys/types.h>
 
 //#include "descriptor.h"
-#include "dnslib.h"
+#include "common.h"
+#include "dnslib/dnslib.h"
 
 enum desclen { DNSLIB_RRTYPE_DESCRIPTORS_LENGTH = 32770 }; // used to be 101
 
diff --git a/src/dnslib/descriptor.h b/src/dnslib/descriptor.h
index 229c226fff83944825336dff1631513393297ad4..b7bdf83bc9813595d02a97ddf3ab4b8e8414145c 100644
--- a/src/dnslib/descriptor.h
+++ b/src/dnslib/descriptor.h
@@ -15,8 +15,6 @@
 #include <stdint.h>
 #include <stdbool.h>
 
-#include "common.h"
-
 enum mxrdtln {
 	DNSLIB_MAX_RDATA_ITEMS = 64,
 	DNSLIB_MAX_RDATA_ITEM_SIZE = 255,
diff --git a/src/dnslib/dname.c b/src/dnslib/dname.c
index 5a473d6bbdd6d603e7de5442bf7948642387421f..9bd3c94640017e14592e52677f89474e08948919 100644
--- a/src/dnslib/dname.c
+++ b/src/dnslib/dname.c
@@ -1,4 +1,4 @@
-#include "config.h"
+#include <config.h>
 #include <stdint.h>
 #include <stdlib.h>
 #include <assert.h>
diff --git a/src/dnslib/dname.h b/src/dnslib/dname.h
index f20921d9dadccf00d5b46bb3a6e5d48c8ebf8dde..123b0b51e58777dc2f20c0181477ddfdeb7d55b5 100644
--- a/src/dnslib/dname.h
+++ b/src/dnslib/dname.h
@@ -13,8 +13,6 @@
 
 #include <stdint.h>
 
-#include "common.h"
-
 struct dnslib_node;
 
 /*----------------------------------------------------------------------------*/
diff --git a/src/dnslib/dnslib.h b/src/dnslib/dnslib.h
index 88045d8864b4c0db04d9644bc92865fe8c7b4510..8f673dff2f9281fbb3d3988ab469148b10956b2d 100644
--- a/src/dnslib/dnslib.h
+++ b/src/dnslib/dnslib.h
@@ -10,18 +10,18 @@
 #ifndef __DNSLIB_H__
 #define __DNSLIB_H__
 
-#include "consts.h"
-#include "descriptor.h"
-#include "dname.h"
-#include "edns.h"
-#include "node.h"
-#include "packet.h"
-#include "rdata.h"
-#include "response.h"
-#include "rrset.h"
-#include "rrsig.h"
-#include "zone.h"
-#include "zonedb.h"
+#include "dnslib/consts.h"
+#include "dnslib/descriptor.h"
+#include "dnslib/dname.h"
+#include "dnslib/edns.h"
+#include "dnslib/node.h"
+#include "dnslib/packet.h"
+#include "dnslib/rdata.h"
+#include "dnslib/response.h"
+#include "dnslib/rrset.h"
+#include "dnslib/rrsig.h"
+#include "dnslib/zone.h"
+#include "dnslib/zonedb.h"
 
 #endif
 
diff --git a/src/dnslib/edns.h b/src/dnslib/edns.h
index b980507f457ec874891296cef45eb1da6980844d..e7f438a936fc87a7c3aac9e09902f6310473e692 100644
--- a/src/dnslib/edns.h
+++ b/src/dnslib/edns.h
@@ -14,7 +14,7 @@
 
 #include <stdint.h>
 
-#include "utils.h"
+#include "dnslib/utils.h"
 
 enum dnslib_edns_offsets {
 	DNSLIB_EDNS_OFFSET_PAYLOAD = 3,
diff --git a/src/dnslib/node.c b/src/dnslib/node.c
index bed0afa343ae0c66e0aec7249cb6fd0113fd56e7..3b0bf321c6f5562dcd04c12ed241859239caf4cb 100644
--- a/src/dnslib/node.c
+++ b/src/dnslib/node.c
@@ -1,8 +1,9 @@
+#include <config.h>
 #include <malloc.h>
 
-#include "node.h"
 #include "common.h"
-#include "rrset.h"
+#include "dnslib/node.h"
+#include "dnslib/rrset.h"
 
 /*----------------------------------------------------------------------------*/
 
diff --git a/src/dnslib/rdata.c b/src/dnslib/rdata.c
index 5998e04a261488b0d8239546212ee36fa3166bbd..5eb52dc539163076416ad1a923d303d1449407d3 100644
--- a/src/dnslib/rdata.c
+++ b/src/dnslib/rdata.c
@@ -1,12 +1,13 @@
+#include <config.h>
 #include <stdint.h>
 #include <stdlib.h>
 #include <assert.h>
 #include <string.h>
 
-#include "rdata.h"
 #include "common.h"
-#include "descriptor.h"
-#include "dname.h"
+#include "dnslib/rdata.h"
+#include "dnslib/descriptor.h"
+#include "dnslib/dname.h"
 
 /*----------------------------------------------------------------------------*/
 /* Non-API functions                                                          */
diff --git a/src/dnslib/rdata.h b/src/dnslib/rdata.h
index 42e914fbaa793ebc6c8923055aae496c3586214e..7b128c20d1f1a778f18eaf80bb2a7e5a4b0958ea 100644
--- a/src/dnslib/rdata.h
+++ b/src/dnslib/rdata.h
@@ -15,8 +15,7 @@
 
 #include <stdint.h>
 
-#include "dname.h"
-#include "common.h"
+#include "dnslib/dname.h"
 
 /*----------------------------------------------------------------------------*/
 /*!
diff --git a/src/dnslib/response.c b/src/dnslib/response.c
index b07d180f16891995ecdadbfce5b547cc4ebecd95..09364f646efc36d9aa62146c1fe42e2fb7fcf83e 100644
--- a/src/dnslib/response.c
+++ b/src/dnslib/response.c
@@ -1,14 +1,15 @@
+#include <config.h>
 #include <stdlib.h>
 #include <stdint.h>
 #include <assert.h>
 
-#include "response.h"
-#include "rrset.h"
 #include "common.h"
-#include "packet.h"
-#include "descriptor.h"
-#include "edns.h"
-#include "utils.h"
+#include "dnslib/response.h"
+#include "dnslib/rrset.h"
+#include "dnslib/packet.h"
+#include "dnslib/descriptor.h"
+#include "dnslib/edns.h"
+#include "dnslib/utils.h"
 
 enum {
 	DEFAULT_ANCOUNT = 6,
diff --git a/src/dnslib/response.h b/src/dnslib/response.h
index 23c87c27b02e819c5f945da293431943d7d43c6c..c379a08cc20fb1793397e2440ced346b796842c2 100644
--- a/src/dnslib/response.h
+++ b/src/dnslib/response.h
@@ -17,8 +17,8 @@
 #include <stdint.h>
 #include <string.h>
 
-#include "dname.h"
-#include "rrset.h"
+#include "dnslib/dname.h"
+#include "dnslib/rrset.h"
 
 /*!
  * \brief Default maximum DNS response size
diff --git a/src/dnslib/rrset.c b/src/dnslib/rrset.c
index 6af0c1793da53f14c85ec71f5c810c01fd9b14ae..5a00755ff76a9a21a36f72cc3766cf736813767d 100644
--- a/src/dnslib/rrset.c
+++ b/src/dnslib/rrset.c
@@ -1,10 +1,11 @@
+#include <config.h>
 #include <stdint.h>
 #include <malloc.h>
 #include <assert.h>
 
-#include "rrset.h"
-#include "descriptor.h"
 #include "common.h"
+#include "dnslib/rrset.h"
+#include "dnslib/descriptor.h"
 
 dnslib_rrset_t *dnslib_rrset_new(dnslib_dname_t *owner, uint16_t type, 
 				 uint16_t rclass, uint32_t ttl)
diff --git a/src/dnslib/rrset.h b/src/dnslib/rrset.h
index 7c9b1eed5ade2175b27c9f78f18220197e5748b8..277a69ad0de6f5f2cfdf0d2819a2399bd788fd8c 100644
--- a/src/dnslib/rrset.h
+++ b/src/dnslib/rrset.h
@@ -14,10 +14,9 @@
 
 #include <stdint.h>
 
-#include "dname.h"
-#include "rdata.h"
-#include "common.h"
-#include "rrsig.h"
+#include "dnslib/dname.h"
+#include "dnslib/rdata.h"
+#include "dnslib/rrsig.h"
 
 /*----------------------------------------------------------------------------*/
 /*!
diff --git a/src/dnslib/rrsig.c b/src/dnslib/rrsig.c
index 3eb32f042daacab3d49d3c15b92522e9bf23a51c..512a1fc29e66d1c0205550c4142aa0ca71dae8cf 100644
--- a/src/dnslib/rrsig.c
+++ b/src/dnslib/rrsig.c
@@ -1,8 +1,9 @@
+#include <config.h>
 #include <stdlib.h>
 
-#include "rrsig.h"
 #include "common.h"
-#include "descriptor.h"
+#include "dnslib/rrsig.h"
+#include "dnslib/descriptor.h"
 
 /*----------------------------------------------------------------------------*/
 
diff --git a/src/dnslib/rrsig.h b/src/dnslib/rrsig.h
index 5efe1f6f40ff825b2f10c861958255abbd6b3f84..e91ce3578bb2f92109e8d439941efc01670b3c5e 100644
--- a/src/dnslib/rrsig.h
+++ b/src/dnslib/rrsig.h
@@ -14,9 +14,8 @@
 
 #include <stdint.h>
 
-#include "dname.h"
-#include "rdata.h"
-#include "common.h"
+#include "dnslib/dname.h"
+#include "dnslib/rdata.h"
 
 /*----------------------------------------------------------------------------*/
 /*!
diff --git a/src/dnslib/utils.c b/src/dnslib/utils.c
index c20b7f329cf88a3643a8cdd1d330712158cdbd28..2c50a314353d961dc8280cd586fd1b58114da864 100644
--- a/src/dnslib/utils.c
+++ b/src/dnslib/utils.c
@@ -1,6 +1,8 @@
+#include <config.h>
 #include <string.h>
 
-#include "utils.h"
+#include "common.h"
+#include "dnslib/utils.h"
 
 dnslib_lookup_table_t *dnslib_lookup_by_name(dnslib_lookup_table_t *table,
                                              const char *name)
diff --git a/src/dnslib/utils.h b/src/dnslib/utils.h
index ad71250f58668da7724974959d5f68bbfeb10286..4ba4bebfe5ce8ae86dca19aea1d9638a0be93831 100644
--- a/src/dnslib/utils.h
+++ b/src/dnslib/utils.h
@@ -12,7 +12,6 @@
 #ifndef _CUTEDNS_DNSLIB_UTILS_H_
 #define _CUTEDNS_DNSLIB_UTILS_H_
 
-#include <stdint.h>
 #include <string.h>
 
 /*!
diff --git a/src/dnslib/zone-dump.c b/src/dnslib/zone-dump.c
index 5995221ca0eb9a20cb2b5d5f933e1f7854bdd384..f37bd0a50642c9a9d5dcf6664f0b3521274d650f 100644
--- a/src/dnslib/zone-dump.c
+++ b/src/dnslib/zone-dump.c
@@ -1,8 +1,9 @@
-#include "config.h"
+#include <config.h>
 #include <stdio.h>
 #include <stdint.h>
 #include <assert.h>
 
+#include "common.h"
 #include "dnslib/zone-dump.h"
 #include "dnslib/dnslib.h"
 #include "lib/skip-list.h"
diff --git a/src/dnslib/zone-dump.h b/src/dnslib/zone-dump.h
index 24bf71919fb9cf80f8156a3cd8e96122801b14b9..05e99babd299a8f0201b7386175a32cb1a99cbc5 100644
--- a/src/dnslib/zone-dump.h
+++ b/src/dnslib/zone-dump.h
@@ -12,7 +12,7 @@
 #ifndef _CUTEDNS_DNSLIB_ZONEDUMP_H_
 #define _CUTEDNS_DNSLIB_ZONEDUMP_H_
 
-#include "zone.h"
+#include "dnslib/zone.h"
 
 /*!
  * \brief Dumps given zone to binary file.
diff --git a/src/dnslib/zone-load.c b/src/dnslib/zone-load.c
index cc447270ec788ef12411afb7beebd6df8f7a7f54..7718986420ddf06f0594d8ded2bc5ad45715d77a 100644
--- a/src/dnslib/zone-load.c
+++ b/src/dnslib/zone-load.c
@@ -1,13 +1,14 @@
+#include <config.h>
 #include <assert.h>
 #include <malloc.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 
-#include "zone-load.h"
-#include "dnslib/dnslib.h"
 #include "common.h"
-#include "debug.h"
+#include "dnslib/zone-load.h"
+#include "dnslib/dnslib.h"
+#include "dnslib/debug.h"
 
 /* \note Contents of dump file:
  * MAGIC(cutexx) NUMBER_OF_NORMAL_NODES NUMBER_OF_NSEC3_NODES
diff --git a/src/dnslib/zone.c b/src/dnslib/zone.c
index f96f35b8fe2dfed30bd80964d6ba900c525a5291..3a11e11a7ce2e6155d391223013d7047b4b59170 100644
--- a/src/dnslib/zone.c
+++ b/src/dnslib/zone.c
@@ -1,4 +1,4 @@
-#include "config.h"
+#include <config.h>
 #include <stdlib.h>
 #include <assert.h>
 
diff --git a/src/dnslib/zonedb.c b/src/dnslib/zonedb.c
index f3ba1c8dbbc12dbcf5019df0ddb23030caab5332..9b6a205f49501fa20b2747e75ffd6990f707ac00 100644
--- a/src/dnslib/zonedb.c
+++ b/src/dnslib/zonedb.c
@@ -1,4 +1,4 @@
-#include "config.h"
+#include <config.h>
 #include <stdlib.h>
 #include <assert.h>
 
diff --git a/src/hash/cuckoo-hash-table.c b/src/hash/cuckoo-hash-table.c
index f7b86c1221807d520241a3d5c2c8a1b4512e3fa3..e3940113cba0e327ed8c26ff28f230d967abad34 100644
--- a/src/hash/cuckoo-hash-table.c
+++ b/src/hash/cuckoo-hash-table.c
@@ -1,4 +1,4 @@
-#include "config.h"
+#include <config.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
diff --git a/src/hash/cuckoo-hash-table.h b/src/hash/cuckoo-hash-table.h
index 69992e56e04f971bf614cf031d38022c33315a4a..941637c2391780945dc37a1eee024501d70c8961 100644
--- a/src/hash/cuckoo-hash-table.h
+++ b/src/hash/cuckoo-hash-table.h
@@ -25,7 +25,6 @@
 #include <stdlib.h> /* size_t */
 #include <pthread.h>
 
-#include "common.h"
 #include "hash/universal-system.h"
 #include "lib/dynamic-array.h"
 
diff --git a/src/hash/hash-functions.c b/src/hash/hash-functions.c
index 43887f27fd8bbe4f46ad0e449c89ccc294cc845f..ea50f83b32a919256ed286fda50e310c08bf0317 100644
--- a/src/hash/hash-functions.c
+++ b/src/hash/hash-functions.c
@@ -1,3 +1,5 @@
+#include <config.h>
+#include "common.h"
 #include "hash-functions.h"
 
 /*--------------------------------- FNV HASH ---------------------------------*/
diff --git a/src/hash/universal-system.c b/src/hash/universal-system.c
index 4aae628d8cf54a006396cca9b557fa7549a0f0ce..f8024ea443d897f47aedbb87f5bf880d2648b121 100644
--- a/src/hash/universal-system.c
+++ b/src/hash/universal-system.c
@@ -1,3 +1,4 @@
+#include <config.h>
 #include <limits.h>
 #include <stdint.h>
 #include <time.h>
@@ -5,6 +6,7 @@
 #include <stdlib.h>
 #include <assert.h>
 
+#include "common.h"
 #include "universal-system.h"
 
 /*----------------------------------------------------------------------------*/
diff --git a/src/hash/universal-system.h b/src/hash/universal-system.h
index 83be6bec72f925954e23c445d44e02eb2cadaf31..684b403adaccc9b45d514466d179b1c75ced1be8 100644
--- a/src/hash/universal-system.h
+++ b/src/hash/universal-system.h
@@ -28,8 +28,6 @@
 
 #include <stdint.h>
 
-#include "common.h"
-
 enum { US_FNC_COUNT = 4 };
 
 /*----------------------------------------------------------------------------*/
diff --git a/src/lib/bitset.c b/src/lib/bitset.c
index f7bafe486728e7f90931dcf603a955ccf0655559..204fdc3af3a08c8ea19eed90ce7721b4022cc78e 100644
--- a/src/lib/bitset.c
+++ b/src/lib/bitset.c
@@ -1,8 +1,11 @@
-#include "bitset.h"
+#include <config.h>
 #include <assert.h>
 #include <string.h>
 #include <stdlib.h>
 
+#include "common.h"
+#include "bitset.h"
+
 #define WORD_SIZE 32
 #define WORD_CHECK 31
 
diff --git a/src/lib/dynamic-array.c b/src/lib/dynamic-array.c
index 138aefd8b5449c26be3e7bc3fd8ff1293080b66a..ea416a4414f8106d701781eff2475fa2a1a69d10 100644
--- a/src/lib/dynamic-array.c
+++ b/src/lib/dynamic-array.c
@@ -1,10 +1,12 @@
+#include <config.h>
 #include <pthread.h>
 #include <assert.h>
 #include <stdio.h>
 
 #include <urcu.h>
 
-#include "dynamic-array.h"
+#include "common.h"
+#include "lib/dynamic-array.h"
 
 /*----------------------------------------------------------------------------*/
 /* Private functions                                                          */
diff --git a/src/lib/dynamic-array.h b/src/lib/dynamic-array.h
index 30367e822623bbc82562d9a1ba9f0a90a3eeda45..c598a630a48a2a38112fbec74a65a4acdb9fccf4 100644
--- a/src/lib/dynamic-array.h
+++ b/src/lib/dynamic-array.h
@@ -18,8 +18,6 @@
 #include <string.h>
 #include <pthread.h>
 
-#include "common.h"
-
 /*----------------------------------------------------------------------------*/
 /*!
  * \brief Dynamic array structure.
diff --git a/src/lib/skip-list.c b/src/lib/skip-list.c
index befd9a9661653ade5d20675e46ba12df912c4649..fc5c391e7cc0ffc7604457f5e1cd01c6f8fb8a6a 100644
--- a/src/lib/skip-list.c
+++ b/src/lib/skip-list.c
@@ -28,14 +28,15 @@ Retrieved from: http://en.literateprograms.org/Skip_list_(C)?oldid=12811
  * Modifications by Lubos Slovak, 2010
  */
 
+#include <config.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <time.h>
 #include <string.h>
 #include <assert.h>
 
-#include "skip-list.h"
 #include "common.h"
+#include "skip-list.h"
 
 /*----------------------------------------------------------------------------*/
 
diff --git a/src/main.c b/src/main.c
index 3fe55866f4b5f3d5d6f58a8bae38a782430b044f..4a8cd8f1e09f3748fc608e7a86dad5ddc4f9102b 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1,4 +1,4 @@
-#include "config.h"
+#include <config.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
diff --git a/src/other/log.c b/src/other/log.c
index c9f860bdddb4cfd484850ebec9f3e817bcb2f9cb..ce915aa13182471612dd933202a0df0589d77b3a 100644
--- a/src/other/log.c
+++ b/src/other/log.c
@@ -1,8 +1,9 @@
+#include <config.h>
 #include <stdarg.h>
 #include <stdio.h>
 
-#include "other/log.h"
 #include "common.h"
+#include "other/log.h"
 
 /// Global log-level.
 static int _LOG_OPEN = 0;
diff --git a/src/other/print.c b/src/other/print.c
index 757c8b4834da274c7b08b3644a1bc108e4432017..114753a79ddbda9e5c305b3f35d3a1fed60a68b2 100644
--- a/src/other/print.c
+++ b/src/other/print.c
@@ -1,5 +1,7 @@
+#include <config.h>
 #include <stdio.h>
 
+#include "common.h"
 #include "print.h"
 
 void hex_printf(const char *data, int length, printf_t print_handler)
diff --git a/src/server/dthreads.c b/src/server/dthreads.c
index c1a7d80ee19b32e966ed86bc96185b82f9c8b0d9..fad9827ba2089cbd6c7906df4d707e3d19129bea 100644
--- a/src/server/dthreads.c
+++ b/src/server/dthreads.c
@@ -1,3 +1,4 @@
+#include <config.h>
 #include <signal.h>
 #include <stdlib.h>
 #include <string.h>
@@ -5,8 +6,8 @@
 #include <unistd.h>
 #include <errno.h>
 
-#include "dthreads.h"
 #include "common.h"
+#include "dthreads.h"
 #include "other/log.h"
 
 /* Lock thread state for R/W. */
diff --git a/src/server/name-server.c b/src/server/name-server.c
index e6206f5ffd5de4056eef0bcdc1e6996bec73dd21..b5266995ac76227a9683fe9d0973161825872a8c 100644
--- a/src/server/name-server.c
+++ b/src/server/name-server.c
@@ -1,9 +1,10 @@
-#include "config.h"
+#include <config.h>
 #include <stdio.h>
 #include <assert.h>
 
 #include <urcu.h>
 
+#include "common.h"
 #include "server/name-server.h"
 #include "stat/stat.h"
 #include "dnslib/dnslib.h"
diff --git a/src/server/name-server.h b/src/server/name-server.h
index d83e123cb6c31411746d2034ec444d9657ed1bc3..42ec5c5e988e322473b2cc92b395169486cec0ea 100644
--- a/src/server/name-server.h
+++ b/src/server/name-server.h
@@ -20,10 +20,8 @@
 #ifndef _CUTEDNS_NAME_SERVER_H_
 #define _CUTEDNS_NAME_SERVER_H_
 
-#include "config.h"
 #include <stdint.h>
 
-#include "common.h"
 #include "dnslib/zonedb.h"
 
 /*----------------------------------------------------------------------------*/
diff --git a/src/server/server.c b/src/server/server.c
index b95756d2511e9fa9f2894abec6544719af749fee..c0e2e429531af73a00057a5c24c58b5b39c43080 100644
--- a/src/server/server.c
+++ b/src/server/server.c
@@ -1,8 +1,9 @@
-#include "config.h"
+#include <config.h>
 #include <unistd.h>
 #include <stdio.h>
 #include <stdlib.h>
 
+#include "common.h"
 #include "other/debug.h"
 #include "server/server.h"
 #include "server/udp-handler.h"
diff --git a/src/server/server.h b/src/server/server.h
index 7f29e7bbaa672ba1bcd818285c161603bef87895..5b445b866bc9ae039e779818d6636bb3bccf335f 100644
--- a/src/server/server.h
+++ b/src/server/server.h
@@ -19,7 +19,6 @@
 #ifndef _CUTEDNS_SERVER_H_
 #define _CUTEDNS_SERVER_H_
 
-#include "common.h"
 #include "server/name-server.h"
 #include "server/socket.h"
 #include "server/dthreads.h"
diff --git a/src/server/socket.c b/src/server/socket.c
index b4c42b937bea09e18e8ad11a2706b97edffba9da..adc88788daf3b8dfb569381b2202a4b538962bf6 100644
--- a/src/server/socket.c
+++ b/src/server/socket.c
@@ -1,3 +1,4 @@
+#include <config.h>
 #include <stdlib.h>
 #include <unistd.h>
 #include <fcntl.h>
@@ -9,6 +10,7 @@
 #include <netinet/in.h>
 #include <arpa/inet.h>
 
+#include "common.h"
 #include "socket.h"
 
 int socket_create(int family, int type)
diff --git a/src/server/socket.h b/src/server/socket.h
index e781e53f035db45bd43f11236fff941ddfcca955..5b4414d3b9f0033052ee319d8efa628296972c94 100644
--- a/src/server/socket.h
+++ b/src/server/socket.h
@@ -18,8 +18,6 @@
 /* POSIX only. */
 #include <sys/socket.h>
 
-#include "common.h"
-
 /*! \brief Socket-related constants. */
 enum {
 	SOCKET_MTU_SZ = 8192,  /*!< \todo Determine UDP MTU size. */
diff --git a/src/server/tcp-handler.c b/src/server/tcp-handler.c
index 3be7d10b93cdf655791c185f24cca03296d91e96..cfbb5a9edbd6262ecb95a44ed0a6e6870a8d6294 100644
--- a/src/server/tcp-handler.c
+++ b/src/server/tcp-handler.c
@@ -1,4 +1,4 @@
-#include "config.h"
+#include <config.h>
 #include <unistd.h>
 #include <fcntl.h>
 #include <errno.h>
@@ -10,6 +10,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 
+#include "common.h"
 #include "server/tcp-handler.h"
 #include "server/name-server.h"
 #include "stat/stat.h"
diff --git a/src/server/tcp-handler.h b/src/server/tcp-handler.h
index a2b888f98db06320f708b30c10c40b648898bd21..40bda8033dac54502de899c85f219eb06a252296 100644
--- a/src/server/tcp-handler.h
+++ b/src/server/tcp-handler.h
@@ -16,9 +16,9 @@
 #ifndef _CUTEDNS_TCPHANDLER_H_
 #define _CUTEDNS_TCPHANDLER_H_
 
-#include "socket.h"
-#include "server.h"
-#include "dthreads.h"
+#include "server/socket.h"
+#include "server/server.h"
+#include "server/dthreads.h"
 
 
 /*!
diff --git a/src/server/udp-handler.c b/src/server/udp-handler.c
index b1632ffc588168ea362f06fbe0a03c88d8487f3a..97997f9920ec965d145898412643c2d4540a3e40 100644
--- a/src/server/udp-handler.c
+++ b/src/server/udp-handler.c
@@ -1,4 +1,4 @@
-#include "config.h"
+#include <config.h>
 #include <time.h>
 #include <unistd.h>
 #include <errno.h>
@@ -8,6 +8,7 @@
 #include <string.h>
 #include <assert.h>
 
+#include "common.h"
 #include "server/udp-handler.h"
 #include "server/name-server.h"
 #include "stat/stat.h"
diff --git a/src/server/udp-handler.h b/src/server/udp-handler.h
index d3edb4bcac898649443e20fa76938d8c99fc261f..6546ec9348b44802fee3f889c8751e7ce332b3be 100644
--- a/src/server/udp-handler.h
+++ b/src/server/udp-handler.h
@@ -16,9 +16,9 @@
 #ifndef _CUTEDNS_UDPHANDLER_H_
 #define _CUTEDNS_UDPHANDLER_H_
 
-#include "socket.h"
-#include "server.h"
-#include "dthreads.h"
+#include "server/socket.h"
+#include "server/server.h"
+#include "server/dthreads.h"
 
 /*!
  * \brief UDP handler thread runnable.
diff --git a/src/stat/gatherer.c b/src/stat/gatherer.c
index 764ffddf5a5de51c4758a9f562427afa030b34aa..70a8369419f83ed42688f071f510490e92763eaf 100644
--- a/src/stat/gatherer.c
+++ b/src/stat/gatherer.c
@@ -1,8 +1,9 @@
+#include <config.h>
 #include <pthread.h>
 
-#include "malloc.h"
-#include "gatherer.h"
 #include "common.h"
+#include "alloc/malloc.h"
+#include "stat/gatherer.h"
 
 gatherer_t *new_gatherer()
 {
diff --git a/src/stat/gatherer.h b/src/stat/gatherer.h
index ce626b599cddb5f13b17c8f45c3a8d5945d449c2..fb63ae9f8634aebdcfcdb512cb568810c1efb2b6 100644
--- a/src/stat/gatherer.h
+++ b/src/stat/gatherer.h
@@ -14,8 +14,6 @@
 
 #include <stdint.h>
 
-#include "common.h"
-
 /* The bigger this number, the better the performance of hashing. */
 enum fbs { FREQ_BUFFER_SIZE = 100000 };
 
diff --git a/src/stat/stat.c b/src/stat/stat.c
index f6a554489bd83aad1fef9fa93b627686d0d302bf..26c2b66a18c3bae303fb43c2b92ed1018e553c47 100644
--- a/src/stat/stat.c
+++ b/src/stat/stat.c
@@ -1,3 +1,4 @@
+#include <config.h>
 #include <time.h>
 #include <pthread.h>
 #include <unistd.h>
@@ -8,9 +9,9 @@
 #include <string.h>
 #include <stdlib.h>
 
-#include "stat.h"
-#include "gatherer.h"
 #include "common.h"
+#include "stat/stat.h"
+#include "stat/gatherer.h"
 
 #ifdef STAT_COMPILE
 
diff --git a/src/stat/stat.h b/src/stat/stat.h
index 0345e745c9f32547c6a177accb1b737eef6bdf89..3124fe5785dc4ca13db631c29c6a917045c05f30 100644
--- a/src/stat/stat.h
+++ b/src/stat/stat.h
@@ -20,7 +20,6 @@
 #include <netinet/in.h>
 
 #include "gatherer.h"
-#include "common.h"
 
 #ifdef STAT_COMPILE
 #define STAT_INIT(x) x = stat_new()
diff --git a/src/tests/cuckoo_tests.c b/src/tests/cuckoo_tests.c
index 1b66b453b7397fdeb4e2ef9acde402881abd5365..0dbd57bc47eaadbbe50d540c2ffecf1727b230dd 100644
--- a/src/tests/cuckoo_tests.c
+++ b/src/tests/cuckoo_tests.c
@@ -1,4 +1,3 @@
-#include "config.h"
 #include "tests/tap_unit.h"
 
 #define CT_TEST_REHASH
@@ -7,7 +6,6 @@
 #include <assert.h>
 
 #include "hash/cuckoo-hash-table.h"
-#include "common.h"
 
 //#define CK_TEST_DEBUG
 //#define CK_TEST_LOOKUP
diff --git a/src/tests/da_tests.c b/src/tests/da_tests.c
index 728a26b2cdf6bc9e27c928ff848238b27e65973a..1b36d236dfa530bcb6bcb1d86ac03ba16ce8a357 100644
--- a/src/tests/da_tests.c
+++ b/src/tests/da_tests.c
@@ -1,4 +1,3 @@
-#include "config.h"
 #include "tests/tap_unit.h"
 #include "lib/dynamic-array.h"
 #include <unistd.h>
diff --git a/src/tests/dnslib_tests.c b/src/tests/dnslib_tests.c
index e7dd6f0cc11aa50890b010e74fde09893a875ee0..482190fea417bbe91c5428723bdaa42aab70809c 100644
--- a/src/tests/dnslib_tests.c
+++ b/src/tests/dnslib_tests.c
@@ -1,7 +1,3 @@
-#include "config.h"
-#include "common.h"
-#include "tests/tap_unit.h"
-
 #include "tests/dnslib/dnslib_dname_tests.c"
 #include "tests/dnslib/dnslib_rdata_tests.c"
 #include "tests/dnslib/dnslib_node_tests.c"
diff --git a/src/tests/dthreads_tests.c b/src/tests/dthreads_tests.c
index 4bcf752c79d049db935b658e7ef398f491f51757..69249f2f40326dca7ad05cb9c00bd95a59c3c096 100644
--- a/src/tests/dthreads_tests.c
+++ b/src/tests/dthreads_tests.c
@@ -1,4 +1,3 @@
-#include "config.h"
 #include "server/dthreads.h"
 #include "tests/tap_unit.h"
 #include <sys/select.h>
diff --git a/src/tests/libtap/tap.c b/src/tests/libtap/tap.c
index 9ab175e9de50d801d9b0e3aaca586f8703c5a80f..0ada03372d7d512d1c58d24234d77ef1b274978c 100644
--- a/src/tests/libtap/tap.c
+++ b/src/tests/libtap/tap.c
@@ -1,7 +1,10 @@
+#include <config.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdarg.h>
 #include <string.h>
+
+#include "common.h"
 #include "tap.h"
 
 static int expected_tests = NO_PLAN;
diff --git a/src/tests/skiplist_tests.c b/src/tests/skiplist_tests.c
index 099e2347117e9f95fcb31aa6e88e0cce147f4e9d..89ec7f3095ff6132e4886f0708dd049efa54e139 100644
--- a/src/tests/skiplist_tests.c
+++ b/src/tests/skiplist_tests.c
@@ -1,7 +1,6 @@
-#include "config.h"
+#include <time.h>
 #include "tests/tap_unit.h"
 #include "lib/skip-list.h"
-#include <time.h>
 
 static int skiplist_tests_count(int argc, char *argv[]);
 static int skiplist_tests_run(int argc, char *argv[]);
diff --git a/src/tests/slab_tests.c b/src/tests/slab_tests.c
index 9cd2c37a90d6f4a85ec09ddc194cbb4e08318f96..525bd4fa328fd58c929907c155d5fc6e4b418e2c 100644
--- a/src/tests/slab_tests.c
+++ b/src/tests/slab_tests.c
@@ -1,4 +1,3 @@
-#include "config.h"
 #include <unistd.h>
 #include <stdlib.h>
 #include <time.h>
diff --git a/src/tests/unittests_main.c b/src/tests/unittests_main.c
index 9088778426a5b508b3ac6a222e5821a84493829d..138aa167887037c78ceccb88c8223eada4552d56 100644
--- a/src/tests/unittests_main.c
+++ b/src/tests/unittests_main.c
@@ -1,6 +1,6 @@
-#include "config.h"
-#include "tests/tap_unit.h"
+#include <config.h>
 #include "common.h"
+#include "tests/tap_unit.h"
 
 // Units to test
 #include "skiplist_tests.c"
diff --git a/src/tests/zonedb_tests.c b/src/tests/zonedb_tests.c
index 26bd3ea0ce3ea096b5d0b17a80b97980d2aeba7f..74479f0c6406e426cdbe708340beba11b259fac5 100644
--- a/src/tests/zonedb_tests.c
+++ b/src/tests/zonedb_tests.c
@@ -1,6 +1,3 @@
-#include "config.h"
-#include "tests/tap_unit.h"
-
 static int zonedb_tests_count(int argc, char *argv[]);
 static int zonedb_tests_run(int argc, char *argv[]);
 
diff --git a/src/zoneparser/parser-descriptor.c b/src/zoneparser/parser-descriptor.c
index cdf828d540dd1846c3bf7d21596a4666031951b0..9990c3c0b7f6c8a62581a40726ea5ca49dd6f47f 100644
--- a/src/zoneparser/parser-descriptor.c
+++ b/src/zoneparser/parser-descriptor.c
@@ -1,3 +1,4 @@
+#include <config.h>
 #include <stdlib.h>
 #include <string.h>
 #include <stdio.h>
@@ -6,9 +7,11 @@
 #include <string.h>
 #include <sys/types.h>
 
-#include "parser-descriptor.h"
+#include "common.h"
+#include "zoneparser/parser-descriptor.h"
 /* TODO this has to be removed - move tokens to separate file */
-#include "zoneparser.h"
+#include "zoneparser/zoneparser.h"
+/* FIXME: Generate .y and .l to zoneparser/ */
 #include "zparser.h"
 
 enum desclen { PARSER_RRTYPE_DESCRIPTORS_LENGTH = 32770 }; // used to be 101
diff --git a/src/zoneparser/parser-descriptor.h b/src/zoneparser/parser-descriptor.h
index cb21d6290ad68401a7c62bb016edd2c5052bf811..ee002aa08a2320a25e3704971b53fb85152ec834 100644
--- a/src/zoneparser/parser-descriptor.h
+++ b/src/zoneparser/parser-descriptor.h
@@ -16,7 +16,6 @@
 #include <stdbool.h>
 
 #include "dnslib/utils.h"
-#include "common.h"
 
 enum parser_mxrdtln {
 	PARSER_MAX_RDATA_ITEMS = 64,
diff --git a/src/zoneparser/parser-util.c b/src/zoneparser/parser-util.c
index 4ed5dc9243686a744acd30dd2356917c121dc0ef..bf5a1bbd25eeee11bd3d037172003d6e0b6e7c6a 100644
--- a/src/zoneparser/parser-util.c
+++ b/src/zoneparser/parser-util.c
@@ -11,6 +11,7 @@
  * @{
  */
 
+#include <config.h>
 #include <assert.h>
 #include <fcntl.h>
 #include <ctype.h>
@@ -24,6 +25,7 @@
 #include <netinet/in.h>
 #include <netdb.h>
 
+#include "common.h"
 #include "zoneparser/parser-util.h"
 #include "zoneparser/zoneparser.h"
 #include "dnslib/descriptor.h"
diff --git a/src/zoneparser/zoneparser.c b/src/zoneparser/zoneparser.c
index f9773426e77e58cae2d6000e1cb4cd8acfd5dff4..5f1c175d0c257b80755b92aa34ed9453e2863400 100644
--- a/src/zoneparser/zoneparser.c
+++ b/src/zoneparser/zoneparser.c
@@ -12,6 +12,7 @@
  * @{
  */
 
+#include <config.h>
 #include <assert.h>
 #include <fcntl.h>
 #include <ctype.h>
diff --git a/src/zoneparser/zoneparser_main.c b/src/zoneparser/zoneparser_main.c
index 12c24a219f9d5ae3b9dc1822d63291bcaa959533..da6dadc7af9ddf026483e20f210f56f281a3dcb7 100644
--- a/src/zoneparser/zoneparser_main.c
+++ b/src/zoneparser/zoneparser_main.c
@@ -1,6 +1,8 @@
+#include <config.h>
 #include <unistd.h>
 #include <stdlib.h>
-#include "zoneparser.h"
+#include "common.h"
+#include "zoneparser/zoneparser.h"
 
 static void help(int argc, char **argv)
 {