diff --git a/java/hdt-java-mvn/src/main/java/sage/backends/CustomHDTIterator.java b/java/hdt-java-mvn/src/main/java/sage/backends/CustomIDIterator.java
similarity index 96%
rename from java/hdt-java-mvn/src/main/java/sage/backends/CustomHDTIterator.java
rename to java/hdt-java-mvn/src/main/java/sage/backends/CustomIDIterator.java
index c700e81c98ac1bb8398cba5552bc6dbcf41099e3..2386a74e474445b1c154b16a4740aa4f86be64a6 100644
--- a/java/hdt-java-mvn/src/main/java/sage/backends/CustomHDTIterator.java
+++ b/java/hdt-java-mvn/src/main/java/sage/backends/CustomIDIterator.java
@@ -6,11 +6,11 @@ import org.rdfhdt.hdt.triples.TripleID;
 import java.util.ArrayList;
 import java.util.List;
 
-public class CustomHDTIterator {
+public class CustomIDIterator {
 
     private final IteratorTripleID iteratorTripleID;
 
-    public CustomHDTIterator(IteratorTripleID iteratorTripleID) {
+    public CustomIDIterator(IteratorTripleID iteratorTripleID) {
         this.iteratorTripleID = iteratorTripleID;
     }
 
diff --git a/java/hdt-java-mvn/src/main/java/sage/backends/Example.java b/java/hdt-java-mvn/src/main/java/sage/backends/Example.java
index 03b339f99e82eb5fbe83a6813773b85c749b9c69..125e3add2edf2625eabddea8c10c9414780465cb 100644
--- a/java/hdt-java-mvn/src/main/java/sage/backends/Example.java
+++ b/java/hdt-java-mvn/src/main/java/sage/backends/Example.java
@@ -18,7 +18,7 @@ public class Example {
         final HDT hdt = HDTManager.loadHDT(path);
 
         final IteratorTripleID iterator = hdt.getTriples().search(new TripleID(0, 0, 0));
-        final CustomHDTIterator customHDTIterator = new CustomHDTIterator(iterator);
+        final CustomIDIterator customHDTIterator = new CustomIDIterator(iterator);
         long qt = 0;
 
         while (customHDTIterator.hasNext()) {
@@ -32,7 +32,7 @@ public class Example {
         final HDT hdt = HDTManager.loadHDT(path);
 
         final IteratorTripleID iterator = hdt.getTriples().search(new TripleID(0, 0, 0));
-        final CustomHDTIterator customHDTIterator = new CustomHDTIterator(iterator);
+        final CustomIDIterator customHDTIterator = new CustomIDIterator(iterator);
         long qt = 0;
 
         long[][] results = customHDTIterator.next(pageSize);
@@ -47,7 +47,7 @@ public class Example {
         final HDT hdt = HDTManager.loadHDT(path);
 
         final IteratorTripleID iterator = hdt.getTriples().search(new TripleID(0, 0, 0));
-        final CustomHDTIterator customHDTIterator = new CustomHDTIterator(iterator);
+        final CustomIDIterator customHDTIterator = new CustomIDIterator(iterator);
         long qt = 0;
 
         long[] results = customHDTIterator.nextInSingleArray(pageSize);
@@ -62,7 +62,7 @@ public class Example {
         final HDT hdt = HDTManager.loadHDT(path);
 
         final IteratorTripleID iterator = hdt.getTriples().search(new TripleID(0, 0, 0));
-        final CustomHDTIterator customHDTIterator = new CustomHDTIterator(iterator);
+        final CustomIDIterator customHDTIterator = new CustomIDIterator(iterator);
         long qt = 0;
 
         ProtoTripleID.PagedTripleId results = ProtoTripleID.PagedTripleId
diff --git a/java/hdt-java-mvn/src/main/java/sage/backends/Main.java b/java/hdt-java-mvn/src/main/java/sage/backends/Main.java
index a4263b7ecd39071141376099aa02e168b047fc3f..c9dd6729684b20e398d2245d3634c060382dcbf1 100644
--- a/java/hdt-java-mvn/src/main/java/sage/backends/Main.java
+++ b/java/hdt-java-mvn/src/main/java/sage/backends/Main.java
@@ -11,7 +11,7 @@ public class Main {
     public static long makeAll(String path) throws IOException {
 
         HDT hdt = HDTManager.loadHDT(path);
-        CustomHDTIterator iterator = new CustomHDTIterator(hdt.getTriples().search(new TripleID(0, 0, 0)));
+        CustomIDIterator iterator = new CustomIDIterator(hdt.getTriples().search(new TripleID(0, 0, 0)));
 
         long qt = 0;
         while (iterator.hasNext()) {
diff --git a/java/hdt-java-mvn/src/main/proto/ProtoTripleValue.proto b/java/hdt-java-mvn/src/main/proto/ProtoTripleValue.proto
new file mode 100644
index 0000000000000000000000000000000000000000..66c5c19750b14dd091800d894f5ff121b80fa334
--- /dev/null
+++ b/java/hdt-java-mvn/src/main/proto/ProtoTripleValue.proto
@@ -0,0 +1,13 @@
+syntax = "proto3";
+
+package sage.backends;
+
+message TripleValue {
+  string s = 1;
+  string p = 2;
+  string o = 3;
+}
+
+message PagedTripleValue {
+  repeated TripleValue triples = 1;
+}
\ No newline at end of file
diff --git a/src/hdt/iterator_triple_id.rs b/src/hdt/iterator_triple_id.rs
index 45bccd6dc15c85856c662c598ede37597a3f6fd5..7e0894bfa593b5e77a59247cb4a889176c34f49f 100644
--- a/src/hdt/iterator_triple_id.rs
+++ b/src/hdt/iterator_triple_id.rs
@@ -124,11 +124,11 @@ impl<'a> IteratorTripleID<'a> {
             return Err(iterator_jobject.err().unwrap());
         }
 
-        let custom_iterator_jclass_result = match env.find_class("sage/backends/CustomHDTIterator")
+        let custom_iterator_jclass_result = match env.find_class("sage/backends/CustomIDIterator")
         {
             Ok(custom_iterator_class) => Ok(custom_iterator_class),
             Err(_e) => Err(HDTError::new(
-                "Error during retrieve sage.backends.CustomHDTIterator class".to_string(),
+                "Error during retrieve sage.backends.CustomIDIterator class".to_string(),
                 Some(HDTErrorCause::JNIError(_e)),
             )),
         };
@@ -149,7 +149,7 @@ impl<'a> IteratorTripleID<'a> {
         ) {
             Ok(custom_iterator) => Ok(custom_iterator),
             Err(_e) => Err(HDTError::new(
-                "Error during sage.backends.CustomHDTIterator creation for iterator".to_string(),
+                "Error during sage.backends.CustomIDIterator creation for iterator".to_string(),
                 Some(HDTErrorCause::JNIError(_e)),
             )),
         };
@@ -168,7 +168,7 @@ impl<'a> IteratorTripleID<'a> {
         garbage_collector.add(JNIRef::Object(custom_iterator_jobject_unwrapped));
 
         let has_next_method_id =
-            match env.get_method_id("sage/backends/CustomHDTIterator", "hasNext", "()Z") {
+            match env.get_method_id("sage/backends/CustomIDIterator", "hasNext", "()Z") {
                 Ok(has_next_method) => Ok(has_next_method),
                 Err(_e) => Err(HDTError::new(
                     "Error during fetch method id for hasNext".to_string(),
@@ -181,7 +181,7 @@ impl<'a> IteratorTripleID<'a> {
         }
 
         let next_method_id = match env.get_method_id(
-            "sage/backends/CustomHDTIterator",
+            "sage/backends/CustomIDIterator",
             "next",
             "()Lorg/rdfhdt/hdt/triples/TripleID;",
         ) {
@@ -197,7 +197,7 @@ impl<'a> IteratorTripleID<'a> {
         }
 
         let count_next_method_id =
-            match env.get_method_id("sage/backends/CustomHDTIterator", "countNext", "(I)J") {
+            match env.get_method_id("sage/backends/CustomIDIterator", "countNext", "(I)J") {
                 Ok(count_next_method) => Ok(count_next_method),
                 Err(_e) => Err(HDTError::new(
                     "Error during fetch method id for countNext".to_string(),
@@ -210,7 +210,7 @@ impl<'a> IteratorTripleID<'a> {
         }
 
         let paged_next_with_subarray_method_id =
-            match env.get_method_id("sage/backends/CustomHDTIterator", "next", "(I)[[J") {
+            match env.get_method_id("sage/backends/CustomIDIterator", "next", "(I)[[J") {
                 Ok(paged_next_with_subarray_method) => Ok(paged_next_with_subarray_method),
                 Err(_e) => Err(HDTError::new(
                     "Error during fetch method id for paged next".to_string(),
@@ -223,7 +223,7 @@ impl<'a> IteratorTripleID<'a> {
         }
 
         let paged_next_in_single_array_method_id = match env.get_method_id(
-            "sage/backends/CustomHDTIterator",
+            "sage/backends/CustomIDIterator",
             "nextInSingleArray",
             "(I)[J",
         ) {
@@ -239,7 +239,7 @@ impl<'a> IteratorTripleID<'a> {
         }
 
         let paged_next_with_protobuf_method_id =
-            match env.get_method_id("sage/backends/CustomHDTIterator", "nextProtobuf", "(I)[B") {
+            match env.get_method_id("sage/backends/CustomIDIterator", "nextProtobuf", "(I)[B") {
                 Ok(paged_next_with_protobuf_method) => Ok(paged_next_with_protobuf_method),
                 Err(_e) => Err(HDTError::new(
                     "Error during fetch method id for paged nextProtobuf".to_string(),
@@ -279,7 +279,7 @@ impl<'a> IteratorTripleID<'a> {
                 )),
             },
             Err(_e) => Err(HDTError::new(
-                "Error during call of sage.backends.CustomHDTIterator.countNext() for long fetch"
+                "Error during call of sage.backends.CustomIDIterator.countNext() for long fetch"
                     .to_string(),
                 Some(HDTErrorCause::JNIError(_e)),
             )),
@@ -377,7 +377,7 @@ impl<'a> IteratorTripleID<'a> {
                 )),
             },
             Err(_e) => Err(HDTError::new(
-                "Error during call of sage.backends.CustomHDTIterator.next() for long[][] fetch"
+                "Error during call of sage.backends.CustomIDIterator.next() for long[][] fetch"
                     .to_string(),
                 Some(HDTErrorCause::JNIError(_e)),
             )),
@@ -451,7 +451,7 @@ impl<'a> IteratorTripleID<'a> {
                 )),
             },
             Err(_e) => Err(HDTError::new(
-                "Error during call of sage.backends.CustomHDTIterator.nextInSingleArray() for long[] fetch"
+                "Error during call of sage.backends.CustomIDIterator.nextInSingleArray() for long[] fetch"
                     .to_string(),
                 Some(HDTErrorCause::JNIError(_e)),
             )),
@@ -517,7 +517,7 @@ impl<'a> IteratorTripleID<'a> {
                 )),
             },
             Err(_e) => Err(HDTError::new(
-                "Error during call of sage.backends.CustomHDTIterator.nextProtobuf() for byte[] fetch"
+                "Error during call of sage.backends.CustomIDIterator.nextProtobuf() for byte[] fetch"
                     .to_string(),
                 Some(HDTErrorCause::JNIError(_e)),
             )),
@@ -586,7 +586,7 @@ impl<'a> IteratorTripleID<'a> {
                 )),
             },
             Err(_e) => Err(HDTError::new(
-                "Error during call of sage.backends.CustomHDTIterator.nextProtobuf() for byte[] fetch"
+                "Error during call of sage.backends.CustomIDIterator.nextProtobuf() for byte[] fetch"
                     .to_string(),
                 Some(HDTErrorCause::JNIError(_e)),
             )),
@@ -608,7 +608,7 @@ impl<'a> IteratorTripleID<'a> {
                 )),
             },
             Err(_e) => Err(HDTError::new(
-                "Error during call of sage.backends.CustomHDTIterator.hasNext() for boolean fetch"
+                "Error during call of sage.backends.CustomIDIterator.hasNext() for boolean fetch"
                     .to_string(),
                 Some(HDTErrorCause::JNIError(_e)),
             )),
@@ -626,7 +626,7 @@ impl<'a> IteratorTripleID<'a> {
                 )),
             },
             Err(_e) => Err(HDTError::new(
-                "Error during call of sage.backends.CustomHDTIterator.count()".to_string(),
+                "Error during call of sage.backends.CustomIDIterator.count()".to_string(),
                 Some(HDTErrorCause::JNIError(_e)),
             )),
         }
@@ -656,7 +656,7 @@ impl<'a> IteratorTripleID<'a> {
                 )),
             },
             Err(_e) => Err(HDTError::new(
-                "Error during call of sage.backends.CustomHDTIterator.next()".to_string(),
+                "Error during call of sage.backends.CustomIDIterator.next()".to_string(),
                 Some(HDTErrorCause::JNIError(_e)),
             )),
         }