diff --git a/design_introspection-plugin/get_cmd.cc b/design_introspection-plugin/get_cmd.cc
index 3341b3c..74f8989 100644
--- a/design_introspection-plugin/get_cmd.cc
+++ b/design_introspection-plugin/get_cmd.cc
@@ -30,11 +30,11 @@
     log("\n");
 }
 
-void GetCmd::ExecuteSelection(RTLIL::Design* design, std::vector<std::string>& raw_args, const CommandArgs& args) {
+void GetCmd::ExecuteSelection(RTLIL::Design* design, const CommandArgs& args) {
     std::vector<std::string> selection_args;
     // Add name of top module to selection string
-    std::transform(raw_args.begin() + args.current_args_idx, raw_args.end(),
-                   std::back_inserter(selection_args), [&](std::string& obj) {
+    std::transform(args.selection_objects.begin(), args.selection_objects.end(),
+                   std::back_inserter(selection_args), [&](const std::string& obj) {
 	               return RTLIL::unescape_id(design->top_module()->name) + "/" +
 	                      SelectionType() + ":" + obj;
                    });
@@ -59,11 +59,10 @@
 }
 
 GetCmd::CommandArgs GetCmd::ParseCommand(const std::vector<std::string>& args) {
-    CommandArgs parsed_args{.current_args_idx = 0,
-                            .filters = Filters(),
+    CommandArgs parsed_args{.filters = Filters(),
                             .is_quiet = false,
                             .selection_objects = SelectionObjects()};
-    size_t argidx;
+    size_t argidx(0);
     for (argidx = 1; argidx < args.size(); argidx++) {
 	std::string arg = args[argidx];
 	if (arg == "-quiet") {
@@ -117,7 +116,6 @@
 	break;
     }
     std::copy(args.begin() + argidx, args.end(), std::back_inserter(parsed_args.selection_objects));
-    parsed_args.current_args_idx = argidx;
     return parsed_args;
 }
 
@@ -127,6 +125,6 @@
     }
 
     CommandArgs parsed_args(ParseCommand(args));
-    ExecuteSelection(design, args, parsed_args);
+    ExecuteSelection(design, parsed_args);
     PackSelectionToTcl(design, parsed_args);
 }
diff --git a/design_introspection-plugin/get_cmd.h b/design_introspection-plugin/get_cmd.h
index 70aaa5b..5eb295b 100644
--- a/design_introspection-plugin/get_cmd.h
+++ b/design_introspection-plugin/get_cmd.h
@@ -10,7 +10,6 @@
     using Filters = std::vector<Filter>;
     using SelectionObjects = std::vector<std::string>;
     struct CommandArgs {
-	size_t current_args_idx;
 	Filters filters;
 	bool is_quiet;
 	SelectionObjects selection_objects;
@@ -28,7 +27,7 @@
     CommandArgs ParseCommand(const std::vector<std::string>& args);
     virtual void ExtractSelection(Tcl_Obj*, RTLIL::Module*, const CommandArgs& args) {}
     virtual void ExecuteSelection(RTLIL::Design* design,
-                                  std::vector<std::string>& raw_args, const CommandArgs& args);
+                                  const CommandArgs& args);
     virtual void PackSelectionToTcl(RTLIL::Design* design, const CommandArgs& args);
 };
 
