diff --git a/src/mhtree/Node.java b/src/mhtree/Node.java
index 2bfcdaaf8595a8704a4ab6987ba52de37491a319..46f16bc4aabccc0f6b17c40b89c6f0c2352336bb 100644
--- a/src/mhtree/Node.java
+++ b/src/mhtree/Node.java
@@ -11,7 +11,7 @@ import java.util.Collection;
 import java.util.List;
 import java.util.stream.Collectors;
 
-abstract class Node implements Serializable {
+public abstract class Node implements Serializable {
 
     /**
      * Serialization ID
@@ -38,9 +38,32 @@ abstract class Node implements Serializable {
                 .flatMap(Collection::stream)
                 .collect(Collectors.toList());
 
+        if (nodes.size() == distances.getObjectCount()) {
+            return new InternalNode(distances, insertType, objectToNodeDistance, nodes);
+        }
+
         return new InternalNode(distances.getSubset(objects), insertType, objectToNodeDistance, nodes);
     }
 
+    /**
+     * Returns a list of hull objects.
+     *
+     * @return a list of hull objects
+     */
+    public List<LocalAbstractObject> getHullObjects() {
+        return hull.getHull();
+    }
+
+    /**
+     * Returns true if the {@code object} is covered.
+     *
+     * @param object the object to be checked
+     * @return true if the {@code object} is covered.
+     */
+    public boolean isCovered(LocalAbstractObject object) {
+        return hull.isExternalCovered(object);
+    }
+
     @Override
     public String toString() {
         return "Node{hull=" + hull + '}';
@@ -66,10 +89,6 @@ abstract class Node implements Serializable {
         return !isLeaf();
     }
 
-    protected List<LocalAbstractObject> getHullObjects() {
-        return hull.getHull();
-    }
-
     protected int getHullObjectCount() {
         return hull.getRepresentativesCount();
     }