diff --git a/Knot.files b/Knot.files
index b1d3cab0d29e4ff535b2582c79617fb219b0bfd3..1ec69e387a02cd5cba3438fcaeacc0119acff1cf 100644
--- a/Knot.files
+++ b/Knot.files
@@ -135,6 +135,12 @@ src/knot/stat/gatherer.h
 src/knot/stat/stat-common.h
 src/knot/stat/stat.c
 src/knot/stat/stat.h
+src/knot/updates/changesets.c
+src/knot/updates/changesets.h
+src/knot/updates/ddns.c
+src/knot/updates/ddns.h
+src/knot/updates/xfr-in.c
+src/knot/updates/xfr-in.h
 src/knot/zone/estimator.c
 src/knot/zone/estimator.h
 src/knot/zone/node.c
@@ -208,12 +214,6 @@ src/libknot/tsig-op.c
 src/libknot/tsig-op.h
 src/libknot/tsig.c
 src/libknot/tsig.h
-src/libknot/updates/changesets.c
-src/libknot/updates/changesets.h
-src/libknot/updates/ddns.c
-src/libknot/updates/ddns.h
-src/libknot/updates/xfr-in.c
-src/libknot/updates/xfr-in.h
 src/libknot/util/debug.c
 src/libknot/util/debug.h
 src/libknot/util/endian.h
diff --git a/src/Makefile.am b/src/Makefile.am
index 3a58b54f58593dd13a09fb4ae3ed153e29bbf09d..189b25c7355f6a444bd6eda818936e8fba4a8565 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -114,12 +114,6 @@ libknot_la_SOURCES =				\
 	libknot/packet/compr.c			\
 	libknot/packet/compr.h			\
 	libknot/packet/wire.h			\
-	libknot/updates/changesets.h		\
-	libknot/updates/changesets.c		\
-	libknot/updates/xfr-in.h		\
-	libknot/updates/xfr-in.c		\
-	libknot/updates/ddns.h			\
-	libknot/updates/ddns.c			\
 	libknot/dname.c				\
 	libknot/consts.h			\
 	libknot/edns.h				\
@@ -282,6 +276,12 @@ libknotd_la_SOURCES =				\
 	knot/stat/stat-common.h			\
 	knot/stat/stat.c			\
 	knot/stat/stat.h			\
+	knot/updates/changesets.h		\
+	knot/updates/changesets.c		\
+	knot/updates/xfr-in.h			\
+	knot/updates/xfr-in.c			\
+	knot/updates/ddns.h			\
+	knot/updates/ddns.c			\
 	knot/zone/estimator.c			\
 	knot/zone/estimator.h			\
 	knot/zone/semantic-check.c		\
diff --git a/src/knot/nameserver/name-server.c b/src/knot/nameserver/name-server.c
index 06bd381989405f4b0618ce30aeeb9dc6919d5725..87fc01b03eca9fee4b1725216750dfe752bcc12a 100644
--- a/src/knot/nameserver/name-server.c
+++ b/src/knot/nameserver/name-server.c
@@ -22,7 +22,7 @@
 #include <urcu.h>
 
 #include "knot/nameserver/name-server.h"
-#include "libknot/updates/xfr-in.h"
+#include "knot/updates/xfr-in.h"
 
 #include "libknot/libknot.h"
 #include "common/errcode.h"
@@ -32,8 +32,8 @@
 #include "libknot/packet/pkt.h"
 #include "libknot/consts.h"
 #include "common/descriptor.h"
-#include "libknot/updates/changesets.h"
-#include "libknot/updates/ddns.h"
+#include "knot/updates/changesets.h"
+#include "knot/updates/ddns.h"
 #include "libknot/tsig-op.h"
 #include "libknot/rdata.h"
 #include "libknot/dnssec/random.h"
diff --git a/src/knot/nameserver/name-server.h b/src/knot/nameserver/name-server.h
index 47c5256b462b91ca59a81a9ea81ad2be48731fa5..83d8f60e6bf4919992070f110748f13b5cde060f 100644
--- a/src/knot/nameserver/name-server.h
+++ b/src/knot/nameserver/name-server.h
@@ -46,7 +46,7 @@
 #include "libknot/packet/pkt.h"
 #include "common/sockaddr.h"
 #include "common/lists.h"
-#include "libknot/updates/changesets.h"
+#include "knot/updates/changesets.h"
 
 struct conf_t;
 struct server_t;
diff --git a/src/knot/nameserver/update.c b/src/knot/nameserver/update.c
index 6d4b4393dcb4657281c9a27b68282c1e6e63e7bc..593669cb54898c9737120b51bbfdf2b4e271b762 100644
--- a/src/knot/nameserver/update.c
+++ b/src/knot/nameserver/update.c
@@ -6,7 +6,7 @@
 #include "knot/nameserver/name-server.h"
 #include "libknot/util/debug.h"
 #include "libknot/dnssec/zone-events.h"
-#include "libknot/updates/ddns.h"
+#include "knot/updates/ddns.h"
 #include "common/descriptor.h"
 #include "knot/server/zones.h"
 
diff --git a/src/knot/server/xfr-handler.c b/src/knot/server/xfr-handler.c
index 3b05b08455ed3517cfebac14498fdb31cf9b6c9a..66c742507cb24981fb419e259f018fcdac53c1d9 100644
--- a/src/knot/server/xfr-handler.c
+++ b/src/knot/server/xfr-handler.c
@@ -34,7 +34,7 @@
 #include "knot/server/socket.h"
 #include "knot/server/udp-handler.h"
 #include "knot/server/tcp-handler.h"
-#include "libknot/updates/xfr-in.h"
+#include "knot/updates/xfr-in.h"
 #include "libknot/packet/wire.h"
 #include "knot/server/zones.h"
 #include "libknot/tsig-op.h"
diff --git a/src/knot/server/zones.c b/src/knot/server/zones.c
index 468849b6d24cb4b134cd00eb1ebac5e553e88f3b..637b45f03a7afe10c030e4c4f76f624cb46ba806 100644
--- a/src/knot/server/zones.c
+++ b/src/knot/server/zones.c
@@ -35,9 +35,9 @@
 #include "knot/nameserver/chaos.h"
 #include "libknot/rdata.h"
 #include "libknot/tsig-op.h"
-#include "libknot/updates/changesets.h"
-#include "libknot/updates/ddns.h"
-#include "libknot/updates/xfr-in.h"
+#include "knot/updates/changesets.h"
+#include "knot/updates/ddns.h"
+#include "knot/updates/xfr-in.h"
 #include "libknot/packet/wire.h"
 #include "knot/zone/zone-contents.h"
 #include "knot/zone/zone-diff.h"
diff --git a/src/knot/server/zones.h b/src/knot/server/zones.h
index 41d98cfebc541da55e0d6b6da2f471d1d7c1bb50..08ae070a5280cf1e62cc40e09f7244f54e9e8668 100644
--- a/src/knot/server/zones.h
+++ b/src/knot/server/zones.h
@@ -39,7 +39,7 @@
 #include "knot/server/server.h"
 #include "knot/server/journal.h"
 #include "knot/zone/zone.h"
-#include "libknot/updates/xfr-in.h"
+#include "knot/updates/xfr-in.h"
 
 /* Constants. */
 #define ZONES_JITTER_PCT    10 /*!< +-N% jitter to timers. */
diff --git a/src/libknot/updates/changesets.c b/src/knot/updates/changesets.c
similarity index 99%
rename from src/libknot/updates/changesets.c
rename to src/knot/updates/changesets.c
index 970a6765b3e970832bcc9c62d18510c0f2378219..fe0687ba11376a6282c102dd5cbac5ace6beabec 100644
--- a/src/libknot/updates/changesets.c
+++ b/src/knot/updates/changesets.c
@@ -19,7 +19,7 @@
 #include <stdlib.h>
 #include <assert.h>
 
-#include "libknot/updates/changesets.h"
+#include "knot/updates/changesets.h"
 #include "libknot/common.h"
 #include "common/descriptor.h"
 #include "common/mempattern.h"
diff --git a/src/libknot/updates/changesets.h b/src/knot/updates/changesets.h
similarity index 100%
rename from src/libknot/updates/changesets.h
rename to src/knot/updates/changesets.h
diff --git a/src/libknot/updates/ddns.c b/src/knot/updates/ddns.c
similarity index 99%
rename from src/libknot/updates/ddns.c
rename to src/knot/updates/ddns.c
index d6ceaf8eb6e1527b6fe42e9add114ba7f04b093e..403b4218cb29b8196f029d0c12cd6dd3217c3a57 100644
--- a/src/libknot/updates/ddns.c
+++ b/src/knot/updates/ddns.c
@@ -19,8 +19,8 @@
 #include <stdlib.h>
 #include <inttypes.h>
 
-#include "libknot/updates/ddns.h"
-#include "libknot/updates/changesets.h"
+#include "knot/updates/ddns.h"
+#include "knot/updates/changesets.h"
 #include "libknot/rdata.h"
 #include "libknot/util/debug.h"
 #include "libknot/packet/pkt.h"
@@ -28,7 +28,7 @@
 #include "libknot/consts.h"
 #include "common/mempattern.h"
 #include "knot/nameserver/name-server.h"  // ns_serial_compare() - TODO: extract
-#include "libknot/updates/xfr-in.h"
+#include "knot/updates/xfr-in.h"
 #include "common/descriptor.h"
 
 /*----------------------------------------------------------------------------*/
@@ -496,7 +496,7 @@ static int knot_ddns_check_update(const knot_rrset_t *rrset,
 		*rcode = KNOT_RCODE_NOTZONE;
 		return KNOT_EOUTOFZONE;
 	}
-	
+
 	if (knot_rrtype_is_ddns_forbidden(rrset->type)) {
 		*rcode = KNOT_RCODE_REFUSED;
 		log_zone_error("Refusing to update DNSSEC-related record!\n");
@@ -745,7 +745,6 @@ static int knot_ddns_process_add_cname(knot_node_t *node,
 			knot_rrset_set_rrsigs(removed, NULL);
 		}
 
-
 		/* c) And remove it from the node. */
 		UNUSED(knot_node_remove_rrset(node, KNOT_RRTYPE_CNAME));
 
@@ -949,7 +948,6 @@ static int knot_ddns_add_rr_merge_normal(knot_rrset_t *node_rrset_copy,
 
 	knot_rrset_deep_free(rr_copy, 1);
 
-
 	if (rdata_in_copy == deleted_rrs) {
 		/* All RDATA have been removed, because they were duplicates
 		 * or there were none (0). In general this means, that no
@@ -1330,7 +1328,7 @@ static int knot_ddns_process_rem_rr(const knot_rrset_t *rr,
 			dbg_ddns("Failed to add RRSet to changes.\n");
 			return ret;
 		}
-		
+
 		// Do the same with its RRSIGs (automatic drop)
 		if (rrset_copy->rrsigs) {
 			ret = knot_changes_add_rrset(changes,
diff --git a/src/libknot/updates/ddns.h b/src/knot/updates/ddns.h
similarity index 98%
rename from src/libknot/updates/ddns.h
rename to src/knot/updates/ddns.h
index 35d8a9897a0932cab3a91a9604e36d7275c72aa4..da3645006fc5b98296d6929b645df964d1be01b6 100644
--- a/src/libknot/updates/ddns.h
+++ b/src/knot/updates/ddns.h
@@ -27,7 +27,7 @@
 #ifndef _KNOT_DDNS_H_
 #define _KNOT_DDNS_H_
 
-#include "libknot/updates/changesets.h"
+#include "knot/updates/changesets.h"
 #include "knot/zone/zone.h"
 #include "libknot/packet/pkt.h"
 #include "libknot/rrset.h"
diff --git a/src/libknot/updates/xfr-in.c b/src/knot/updates/xfr-in.c
similarity index 99%
rename from src/libknot/updates/xfr-in.c
rename to src/knot/updates/xfr-in.c
index bb9e8f3467fa1e912a9f4b6e59860939ba686090..d0b60bb22c92a2ff731a253cc211e5477622b8cb 100644
--- a/src/libknot/updates/xfr-in.c
+++ b/src/knot/updates/xfr-in.c
@@ -20,7 +20,7 @@
 
 #include "knot/server/journal.h"
 
-#include "libknot/updates/xfr-in.h"
+#include "knot/updates/xfr-in.h"
 
 #include "knot/nameserver/name-server.h"
 #include "libknot/packet/wire.h"
@@ -32,7 +32,7 @@
 #include "libknot/dnssec/zone-sign.h"
 #include "libknot/dnssec/random.h"
 #include "libknot/common.h"
-#include "libknot/updates/changesets.h"
+#include "knot/updates/changesets.h"
 #include "libknot/tsig.h"
 #include "libknot/tsig-op.h"
 #include "knot/zone/semantic-check.h"
@@ -40,7 +40,6 @@
 #include "common/descriptor.h"
 #include "libknot/rdata.h"
 
-
 /*----------------------------------------------------------------------------*/
 /* Non-API functions                                                          */
 /*----------------------------------------------------------------------------*/
@@ -345,7 +344,6 @@ static int xfrin_check_tsig(knot_pkt_t *packet, knot_ns_xfr_t *xfr,
 			xfr->tsig_prev_time_signed =
 					tsig_rdata_time_signed(packet->tsig_rr);
 
-
 		}
 	} else if (packet->tsig_rr != NULL) {
 		// TSIG where it should not be
@@ -410,7 +408,6 @@ static int xfrin_take_rr(const knot_pktsection_t *answer, knot_rrset_t **rr, uin
 	return ret;
 }
 
-
 /*----------------------------------------------------------------------------*/
 
 static bool semantic_check_passed(const knot_zone_contents_t *z,
@@ -684,7 +681,7 @@ dbg_xfrin_exec_verb(
 			ret = xfrin_take_rr(answer, &rr, &rr_id);
 			continue;
 		}
-		
+
 		knot_node_t *(*get_node)(const knot_zone_contents_t *,
 					 const knot_dname_t *) = NULL;
 		int (*add_node)(knot_zone_contents_t *, knot_node_t *, int,
@@ -740,7 +737,7 @@ dbg_xfrin_exec_verb(
 				knot_rrset_deep_free(&rr, 1);
 				return ret;
 			}
-			
+
 			if (!semantic_check_passed(zone, node)) {
 				xfrin_log_error(xfr->zone->name,
 				                rr,
@@ -2182,7 +2179,6 @@ static int xfrin_apply_replace_soa(knot_zone_contents_t *contents,
 
 	assert(node != NULL);
 
-
 	int ret = xfrin_replace_rrset_in_node(node, chset->soa_to, changes,
 					      contents);
 	if (ret == KNOT_EOK) {
diff --git a/src/libknot/updates/xfr-in.h b/src/knot/updates/xfr-in.h
similarity index 99%
rename from src/libknot/updates/xfr-in.h
rename to src/knot/updates/xfr-in.h
index f2a7ed7c4708288ea6d9886aa3411c94695e6c5e..68dceded94bb5578c0152360e07a2e0e87a1a82a 100644
--- a/src/libknot/updates/xfr-in.h
+++ b/src/knot/updates/xfr-in.h
@@ -34,7 +34,7 @@
 #include "knot/zone/zone.h"
 #include "libknot/packet/pkt.h"
 #include "knot/nameserver/name-server.h"
-#include "libknot/updates/changesets.h"
+#include "knot/updates/changesets.h"
 
 /*----------------------------------------------------------------------------*/
 
diff --git a/src/knot/zone/zone-diff.h b/src/knot/zone/zone-diff.h
index 0609868b8d79d9cb6848755ce46d45070dd8b8fe..fb46b0856b6e0c8ea5666feb3fbdee7631af7dfa 100644
--- a/src/knot/zone/zone-diff.h
+++ b/src/knot/zone/zone-diff.h
@@ -20,7 +20,7 @@
 #include <stdint.h>
 
 #include "knot/zone/zone-contents.h"
-#include "libknot/updates/changesets.h"
+#include "knot/updates/changesets.h"
 
 /*!
  * \brief Create diff between two zone trees.
diff --git a/src/libknot/dnssec/nsec-chain.h b/src/libknot/dnssec/nsec-chain.h
index 24806c2a297c85961d236f74f52b714ae128c6d4..3e0e1828cf83ee0a4120ffb668ee47bc3f9212e9 100644
--- a/src/libknot/dnssec/nsec-chain.h
+++ b/src/libknot/dnssec/nsec-chain.h
@@ -32,7 +32,7 @@
 #include <stdint.h>
 
 #include "knot/zone/zone-contents.h"
-#include "libknot/updates/changesets.h"
+#include "knot/updates/changesets.h"
 
 /*!
  * \brief Parameters to be used when fixing NSEC(3) chain.
diff --git a/src/libknot/dnssec/zone-events.h b/src/libknot/dnssec/zone-events.h
index 16cb8f784c7f663f89fb076ff7e775e4865c7745..695ecd2755670139cbe4e546abacc04326ad92cf 100644
--- a/src/libknot/dnssec/zone-events.h
+++ b/src/libknot/dnssec/zone-events.h
@@ -29,7 +29,7 @@
 #define _KNOT_DNSSEC_ZONE_EVENTS_H_
 
 #include "knot/zone/zone.h"
-#include "libknot/updates/changesets.h"
+#include "knot/updates/changesets.h"
 #include "libknot/dnssec/policy.h"
 /*!
  * \brief DNSSEC resign zone, store new records into changeset. Valid signatures
diff --git a/src/libknot/dnssec/zone-nsec.h b/src/libknot/dnssec/zone-nsec.h
index 53e903b9d8b6b6f438b7b7fa5b5b9dbfa93760d4..2abfae8f716a631d718b18f5eb28db4f4b0b649b 100644
--- a/src/libknot/dnssec/zone-nsec.h
+++ b/src/libknot/dnssec/zone-nsec.h
@@ -30,7 +30,7 @@
 #define _KNOT_DNSSEC_ZONE_NSEC_H_
 
 #include <stdbool.h>
-#include "libknot/updates/changesets.h"
+#include "knot/updates/changesets.h"
 #include "knot/zone/zone-contents.h"
 #include "libknot/dnssec/policy.h"
 #include "libknot/dnssec/zone-keys.h"
diff --git a/src/libknot/dnssec/zone-sign.c b/src/libknot/dnssec/zone-sign.c
index 6c4d7236fd063a8ac1e6b56ad7aa92ace5307221..4505ede76ce7135279961b43a829cc655bef44aa 100644
--- a/src/libknot/dnssec/zone-sign.c
+++ b/src/libknot/dnssec/zone-sign.c
@@ -33,7 +33,7 @@
 #include "libknot/dnssec/zone-sign.h"
 #include "libknot/rdata.h"
 #include "libknot/rrset.h"
-#include "libknot/updates/changesets.h"
+#include "knot/updates/changesets.h"
 #include "libknot/util/debug.h"
 #include "knot/zone/node.h"
 #include "knot/zone/zone-contents.h"
diff --git a/src/libknot/dnssec/zone-sign.h b/src/libknot/dnssec/zone-sign.h
index b3fe03f805b7d2a35ee7f9206cb29290e0930174..8723e50f58277ad48f585eb1c1b74ac776942b55 100644
--- a/src/libknot/dnssec/zone-sign.h
+++ b/src/libknot/dnssec/zone-sign.h
@@ -29,7 +29,7 @@
 #ifndef _KNOT_DNSSEC_ZONE_SIGN_H_
 #define _KNOT_DNSSEC_ZONE_SIGN_H_
 
-#include "libknot/updates/changesets.h"
+#include "knot/updates/changesets.h"
 #include "knot/zone/zone.h"
 #include "knot/zone/zone-contents.h"
 #include "libknot/dnssec/zone-keys.h"