diff --git a/Knot.files b/Knot.files
index d566cd881bce14203ca2d16509fa11281d6edcef..f5ff754baf23abb4e2e1bd8b34d22ad0b7a77d33 100644
--- a/Knot.files
+++ b/Knot.files
@@ -274,6 +274,7 @@ doc/running.texi
 src/libknot/zone/zone-diff.h
 src/libknot/zone/zone-diff.c
 src/utils/common/msg.h
+src/utils/common/msg.c
 src/utils/common/params.c
 src/utils/common/params.h
 src/utils/common/resolv.c
diff --git a/src/Makefile.am b/src/Makefile.am
index 4d355d6ecce00bff2ee975a8b01d616bac75f6b5..13acc648a5c8e81d820b1bc5932664c97193a720 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -32,6 +32,7 @@ knotc_SOURCES =					\
 
 khost_SOURCES =					\
 	utils/common/msg.h			\
+	utils/common/msg.c			\
 	utils/common/exec.c			\
 	utils/common/exec.h			\
 	utils/common/params.c			\
@@ -50,6 +51,7 @@ khost_SOURCES =					\
 
 knsupdate_SOURCES =				\
 	utils/common/msg.h			\
+	utils/common/msg.c			\
 	utils/common/params.c			\
 	utils/common/params.h			\
 	utils/common/resolv.c			\
diff --git a/src/utils/common/msg.h b/src/utils/common/msg.h
index 15525fdcd5b8028e15717564192f07f19a28601c..9a576bde643fefaafc95bd5cf279b03069002b72 100644
--- a/src/utils/common/msg.h
+++ b/src/utils/common/msg.h
@@ -36,8 +36,14 @@
 #define ERR(m...)	{ printf(ERROR_ m); fflush(stdout); }
 #define WARN(m...)	{ printf(WARNING_ m); fflush(stdout); }
 
+/*! \brief Enable/disable debugging. */
+int msg_enable_debug(int val);
+
+/*! \brief Print debug message. */
+int msg_debug(const char *fmt, ...);
+
 #ifndef NDEBUG
- #define DBG(m...)	{ printf(DEBUG_ m); fflush(stdout); }
+ #define DBG(m...) msg_debug(DEBUG_ m)
 #else
  #define DBG(m...)
 #endif
diff --git a/src/utils/common/params.c b/src/utils/common/params.c
index 5ec55428d3dbf213bb6dfde16c3aa8bde081659d..e4c632c480813049ada99e3c642702795ae983a7 100644
--- a/src/utils/common/params.c
+++ b/src/utils/common/params.c
@@ -180,6 +180,7 @@ void params_flag_tcp(params_t *params)
 void params_flag_verbose(params_t *params)
 {
 	params->format = FORMAT_VERBOSE;
+	
 }
 
 int params_parse_interval(const char *value, int32_t *dst)
diff --git a/src/utils/nsupdate/nsupdate_exec.c b/src/utils/nsupdate/nsupdate_exec.c
index e2cb33742a260f3e4cf6559ff80278c9e2951115..225d91953ce1123668857e970166f60d99eb0fd0 100644
--- a/src/utils/nsupdate/nsupdate_exec.c
+++ b/src/utils/nsupdate/nsupdate_exec.c
@@ -721,7 +721,7 @@ int cmd_send(const char* lp, params_t *params)
 		return KNOT_ERROR;
 	}
 	
-	/*! \todo TCP fallback, timeout settings. */
+	/*! \todo TCP fallback. */
 	
 	/* Wait for reception. */
 	uint8_t	rwire[MAX_PACKET_SIZE]; 
diff --git a/src/utils/nsupdate/nsupdate_params.c b/src/utils/nsupdate/nsupdate_params.c
index 9fd0e4d92225cefd92dc5e938d83153abf3a61b4..830443c49d50cc5d7b938755dbcc3dd08e3255dc 100644
--- a/src/utils/nsupdate/nsupdate_params.c
+++ b/src/utils/nsupdate/nsupdate_params.c
@@ -151,9 +151,11 @@ int nsupdate_params_parse(params_t *params, int argc, char *argv[])
 	}
 
 	/* Command line options processing. */
-	while ((opt = getopt(argc, argv, "dvp:t:r:")) != -1) {
+	while ((opt = getopt(argc, argv, "dDvp:t:r:")) != -1) {
 		switch (opt) {
 		case 'd':
+		case 'D': /* Extra debugging. */
+			msg_enable_debug(1);
 			params_flag_verbose(params);
 			break;
 		case 'v':