diff --git a/gdb-port/parser-type-instrumentation-gdb.py b/gdb-port/parser-type-instrumentation-gdb.py
index b6d7a30f11b4ea1e8bb9371db54060537762214a..faf5bec840ab5931569590bf5cbfc5deecb39f8c 100644
--- a/gdb-port/parser-type-instrumentation-gdb.py
+++ b/gdb-port/parser-type-instrumentation-gdb.py
@@ -10,6 +10,27 @@ parser_name_defaults = {
 	#...
 }
 
+class HParserEnv:
+	def __init__(self, parser, top_level_parse):
+		print("HParserEnv constructed") # DEBUG
+
+	def name_from_vtable(self, parser):
+		parser_addr = parser.address
+		# TODO: do this without passing a string to gdb.parse_and_eval()
+		# perhaps using gdb.Value would be the best
+		vtable = gdb.parse_and_eval("((HParser*) " + parser_addr + ")->env->vtable")
+		try:
+			name = parser_name_defaults[vtable.name()]
+		except KeyError:
+			name = "(Unknown parser type)"
+
+		return name
+
+# TODO: Unit test:
+# make SequenceEnv(parser, top_level_parse)
+# parser_array = [top_level_parse.add_or_get_parser(gdb.parse_and_eval("((HSequence*) parser->env)->p_array[" + str(index) +"]")) for index in range(0, num_parsers)]
+# compare pointers for equality
+
 class SequenceEnv:
 	def __init__(self, parser, top_level_parse):
 		self.parser = parser
@@ -27,6 +48,7 @@ class SequenceEnv:
 		for index in range(0, num_parsers):
 			parser_p = gdb.parse_and_eval("((HSequence*) parser->env)->p_array[" + str(index) + "]")
 			parser_obj = top_level_parse.add_or_get_parser(parser_p)
+			#parser_obj.name_parser( self.name_from_vtable(parser_obj) )
 			self.member_parsers.append(parser_obj)
 
 		# TODO