diff --git a/modules/block/block.lua b/modules/block/block.lua
index 0e59058980e1a54ef686b133f906edacc33242f8..551dd436d7d8a146884efc90d8e01026745e8b1b 100644
--- a/modules/block/block.lua
+++ b/modules/block/block.lua
@@ -104,20 +104,20 @@ block.layer = {
 	produce = function(state, req, pkt)
 		-- Interpret packet in Lua and evaluate
 		local qry = kres.query_current(req)
-		local qname = kres.query_qname(qry)
+		local qname = kres.query.qname(qry)
 		local action, authority = block:evaluate(pkt, qname)
 		if action == block.DENY then
 			-- Answer full question
-			local qclass = kres.query_qclass(qry)
-			local qtype = kres.query_qtype(qry)
-			kres.query_flag(qry, kres.query.NO_MINIMIZE + kres.query.SAFEMODE)
-			pkt:question(qname, qclass, qtype)
+			local qclass = kres.query.qclass(qry)
+			local qtype = kres.query.qtype(qry)
+			kres.query.flag(qry, kres.query.NO_MINIMIZE + kres.query.SAFEMODE)
+			pkt:question(qname, qtype, qclass)
 			pkt:flag(kres.wire.QR)
 			pkt:flag(kres.wire.AA)
 			-- Write authority information
 			pkt:rcode(kres.rcode.NXDOMAIN)
 			pkt:begin(kres.AUTHORITY)
-			pkt:add(authority, qclass, kres.rrtype.SOA, 900,
+			pkt:add(authority, qclass, kres.type.SOA, 900,
 				'\5block\0\0\0\0\0\0\0\0\14\16\0\0\3\132\0\9\58\128\0\0\3\132')
 			return kres.DONE
 		elseif action == block.DROP then
diff --git a/modules/graphite/graphite.lua b/modules/graphite/graphite.lua
index 11150bea7e8c52ecf52d90f4551e604f00b80745..97c337aa06e3901ef4967469a10d678be66fdf2c 100644
--- a/modules/graphite/graphite.lua
+++ b/modules/graphite/graphite.lua
@@ -35,6 +35,7 @@ function graphite.publish()
 	end
 	publish_table(now_metrics, graphite.prefix)
 	publish_table(cache.stats(), graphite.prefix..'.cache')
+	publish_table(worker.stats(), graphite.prefix..'.worker')
 	return 0
 end
 
diff --git a/modules/stats/stats.c b/modules/stats/stats.c
index e79f3bedda3a87a80be84604596d091d43210257..e6d51f86cfe530cf5a98b27c6778e3a22ed1c2a9 100644
--- a/modules/stats/stats.c
+++ b/modules/stats/stats.c
@@ -57,7 +57,6 @@ static int begin(knot_layer_t *ctx, void *module_param)
 {
 	struct kr_module *module = ctx->api->data;
 	map_t *map = module->data;
-	stat_add(map, "query.concurrent", 1);
 	ctx->data = module_param;
 	return ctx->state;
 }
@@ -101,24 +100,12 @@ static int collect(knot_layer_t *ctx)
 		}
 	}
 	/* Query parameters and transport mode */
-	stat_add(map, "query.concurrent", -1);
 	if (knot_pkt_has_edns(param->answer)) {
 		stat_add(map, "query.edns", 1);
 		if (knot_pkt_has_dnssec(param->answer)) {
 			stat_add(map, "query.dnssec", 1);
 		}
 	}
-	/* Collect data from iterator queries */
-	struct kr_query *qry = NULL;
-	WALK_LIST(qry, rplan->resolved) {
-		if (!(qry->flags & QUERY_CACHED) && qry != TAIL(rplan->resolved)) {
-			if (qry->flags & QUERY_TCP) {
-				stat_add(map, "iterator.tcp", 1);
-			} else {
-				stat_add(map, "iterator.udp", 1);
-			}
-		}
-	}
 	return ctx->state;
 }