diff --git a/libknot/zone.c b/libknot/zone.c
index f95d5afa45e0dbcf115afd1642904b139f767333..ca643e3f1525322f7ec7608984dec2c3d15d3c47 100644
--- a/libknot/zone.c
+++ b/libknot/zone.c
@@ -124,183 +124,6 @@ void knot_zone_set_data(knot_zone_t *zone, void *data)
 	zone->data = data;
 }
 
-/*----------------------------------------------------------------------------*/
-/* Zone contents functions. TODO: remove                                      */
-/*----------------------------------------------------------------------------*/
-
-int knot_zone_add_node(knot_zone_t *zone, knot_node_t *node,
-                         int create_parents, int use_domain_table)
-{
-	if (zone == NULL || node == NULL) {
-		return KNOT_EBADARG;
-	}
-
-	knot_node_set_zone(node, zone);
-
-	return knot_zone_contents_add_node(zone->contents, node,
-	                                     create_parents, 0,
-	                                     use_domain_table);
-}
-
-/*----------------------------------------------------------------------------*/
-
-int knot_zone_add_nsec3_node(knot_zone_t *zone, knot_node_t *node,
-                               int create_parents, int use_domain_table)
-{
-	if (zone == NULL) {
-		return KNOT_EBADARG;
-	}
-
-	return knot_zone_contents_add_nsec3_node(zone->contents, node,
-	                                           create_parents, 0,
-	                                           use_domain_table);
-}
-
-/*----------------------------------------------------------------------------*/
-
-knot_node_t *knot_zone_get_node(const knot_zone_t *zone,
-                                    const knot_dname_t *name)
-{
-	if (zone == NULL) {
-		return NULL;
-	}
-
-	return knot_zone_contents_get_node(zone->contents, name);
-}
-
-/*----------------------------------------------------------------------------*/
-
-knot_node_t *knot_zone_get_nsec3_node(const knot_zone_t *zone,
-                                          const knot_dname_t *name)
-{
-	if (zone == NULL) {
-		return NULL;
-	}
-
-	return knot_zone_contents_get_nsec3_node(zone->contents, name);
-}
-
-/*----------------------------------------------------------------------------*/
-
-const knot_node_t *knot_zone_find_node(const knot_zone_t *zone,
-                                           const knot_dname_t *name)
-{
-	if (zone == NULL) {
-		return NULL;
-	}
-
-	return knot_zone_contents_find_node(zone->contents, name);
-}
-
-/*----------------------------------------------------------------------------*/
-
-const knot_node_t *knot_zone_find_nsec3_node(const knot_zone_t *zone,
-                                                 const knot_dname_t *name)
-{
-	if (zone == NULL) {
-		return NULL;
-	}
-
-	return knot_zone_contents_find_nsec3_node(zone->contents, name);
-}
-
-/*----------------------------------------------------------------------------*/
-
-const knot_node_t *knot_zone_apex(const knot_zone_t *zone)
-{
-	if (zone == NULL) {
-		return NULL;
-	}
-
-	return knot_zone_contents_apex(zone->contents);
-}
-
-/*----------------------------------------------------------------------------*/
-
-int knot_zone_tree_apply_postorder(knot_zone_t *zone,
-                              void (*function)(knot_node_t *node, void *data),
-                              void *data)
-{
-	if (zone == NULL) {
-		return KNOT_EBADARG;
-	}
-
-	return knot_zone_contents_tree_apply_postorder(zone->contents,
-	                                                 function, data);
-}
-
-/*----------------------------------------------------------------------------*/
-
-int knot_zone_tree_apply_inorder(knot_zone_t *zone,
-                              void (*function)(knot_node_t *node, void *data),
-                              void *data)
-{
-	if (zone == NULL) {
-		return KNOT_EBADARG;
-	}
-
-	return knot_zone_contents_tree_apply_inorder(zone->contents,
-	                                               function, data);
-}
-
-/*----------------------------------------------------------------------------*/
-
-int knot_zone_tree_apply_inorder_reverse(knot_zone_t *zone,
-                              void (*function)(knot_node_t *node, void *data),
-                              void *data)
-{
-	if (zone == NULL) {
-		return KNOT_EBADARG;
-	}
-
-	return knot_zone_contents_tree_apply_inorder_reverse(zone->contents,
-	                                                       function, data);
-}
-
-/*----------------------------------------------------------------------------*/
-
-int knot_zone_nsec3_apply_postorder(knot_zone_t *zone,
-                              void (*function)(knot_node_t *node, void *data),
-                              void *data)
-{
-	if (zone == NULL) {
-		return KNOT_EBADARG;
-	}
-
-	return knot_zone_contents_nsec3_apply_postorder(zone->contents,
-	                                                  function, data);
-}
-
-/*----------------------------------------------------------------------------*/
-
-int knot_zone_nsec3_apply_inorder(knot_zone_t *zone,
-                              void (*function)(knot_node_t *node, void *data),
-                              void *data)
-{
-	if (zone == NULL) {
-		return KNOT_EBADARG;
-	}
-
-	return knot_zone_contents_nsec3_apply_inorder(zone->contents,
-	                                                function, data);
-}
-
-/*----------------------------------------------------------------------------*/
-
-int knot_zone_nsec3_apply_inorder_reverse(knot_zone_t *zone,
-                              void (*function)(knot_node_t *node, void *data),
-                              void *data)
-{
-	if (zone == NULL) {
-		return KNOT_EBADARG;
-	}
-
-	return knot_zone_contents_nsec3_apply_inorder_reverse(zone->contents,
-	                                                        function, data);
-}
-
-/*----------------------------------------------------------------------------*/
-/*----------------------------------------------------------------------------*/
 /*----------------------------------------------------------------------------*/
 
 knot_zone_contents_t *knot_zone_switch_contents(knot_zone_t *zone,
diff --git a/libknot/zone.h b/libknot/zone.h
index 32f31c7aaa12c59053bc972f2a795bb3e3124457..978cfd066998d031dc169a197e5b740c2cd6efce 100644
--- a/libknot/zone.h
+++ b/libknot/zone.h
@@ -92,243 +92,6 @@ const void *knot_zone_data(const knot_zone_t *zone);
 
 void knot_zone_set_data(knot_zone_t *zone, void *data);
 
-/*----------------------------------------------------------------------------*/
-/* Zone contents functions. TODO: remove                                      */
-/*----------------------------------------------------------------------------*/
-
-/*!
- * \brief Adds a node to the given zone.
- *
- * Checks if the node belongs to the zone, i.e. if its owner is a subdomain of
- * the zone's apex. It thus also forbids adding node with the same name as the
- * zone apex.
- *
- * \warning This function may destroy domain names saved in the node, that
- *          are already present in the zone.
- *
- * \param zone Zone to add the node into.
- * \param node Node to add into the zone.
- *
- * \retval KNOT_EOK
- * \retval KNOT_EBADARG
- * \retval KNOT_EBADZONE
- * \retval KNOT_EHASH
- *
- * \todo Replace tests of this function by tests of its zone-contents version.
- */
-int knot_zone_add_node(knot_zone_t *zone, knot_node_t *node,
-                         int create_parents, int use_domain_table);
-
-/*!
- * \brief Adds a node holding NSEC3 records to the given zone.
- *
- * Checks if the node belongs to the zone, i.e. if its owner is a subdomain of
- * the zone's apex. It does not check if the node really contains any NSEC3
- * records, nor if the name is a hash (as there is actually no way of
- * determining this).
- *
- * \param zone Zone to add the node into.
- * \param node Node to add into the zone.
- *
- * \retval KNOT_EOK
- * \retval KNOT_EBADARG
- * \retval KNOT_EBADZONE
- *
- * \todo Replace tests of this function by tests of its zone-contents version.
- */
-int knot_zone_add_nsec3_node(knot_zone_t *zone, knot_node_t *node,
-                               int create_parents, int use_domain_table);
-
-/*!
- * \brief Tries to find a node with the specified name in the zone.
- *
- * \param zone Zone where the name should be searched for.
- * \param name Name to find.
- *
- * \return Corresponding node if found, NULL otherwise.
- *
- * \todo Replace tests of this function by tests of its zone-contents version.
- */
-knot_node_t *knot_zone_get_node(const knot_zone_t *zone,
-                                    const knot_dname_t *name);
-
-/*!
- * \brief Tries to find a node with the specified name among the NSEC3 nodes
- *        of the zone.
- *
- * \param zone Zone where the name should be searched for.
- * \param name Name to find.
- *
- * \return Corresponding node if found, NULL otherwise.
- *
- * \todo Replace tests of this function by tests of its zone-contents version.
- */
-knot_node_t *knot_zone_get_nsec3_node(const knot_zone_t *zone,
-                                          const knot_dname_t *name);
-
-/*!
- * \brief Tries to find a node with the specified name in the zone.
- *
- * \note This function is identical to knot_zone_get_node(), only it returns
- *       constant reference.
- *
- * \param zone Zone where the name should be searched for.
- * \param name Name to find.
- *
- * \return Corresponding node if found, NULL otherwise.
- *
- * \todo Replace tests of this function by tests of its zone-contents version.
- */
-const knot_node_t *knot_zone_find_node(const knot_zone_t *zone,
-                                           const knot_dname_t *name);
-
-/*!
- * \brief Tries to find a node with the specified name among the NSEC3 nodes
- *        of the zone.
- *
- * \note This function is identical to knot_zone_get_nsec3_node(), only it
- *       returns constant reference.
- *
- * \param zone Zone where the name should be searched for.
- * \param name Name to find.
- *
- * \return Corresponding node if found, NULL otherwise.
- *
- * \todo Replace tests of this function by tests of its zone-contents version.
- */
-const knot_node_t *knot_zone_find_nsec3_node(const knot_zone_t *zone,
-                                                 const knot_dname_t *name);
-
-/*!
- * \brief Returns the apex node of the zone.
- *
- * \param zone Zone to get the apex of.
- *
- * \return Zone apex node.
- *
- * \todo Replace tests of this function by tests of its zone-contents version.
- */
-const knot_node_t *knot_zone_apex(const knot_zone_t *zone);
-
-/*!
- * \brief Applies the given function to each regular node in the zone.
- *
- * This function uses post-order depth-first forward traversal, i.e. the
- * function is first recursively applied to subtrees and then to the root.
- *
- * \param zone Nodes of this zone will be used as parameters for the function.
- * \param function Function to be applied to each node of the zone.
- * \param data Arbitrary data to be passed to the function.
- *
- * \todo Replace tests of this function by tests of its zone-contents version.
- */
-int knot_zone_tree_apply_postorder(knot_zone_t *zone,
-                              void (*function)(knot_node_t *node, void *data),
-                              void *data);
-
-/*!
- * \brief Applies the given function to each regular node in the zone.
- *
- * This function uses in-order depth-first forward traversal, i.e. the function
- * is first recursively applied to left subtree, then to the root and then to
- * the right subtree.
- *
- * \note This implies that the zone is stored in a binary tree. Is there a way
- *       to make this traversal independent on the underlying structure?
- *
- * \param zone Nodes of this zone will be used as parameters for the function.
- * \param function Function to be applied to each node of the zone.
- * \param data Arbitrary data to be passed to the function.
- *
- * \todo Replace tests of this function by tests of its zone-contents version.
- */
-int knot_zone_tree_apply_inorder(knot_zone_t *zone,
-                              void (*function)(knot_node_t *node, void *data),
-                              void *data);
-
-/*!
- * \brief Applies the given function to each regular node in the zone.
- *
- * This function uses in-order depth-first reverse traversal, i.e. the function
- * is first recursively applied to right subtree, then to the root and then to
- * the left subtree.
- *
- * \note This implies that the zone is stored in a binary tree. Is there a way
- *       to make this traversal independent on the underlying structure?
- *
- * \param zone Nodes of this zone will be used as parameters for the function.
- * \param function Function to be applied to each node of the zone.
- * \param data Arbitrary data to be passed to the function.
- *
- * \todo Replace tests of this function by tests of its zone-contents version.
- */
-int knot_zone_tree_apply_inorder_reverse(knot_zone_t *zone,
-                              void (*function)(knot_node_t *node, void *data),
-                              void *data);
-
-/*!
- * \brief Applies the given function to each NSEC3 node in the zone.
- *
- * This function uses post-order depth-first forward traversal, i.e. the
- * function is first recursively applied to subtrees and then to the root.
- *
- * \param zone NSEC3 nodes of this zone will be used as parameters for the
- *             function.
- * \param function Function to be applied to each node of the zone.
- * \param data Arbitrary data to be passed to the function.
- *
- * \todo Replace tests of this function by tests of its zone-contents version.
- */
-int knot_zone_nsec3_apply_postorder(knot_zone_t *zone,
-                              void (*function)(knot_node_t *node, void *data),
-                              void *data);
-
-/*!
- * \brief Applies the given function to each NSEC3 node in the zone.
- *
- * This function uses in-order depth-first forward traversal, i.e. the function
- * is first recursively applied to left subtree, then to the root and then to
- * the right subtree.
- *
- * \note This implies that the zone is stored in a binary tree. Is there a way
- *       to make this traversal independent on the underlying structure?
- *
- * \param zone NSEC3 nodes of this zone will be used as parameters for the
- *             function.
- * \param function Function to be applied to each node of the zone.
- * \param data Arbitrary data to be passed to the function.
- *
- * \todo Replace tests of this function by tests of its zone-contents version.
- */
-int knot_zone_nsec3_apply_inorder(knot_zone_t *zone,
-                              void (*function)(knot_node_t *node, void *data),
-                              void *data);
-
-/*!
- * \brief Applies the given function to each NSEC3 node in the zone.
- *
- * This function uses in-order depth-first reverse traversal, i.e. the function
- * is first recursively applied to right subtree, then to the root and then to
- * the left subtree.
- *
- * \note This implies that the zone is stored in a binary tree. Is there a way
- *       to make this traversal independent on the underlying structure?
- *
- * \param zone NSEC3 nodes of this zone will be used as parameters for the
- *             function.
- * \param function Function to be applied to each node of the zone.
- * \param data Arbitrary data to be passed to the function.
- *
- * \todo Replace tests of this function by tests of its zone-contents version.
- */
-int knot_zone_nsec3_apply_inorder_reverse(knot_zone_t *zone,
-                              void (*function)(knot_node_t *node, void *data),
-                              void *data);
-
-/*----------------------------------------------------------------------------*/
-/*----------------------------------------------------------------------------*/
-/*----------------------------------------------------------------------------*/
-
 knot_zone_contents_t *knot_zone_switch_contents(knot_zone_t *zone,
                                           knot_zone_contents_t *new_contents);
 
diff --git a/src/tests/libknot/libknot/zone_tests.c b/src/tests/libknot/libknot/zone_tests.c
index 22bd12015560b7a4d84b49d64bcac03a5153ccb4..2f2a70c3b34aa9272f5e861882b5578ca67cb0f6 100644
--- a/src/tests/libknot/libknot/zone_tests.c
+++ b/src/tests/libknot/libknot/zone_tests.c
@@ -91,7 +91,7 @@ static int test_zone_create(knot_zone_t **zone)
 	return 1;
 }
 
-static int test_zone_add_node(knot_zone_t *zone, int nsec3)
+static int test_zone_add_node(knot_zone_contents_t *zone, int nsec3)
 {
 	/*
 	 * NSEC3 nodes are de facto identical to normal nodes, so there is no
@@ -112,8 +112,8 @@ static int test_zone_add_node(knot_zone_t *zone, int nsec3)
 			return 0;
 		}
 
-		if ((res = ((nsec3) ? knot_zone_add_nsec3_node(zone, node, 0, 1)
-		                   : knot_zone_add_node(zone, node, 0, 1))) != 0) {
+		if ((res = ((nsec3) ? knot_zone_contents_add_nsec3_node(zone, node, 0, 0, 0)
+		                   : knot_zone_contents_add_node(zone, node, 0, 0, 0))) != 0) {
 			diag("zone: Failed to insert node into zone (returned"
 			     " %d).", res);
 			knot_node_free(&node, 0, 0);
@@ -132,8 +132,8 @@ static int test_zone_add_node(knot_zone_t *zone, int nsec3)
 			return 0;
 		}
 
-		if ((res = ((nsec3) ? knot_zone_add_nsec3_node(zone, node, 0, 1)
-			: knot_zone_add_node(zone, node, 0, 1))) !=
+		if ((res = ((nsec3) ? knot_zone_contents_add_nsec3_node(zone, node, 0, 0, 0)
+			: knot_zone_contents_add_node(zone, node, 0, 0, 0))) !=
 		                KNOT_EBADZONE) {
 			diag("zone: Inserting wrong node did not result in"
 			     "proper return value (%d instead of %d).", res,
@@ -154,8 +154,8 @@ static int test_zone_add_node(knot_zone_t *zone, int nsec3)
 		return 0;
 	}
 
-	if ((res = ((nsec3) ? knot_zone_add_nsec3_node(NULL, node, 0, 1)
-		: knot_zone_add_node(NULL, node, 0, 1))) != KNOT_EBADARG) {
+	if ((res = ((nsec3) ? knot_zone_contents_add_nsec3_node(NULL, node, 0, 0, 0)
+		: knot_zone_contents_add_node(NULL, node, 0, 0, 0))) != KNOT_EBADARG) {
 		diag("zone: Inserting node to NULL zone did not result in"
 		     "proper return value (%d instead of %d)", res,
 		     KNOT_EBADARG);
@@ -167,8 +167,8 @@ static int test_zone_add_node(knot_zone_t *zone, int nsec3)
 	//note("NULL node");
 	note("Inserting NULL node...\n");
 
-	if ((res = ((nsec3) ? knot_zone_add_nsec3_node(zone, NULL, 0, 1)
-		: knot_zone_add_node(zone, NULL, 0, 1))) != KNOT_EBADARG) {
+	if ((res = ((nsec3) ? knot_zone_contents_add_nsec3_node(zone, NULL, 0, 0, 0)
+		: knot_zone_contents_add_node(zone, NULL, 0, 0, 0))) != KNOT_EBADARG) {
 		diag("zone: Inserting NULL node to zone did not result in"
 		     "proper return value (%d instead of %d)", res,
 		     KNOT_EBADARG);
@@ -186,7 +186,7 @@ static int test_zone_add_node(knot_zone_t *zone, int nsec3)
 
 		//note("Apex again");
 
-		if ((res = knot_zone_add_node(zone, node, 0, 1)) !=
+		if ((res = knot_zone_contents_add_node(zone, node, 0, 0, 0)) !=
 		                KNOT_EBADZONE) {
 			diag("zone: Inserting zone apex again did not result in"
 			     "proper return value (%d instead of -2)",
@@ -200,7 +200,7 @@ static int test_zone_add_node(knot_zone_t *zone, int nsec3)
 	// check if all nodes are inserted
 	//int nodes = 0;
 	if (!nsec3
-	    && !test_zone_check_node(knot_zone_apex(zone), &test_apex)) {
+	    && !test_zone_check_node(knot_zone_contents_apex(zone), &test_apex)) {
 		diag("zone: Apex of zone not right.");
 //		diag("Apex owner: %s (%p), apex parent: %p\n",
 //		     knot_dname_to_str(knot_zone_apex(zone)->owner),
@@ -214,9 +214,9 @@ static int test_zone_add_node(knot_zone_t *zone, int nsec3)
 	}
 	//++nodes;
 	for (int i = 0; i < TEST_NODES_GOOD; ++i) {
-		const knot_node_t *n = ((nsec3) ? knot_zone_find_nsec3_node(
+		const knot_node_t *n = ((nsec3) ? knot_zone_contents_find_nsec3_node(
 				zone, &test_nodes_good[i].owner) :
-			knot_zone_find_node(zone, &test_nodes_good[i].owner));
+			knot_zone_contents_find_node(zone, &test_nodes_good[i].owner));
 		if (n == NULL) {
 			diag("zone: Missing node with owner %s",
 			     test_nodes_good[i].owner.name);
@@ -239,14 +239,14 @@ static int test_zone_add_node(knot_zone_t *zone, int nsec3)
 	return (errors == 0);
 }
 
-static int test_zone_get_node(knot_zone_t *zone, int nsec3)
+static int test_zone_get_node(knot_zone_contents_t *zone, int nsec3)
 {
 	int errors = 0;
 
 	for (int i = 0; i < TEST_NODES_GOOD; ++i) {
-		if (((nsec3) ? knot_zone_get_nsec3_node(
+		if (((nsec3) ? knot_zone_contents_get_nsec3_node(
 		                   zone, &test_nodes_good[i].owner)
-			: knot_zone_get_node(zone, &test_nodes_good[i].owner))
+			: knot_zone_contents_get_node(zone, &test_nodes_good[i].owner))
 			== NULL) {
 			diag("zone: Node (%s) not found in zone.",
 			     (char *)test_nodes_good[i].owner.name);
@@ -255,9 +255,9 @@ static int test_zone_get_node(knot_zone_t *zone, int nsec3)
 	}
 
 	for (int i = 0; i < TEST_NODES_BAD; ++i) {
-		if (((nsec3) ? knot_zone_get_nsec3_node(
+		if (((nsec3) ? knot_zone_contents_get_nsec3_node(
 		                   zone, &test_nodes_bad[i].owner)
-			: knot_zone_get_node(zone, &test_nodes_bad[i].owner))
+			: knot_zone_contents_get_node(zone, &test_nodes_bad[i].owner))
 			!= NULL) {
 			diag("zone: Node (%s) found in zone even if it should"
 			     "not be there.",
@@ -267,21 +267,21 @@ static int test_zone_get_node(knot_zone_t *zone, int nsec3)
 	}
 
 	if (((nsec3)
-	     ? knot_zone_get_nsec3_node(NULL, &test_nodes_good[0].owner)
-	     : knot_zone_get_node(NULL, &test_nodes_good[0].owner)) != NULL) {
+	     ? knot_zone_contents_get_nsec3_node(NULL, &test_nodes_good[0].owner)
+	     : knot_zone_contents_get_node(NULL, &test_nodes_good[0].owner)) != NULL) {
 		diag("zone: Getting node from NULL zone did not result in"
 		     "proper return value (NULL)");
 		++errors;
 	}
 
-	if (((nsec3) ? knot_zone_get_nsec3_node(zone, NULL)
-	             : knot_zone_get_node(zone, NULL)) != NULL) {
+	if (((nsec3) ? knot_zone_contents_get_nsec3_node(zone, NULL)
+	             : knot_zone_contents_get_node(zone, NULL)) != NULL) {
 		diag("zone: Getting node with NULL owner from zone did not "
 		     "result in proper return value (NULL)");
 		++errors;
 	}
 
-	if (!nsec3 && knot_zone_get_node(zone, &test_apex.owner) == NULL) {
+	if (!nsec3 && knot_zone_contents_get_node(zone, &test_apex.owner) == NULL) {
 		diag("zone: Getting zone apex from the zone failed");
 		++errors;
 	}
@@ -289,14 +289,14 @@ static int test_zone_get_node(knot_zone_t *zone, int nsec3)
 	return (errors == 0);
 }
 
-static int test_zone_find_node(knot_zone_t *zone, int nsec3)
+static int test_zone_find_node(knot_zone_contents_t *zone, int nsec3)
 {
 	int errors = 0;
 
 	for (int i = 0; i < TEST_NODES_GOOD; ++i) {
-		if (((nsec3) ? knot_zone_find_nsec3_node(
+		if (((nsec3) ? knot_zone_contents_find_nsec3_node(
 		                   zone, &test_nodes_good[i].owner)
-		    : knot_zone_find_node(zone, &test_nodes_good[i].owner))
+		    : knot_zone_contents_find_node(zone, &test_nodes_good[i].owner))
 		    == NULL) {
 			diag("zone: Node (%s) not found in zone.",
 			     (char *)test_nodes_good[i].owner.name);
@@ -305,9 +305,9 @@ static int test_zone_find_node(knot_zone_t *zone, int nsec3)
 	}
 
 	for (int i = 0; i < TEST_NODES_BAD; ++i) {
-		if (((nsec3) ? knot_zone_find_nsec3_node(
+		if (((nsec3) ? knot_zone_contents_find_nsec3_node(
 		                   zone, &test_nodes_bad[i].owner)
-		    : knot_zone_find_node(zone, &test_nodes_bad[i].owner))
+		    : knot_zone_contents_find_node(zone, &test_nodes_bad[i].owner))
 		    != NULL) {
 			diag("zone: Node (%s) found in zone even if it should"
 			     "not be there.",
@@ -317,21 +317,21 @@ static int test_zone_find_node(knot_zone_t *zone, int nsec3)
 	}
 
 	if (((nsec3)
-	    ? knot_zone_find_nsec3_node(NULL, &test_nodes_good[0].owner)
-	    : knot_zone_find_node(NULL, &test_nodes_good[0].owner)) != NULL) {
+	    ? knot_zone_contents_find_nsec3_node(NULL, &test_nodes_good[0].owner)
+	    : knot_zone_contents_find_node(NULL, &test_nodes_good[0].owner)) != NULL) {
 		diag("zone: Finding node from NULL zone did not result in"
 		     "proper return value (NULL)");
 		++errors;
 	}
 
-	if (((nsec3) ? knot_zone_find_nsec3_node(zone, NULL)
-	             : knot_zone_find_node(zone, NULL)) != NULL) {
+	if (((nsec3) ? knot_zone_contents_find_nsec3_node(zone, NULL)
+	             : knot_zone_contents_find_node(zone, NULL)) != NULL) {
 		diag("zone: Finding node with NULL owner from zone did not "
 		     "result in proper return value (NULL)");
 		++errors;
 	}
 
-	if (!nsec3 && knot_zone_find_node(zone, &test_apex.owner) == NULL) {
+	if (!nsec3 && knot_zone_contents_find_node(zone, &test_apex.owner) == NULL) {
 		diag("zone: Finding zone apex from the zone failed");
 		++errors;
 	}
@@ -380,14 +380,14 @@ static void tmp_compare_function(knot_node_t *node, void *data)
 	node_index++;
 }
 
-static int test_zone_tree_apply(knot_zone_t *zone,
+static int test_zone_tree_apply(knot_zone_contents_t *zone,
                                 int type, int nsec3)
 {
 
 	assert(node_index == 0);
 	assert(compare_ok == 1);
 
-	int (*traversal_func)(knot_zone_t *zone,
+	int (*traversal_func)(knot_zone_contents_t *zone,
 	                       void (*function)(knot_node_t *node,
 	                                        void *data),
 	                       void *data);
@@ -396,11 +396,11 @@ static int test_zone_tree_apply(knot_zone_t *zone,
 		case 0: {
 			if (nsec3) {
 				traversal_func =
-					&knot_zone_nsec3_apply_postorder;
+					&knot_zone_contents_nsec3_apply_postorder;
 				diag("Testing postorder traversal");
 			} else {
 				traversal_func =
-					&knot_zone_tree_apply_postorder;
+					&knot_zone_contents_tree_apply_postorder;
 				diag("Testing postorder traversal - NSEC3");
 			}
 			break;
@@ -408,11 +408,11 @@ static int test_zone_tree_apply(knot_zone_t *zone,
 		case 1: {
 			if (nsec3) {
 				traversal_func =
-					&knot_zone_nsec3_apply_inorder;
+					&knot_zone_contents_nsec3_apply_inorder;
 				diag("Testing inorder traversal");
 			} else {
 				traversal_func =
-					&knot_zone_tree_apply_inorder;
+					&knot_zone_contents_tree_apply_inorder;
 				diag("Testing inorder traversal - NSEC3");
 			}
 			break;
@@ -420,11 +420,11 @@ static int test_zone_tree_apply(knot_zone_t *zone,
 		case 2: {
 			if (nsec3) {
 				traversal_func =
-				&knot_zone_nsec3_apply_inorder_reverse;
+				&knot_zone_contents_nsec3_apply_inorder_reverse;
 				diag("Testing inorder reverse traversal");
 			} else {
 				traversal_func =
-				&knot_zone_tree_apply_inorder_reverse;
+				&knot_zone_contents_tree_apply_inorder_reverse;
 				diag("Testing inorder reverse "
 				     "traversal - NSEC3");
 			}
@@ -460,7 +460,7 @@ static int test_zone_tree_apply(knot_zone_t *zone,
 }
 
 /* Tests all kinds of zone traversals, explainded above */
-static int test_zone_traversals(knot_zone_t *zone)
+static int test_zone_traversals(knot_zone_contents_t *zone)
 {
 	for (int i = 0; i < TRAVERSAL_TYPES; i++) {
 		for (int j = 0; j < 2; j++) {
@@ -770,7 +770,7 @@ static int knot_zone_tests_run(int argc, char *argv[])
 	int res = 0,
 	    res_final = 0;
 
-	knot_zone_t *zone = NULL;
+	knot_zone_contents_t *zone = NULL;
 
 	ok((res = test_zone_create(&zone)), "zone: create");
 	res_final *= res;