diff --git a/lib/prospectus/item.rb b/lib/prospectus/item.rb
index <HASH>..<HASH> 100644
--- a/lib/prospectus/item.rb
+++ b/lib/prospectus/item.rb
@@ -18,6 +18,11 @@ module Prospectus
       @name
     end
 
+    def prefix(value)
+      raise('Name not set for sub-item') unless @name
+      @name = value + '::' + @name
+    end
+
     def noop
       @expected = 'noop'
       @actual = 'noop'
@@ -63,9 +68,6 @@ module Prospectus
     def deps(&block)
       dsl = ListDSL.new(@item.list, @options)
       dsl.instance_eval(&block)
-      @item.list.items.each do |dep|
-        dep.instance_variable_set(:@name, "#{@item.name}::#{dep.name}")
-      end
     end
 
     private
diff --git a/lib/prospectus/list.rb b/lib/prospectus/list.rb
index <HASH>..<HASH> 100644
--- a/lib/prospectus/list.rb
+++ b/lib/prospectus/list.rb
@@ -32,7 +32,10 @@ module Prospectus
       dsl = ItemDSL.new(item, @options)
       dsl.instance_eval(&block)
       @list.items << item
-      item.list.items.each { |x| @list.items << x }
+      item.list.items.each do |x|
+        x.prefix item.name
+        @list.items << x
+      end
     end
   end
 end
support prefixing deps given multiple dep blocks