diff -ruN b/class.tx_commerce_category.php a/class.tx_commerce_category.php
--- b/class.tx_commerce_category.php	2012-09-13 16:31:09.856899811 +0200
+++ a/class.tx_commerce_category.php	2012-09-13 16:30:47.372900538 +0200
@@ -608,8 +608,8 @@
 	 * @param integer $depth Maximum depth for going recursive
 	 * @return array List of category uids
 	 */
-	public function get_rec_child_categories_uidlist($depth = FALSE){
-		$return_list = array();
+	public function get_rec_child_categories_uidlist(&$depth = FALSE){
+		$return_list = array();        
 		if ($depth) {
 			$depth --;
 		}
diff -ruN b/class.tx_commerce_pibase.php a/class.tx_commerce_pibase.php
--- b/class.tx_commerce_pibase.php	2012-09-13 16:31:15.296899641 +0200
+++ a/class.tx_commerce_pibase.php	2012-09-13 16:30:58.716900174 +0200
@@ -425,7 +425,6 @@
 
 
 	function makeListView(){
-
 		/**
 		 * Category LIST
 		 *
@@ -439,9 +438,7 @@
 		
 		
 		if ($this->category->has_subcategories ( )){
-			
 			foreach ($this->category->categories as $categoryUid => $oneCategory)	{
-
 				$oneCategory->load_Data();			
 				
 				if ($this->conf['hideEmptyCategories'] == 1) {
@@ -483,7 +480,8 @@
 				$typoLinkConf['useCacheHash'] = 1;
 				$typoLinkConf['additionalParams'] = ini_get('arg_separator.output').$this->prefixId.'[catUid]='.$oneCategory->getUid();
 
-				$productArray = $oneCategory->getAllProducts();
+				$productArray = $oneCategory->getAllProducts(intval($this->conf['groupProductsByCategoryMaxDepth']));
+
 				if (1 == $this->conf['displayProductIfOneProduct'] && 1 == count($productArray)) { 																
 					$typoLinkConf['additionalParams'] .= ini_get('arg_separator.output').$this->prefixId.'[showUid]='.$productArray[0];
 				}					
@@ -521,13 +519,12 @@
 
 				
 				if($this->conf['groupProductsByCategory'] && !$this->conf['hideProductsInList']){
-
-					$categoryProducts = $oneCategory->getAllProducts();
+					
 					if($this->conf['useStockHandling'] == 1) {
-			  			$categoryProducts = tx_commerce_div::removeNoStockProducts($categoryProducts,$this->conf['products.']['showWithNoStock']);
+			  			$productArray = tx_commerce_div::removeNoStockProducts($categoryProducts,$this->conf['products.']['showWithNoStock']);
 			  		}
-					$categoryProducts = array_slice($categoryProducts,0,$this->conf['numberProductsInSubCategory']);
-					$productList = $this->renderProductsForList($categoryProducts,$this->conf['templateMarker.']['categoryProductList.'],$this->conf['templateMarker.']['categoryProductListIterations']);
+					$productArray = array_slice($productArray,0,$this->conf['numberProductsInSubCategory']);
+					$productList = $this->renderProductsForList($productArray,$this->conf['templateMarker.']['categoryProductList.'],$this->conf['templateMarker.']['categoryProductListIterations']);
 
 				/**
 				 * Insert the Productlist