diff --git a/node_arrange.py b/node_arrange.py
index 370cbeff810919bd807e97452709ce95d10cd5f4..724401bb2b219c111e7de8481958a73e58be9dfd 100644
--- a/node_arrange.py
+++ b/node_arrange.py
@@ -19,7 +19,7 @@
 bl_info = {
 	"name": "Node Arrange",
 	"author": "JuhaW",
-	"version": (0, 2, 1),
+	"version": (0, 2, 2),
 	"blender": (2, 80, 4),
 	"location": "Node Editor > Properties > Trees",
 	"description": "Node Tree Arrangement Tools",
@@ -223,6 +223,19 @@ def nodemargin(self, context):
 
 	ntree = context.space_data.node_tree
 
+	#first arrange nodegroups
+	n_groups = []
+	for i in ntree.nodes:
+		if i.type == 'GROUP':
+			n_groups.append(i)
+			
+	while n_groups:
+		j = n_groups.pop(0)
+		nodes_iterate(j.node_tree)
+		for i in j.node_tree.nodes:
+			if i.type == 'GROUP':
+				n_groups.append(i)
+		
 	nodes_iterate(ntree)
 
 	# arrange nodes + this center nodes together
@@ -264,7 +277,7 @@ class NA_OT_ArrangeNodesOp(bpy.types.Operator):
 def outputnode_search(ntree):	 # return node/None
 
 	outputnodes = []
-	for node in bpy.context.space_data.node_tree.nodes:
+	for node in ntree.nodes:
 		if not node.outputs:
 			for input in node.inputs:
 				if input.is_linked: