diff --git a/pcbnew/pcb_group.cpp b/pcbnew/pcb_group.cpp
index c86fa386cb..a3d77a52bc 100644
--- a/pcbnew/pcb_group.cpp
+++ b/pcbnew/pcb_group.cpp
@@ -27,6 +27,7 @@
 #include <board.h>
 #include <board_item.h>
 #include <footprint.h>
+#include <pcb_generator.h>
 #include <pcb_group.h>
 #include <confirm.h>
 #include <widgets/msgpanel.h>
@@ -210,6 +211,8 @@ PCB_GROUP* PCB_GROUP::DeepClone() const
     {
         if( member->Type() == PCB_GROUP_T )
             newGroup->AddItem( static_cast<PCB_GROUP*>( member )->DeepClone() );
+        else if( member->Type() == PCB_GENERATOR_T )
+            newGroup->AddItem( static_cast<PCB_GENERATOR*>( member )->DeepClone() );
         else
             newGroup->AddItem( static_cast<BOARD_ITEM*>( member->Clone() ) );
     }
@@ -415,7 +418,7 @@ void PCB_GROUP::RunOnDescendants( const std::function<void( BOARD_ITEM* )>& aFun
         {
             aFunction( item );
 
-            if( item->Type() == PCB_GROUP_T )
+            if( item->Type() == PCB_GROUP_T || item->Type() == PCB_GENERATOR_T )
                 item->RunOnDescendants( aFunction, aDepth + 1 );
         }
     }