diff --git a/src/graph/graph.hh b/src/graph/graph.hh
index cd95fe0..5f23414 100644
--- a/src/graph/graph.hh
+++ b/src/graph/graph.hh
@@ -169,6 +169,21 @@
     }
   };
 
+  template <typename T>
+  struct vertex_and_table_t
+  {
+    vertex_and_table_t () : index (0), vertex (nullptr), table (nullptr)
+    {}
+
+    unsigned index;
+    vertex_t* vertex;
+    T* table;
+
+    operator bool () {
+       return table && vertex;
+    }
+  };
+
   /*
    * A topological sorting of an object graph. Ordered
    * in reverse serialization order (first object in the
@@ -373,6 +388,31 @@
     }
   }
 
+  template <typename T>
+  vertex_and_table_t<T> as_table (unsigned parent, const void* offset)
+  {
+    return as_table<T> (index_for_offset (parent, offset));
+  }
+
+  template <typename T>
+  vertex_and_table_t<T> as_table (unsigned index)
+  {
+    if (index >= vertices_.length)
+      return vertex_and_table_t<T> ();
+
+    vertex_and_table_t<T> r;
+    r.vertex = &vertices_[index];
+    r.table = (T*) r.vertex->obj.head;
+    r.index = index;
+    if (!r.table)
+      return vertex_and_table_t<T> ();
+
+    if (!r.table->sanitize (*(r.vertex)))
+      return vertex_and_table_t<T> ();
+
+    return r;
+  }
+
   // Finds the object id of the object pointed to by the offset at 'offset'
   // within object[node_idx].
   unsigned index_for_offset (unsigned node_idx, const void* offset) const
