diff --git a/html/sites/all/modules/ds/ds.module b/html/sites/all/modules/ds/ds.module
index b454b94..c9a40f6 100644
--- a/html/sites/all/modules/ds/ds.module
+++ b/html/sites/all/modules/ds/ds.module
@@ -217,102 +217,104 @@ function ds_build_fields_and_regions(&$object, $module) {
     // Get all fields and settings for this build mode.
     $fields = ds_get_fields($module, $object->type, $object->build_mode, $api_info['extra']);
 
-    // Exclude depends on the region.
-    $region = (isset($field_setting['region'])) ? $field_setting['region'] : DS_DEFAULT_REGION;
-
-    if ($region != 'disabled') {
-
-      $field = isset($fields[$key]) ? $fields[$key] : array();
-
-      // Default class and extra class from the UI.
-      $class = isset($field['properties']['css-class']) ? $field['properties']['css-class'] : 'field-'. strtr($key, '_', '-');
-      if (isset($field_setting['css-class']) && !empty($field_setting['css-class'])) {
-        $class .= ' '. $field_setting['css-class'];
-      }
-      if (isset($field['type']) && ($field['type'] == DS_FIELD_TYPE_GROUP || $field['type'] == DS_FIELD_TYPE_MULTIGROUP)) {
-        $class .= ' field-group';
-      }
-
-      // Build field key.
-      $ds_fields[$key]['key'] = $key;
-      $ds_fields[$key]['region'] = $region;
-      $ds_fields[$key]['title'] = isset($field['title']) ? $field['title'] : '';
-      $ds_fields[$key]['class'] = $class;
-      $ds_fields[$key]['labelformat'] = (isset($field_setting['labelformat'])) ? $field_setting['labelformat'] : DS_DEFAULT_LABEL_FORMAT;
-      $ds_fields[$key]['type'] = empty($field) ? 'other' : 'ds';
-
-      // Check for weight in region and parent (if any). If a parent key is found, we'll unset the original
-      // field from the region it might be set in and we'll add that field to the group array.
-      $weight = (isset($field_setting['weight'])) ? $field_setting['weight'] : DS_DEFAULT_WEIGHT;
-      $parent = (isset($field_setting['parent'])) ? $field_setting['parent'] : '';
-      $ds_fields[$key]['weight'] = $weight;
-      $regions[$region][$key] = $weight;
-
-      if (!empty($parent)) {
-        // Remove the field from the $regions array.
-        unset($regions[$region][$key]);
-        // Get the form of the group and create a theme key.
-        $format = (isset($field_settings[$parent]['format'])) ? $field_settings[$parent]['format'] : 'ds_group_fieldset';
-        $ds_fields[$parent]['theme'] = $format;
-        $ds_groups[$parent][$key] = $weight;
-        //Support Multigroup
-        if($fields[$parent]['type'] == DS_FIELD_TYPE_MULTIGROUP){
-          $ds_groups[$parent]['multigroup']= TRUE;
+    foreach ($field_settings as $key => $field) {
+
+      // Exclude depends on the region.
+      $region = (isset($field['region'])) ? $field['region'] : DS_DEFAULT_REGION;
+
+      if ($region != 'disabled') {
+        //set $field type 
+        $field['type'] = $fields[$key]['type'];
+        
+         // Default class and extra class from the UI.
+        $class = isset($field['properties']['css-class']) ? $field['properties']['css-class'] : 'field-'. strtr($key, '_', '-');
+        if (isset($field['css-class']) && !empty($field['css-class'])) {
+          $class .= ' '. $field['css-class'];
         }
-      }
-
-      // If the field is empty, just continue, the content will
-      // come from another module (most likely CCK).
-      if (empty($field)) {
-        continue;
-      }
-
-      // Change the title if this is configured and label is not hidden.
-      if (isset($field_setting['label_value']) && $ds_fields[$key]['labelformat'] != DS_DEFAULT_LABEL_FORMAT) {
-        $ds_fields[$key]['title'] = t(check_plain($field_setting['label_value']));
-      }
-
-      // Add extra properties.
-      $field['key'] = $key;
-      $field['module'] = $module;
-      $field['object'] = $object;
-      $field['object_type'] = $object_type;
-
-      // Create a $key_rendered variable.
-      $key_rendered = $key .'_rendered';
-
-      // Theming can either be done in preprocess, with a custom function or an
-      // existing formatter theming function. Always pass the $field as parameter.
-      switch ($field['type']) {
-        case DS_FIELD_TYPE_PREPROCESS:
-        case DS_FIELD_TYPE_IGNORE:
-          if (isset($field['properties']['key']) && !empty($field['properties']['key'])) {
-            $ds_preprocess_fields[$key] = array('type' => $field['type'], 'key' => $field['properties']['key']);
-          }
-          else {
-            $ds_preprocess_fields[$key] = $field['type'];
-          }
-          break;
-        case DS_FIELD_TYPE_CODE:
-          $format = (isset($field_setting['format'])) ? $field_setting['format'] : 'ds_eval_code';
-          $field['formatter'] = $format;
-          $object->{$key_rendered} = theme($format, $field);
-          break;
-        case DS_FIELD_TYPE_BLOCK:
-          $object->{$key_rendered} = theme('ds_eval_block', $field);
-          break;
-        case DS_FIELD_TYPE_FUNCTION:
-          if (isset($field['file'])) {
-            include_once($field['file']);
+        if (isset($fields[$key]['type']) && ($fields[$key]['type'] == DS_FIELD_TYPE_GROUP || $fields[$key]['type'] == DS_FIELD_TYPE_MULTIGROUP)) {
+          $class .= ' field-group';
+        }
+  
+        // Build field key.
+        $ds_fields[$key]['key'] = $key;
+        $ds_fields[$key]['region'] = $region;
+        $ds_fields[$key]['title'] = isset($fields[$key]['title']) ? $fields[$key]['title'] : '';
+        $ds_fields[$key]['class'] = $class;
+        $ds_fields[$key]['labelformat'] = (isset($field['labelformat'])) ? $field['labelformat'] : DS_DEFAULT_LABEL_FORMAT;
+        $ds_fields[$key]['type'] = empty($field['type']) ? 'other' : 'ds';
+  
+        // Check for weight in region and parent (if any). If a parent key is found, we'll unset the original
+        // field from the region it might be set in and we'll add that field to the group array.
+        $weight = (isset($field['weight'])) ? $field['weight'] : DS_DEFAULT_WEIGHT;
+        $parent = (isset($field['parent'])) ? $field['parent'] : '';
+        $ds_fields[$key]['weight'] = $weight;
+        $regions[$region][$key] = $weight;
+  
+        if (!empty($parent)) {
+          // Remove the field from the $regions array.
+          unset($regions[$region][$key]);
+          // Get the form of the group and create a theme key.
+          $format = (isset($field_settings[$key][$parent]['format'])) ? $field_settings[$key][$parent]['format'] : 'ds_group_fieldset';
+          $ds_fields[$parent]['theme'] = $format;
+          $ds_groups[$parent][$key] = $weight;
+          //Support Multigroup
+          if($fields[$parent]['type'] == DS_FIELD_TYPE_MULTIGROUP){
+            $ds_groups[$parent]['multigroup']= TRUE;
           }
-          $function = (isset($field_setting['format'])) ? $field_setting['format'] : key($field['properties']['formatters']);
-          $object->{$key_rendered} = $function($field);
-          break;
-        case DS_FIELD_TYPE_THEME:
-          $format = (isset($field_setting['format'])) ? $field_setting['format'] : key($field['properties']['formatters']);
-          $field['formatter'] = $format;
-          $object->{$key_rendered} = theme($format, $field);
-          break;
+        }
+
+        // If the field is empty, just continue, the content will
+        // come from another module (most likely CCK).
+        if (isset($field['storage'])) {
+            continue;
+        }
+        // Change the title if this is configured and label is not hidden.
+        if (isset($field['label_value']) && $ds_fields[$key]['labelformat'] != DS_DEFAULT_LABEL_FORMAT) {
+          $ds_fields[$key]['title'] = t(check_plain($field['label_value']));
+        }
+  
+        // Add extra properties.
+        $field['key'] = $key;
+        $field['module'] = $module;
+        $field['object'] = $object;
+        $field['object_type'] = $object_type;
+  
+        // Create a $key_rendered variable.
+        $key_rendered = $key .'_rendered';
+  
+        // Theming can either be done in preprocess, with a custom function or an
+        // existing formatter theming function. Always pass the $field as parameter.
+        switch ($field['type']) {
+          case DS_FIELD_TYPE_PREPROCESS:
+          case DS_FIELD_TYPE_IGNORE:
+            if (isset($field['properties']['key']) && !empty($field['properties']['key'])) {
+              $ds_preprocess_fields[$key] = array('type' => $field['type'], 'key' => $field['properties']['key']);
+            }
+            else {
+              $ds_preprocess_fields[$key] = $field['type'];
+            }
+            break;
+          case DS_FIELD_TYPE_CODE:
+            $format = (isset($field['format'])) ? $field['format'] : 'ds_eval_code';
+            $field['formatter'] = $format;
+            $object->{$key_rendered} = theme($format, $fields[$key]);
+            break;
+          case DS_FIELD_TYPE_BLOCK:
+            $object->{$key_rendered} = theme('ds_eval_block', $fields[$key]);
+            break;
+          case DS_FIELD_TYPE_FUNCTION:
+            if (isset($fields[$key]['file'])) {
+              include_once($fields[$key]['file']);
+            }
+            $function = (isset($field['format'])) ? $field['format'] : key($field['properties']['formatters']);
+            $object->{$key_rendered} = $function($fields[$key]);
+            break;
+          case DS_FIELD_TYPE_THEME:
+            $format = (isset($field['format'])) ? $field['format'] : key($field['properties']['formatters']);
+            $field['formatter'] = $format;
+            $object->{$key_rendered} = theme($format, $field);
+            break;
+        }
       }
     }
   }
@@ -375,14 +377,13 @@ function ds_render_content($object, $module, $vars, $theme_function = 'ds_field'
       }
     }
   }
-
   // Any groups which have nested content?
   if (!empty($object->ds_groups)) {
     foreach ($object->ds_groups as $group => $fields) {
       asort($fields);
       $group_content = '';
-      $field_count = 0;
-      $group_fields = array();
+      $field_settings = ds_default_value($display_settings, 'fields');
+
 
       // Support for CCK 6.x-3.0 Multigroup
       if ($fields['multigroup']){
@@ -417,7 +418,6 @@ function ds_render_content($object, $module, $vars, $theme_function = 'ds_field'
           }
 	      }
 	    }
-
       // Store group_content as content key in group key of ds_fields.
       if (!empty($group_content)) {
 
@@ -462,7 +462,7 @@ function ds_render_content($object, $module, $vars, $theme_function = 'ds_field'
         if (isset($object->ds_fields[$key]['theme']) && isset($object->ds_fields[$key]['content'])) {
           $count++;
           $region_fields[] = $object->ds_fields[$key];
-          $region_content .= theme($object->ds_fields[$key]['theme'], $object->ds_fields[$key]['content'], $object->ds_fields[$key]);
+          $region_content .= theme($theme_function, $object->ds_fields[$key]['content'], $object->ds_fields[$key]);
         }
         elseif (isset($object->ds_fields[$key]['tab'])) {
           $count++;
@@ -519,7 +519,6 @@ function ds_render_content($object, $module, $vars, $theme_function = 'ds_field'
     }
     $object_display->themed_regions['middle']['extra_class'] .= ' '.$middle_class;
   }
-
   // Theme the regions with their content.
   return theme('ds_regions', $object_display, $module);
 }
@@ -825,14 +824,13 @@ function ds_get_cck_multigroup_content($node, $group_name, $field_settings){
 	$groups = array();
 	$group = array();
 	$instance = 0;
-
+  $parent = array();
 	// Remove 'multigroup' tag.
 	foreach($node->ds_groups[$group_name] as $field => $weight){
 		if($field != 'multigroup'){
-			$groups[$weight]=$field;
+			$groups[$weight]=$field;  	  
 		}
 	}
-
 	// Sort fields.
 	ksort($groups);
   foreach ($groups as $weight => $field){
@@ -843,18 +841,13 @@ function ds_get_cck_multigroup_content($node, $group_name, $field_settings){
   	$instance= count($temp);
   	$group[$field]= $temp;
   }
-
   if ($instance != 0){
-	  for ($i = 0; $i < $instance; $i++){
-	    $output .= "<div class='fieldset'>";
+   $output .= "<div class='$group_name'>";
+    for ($i = 0; $i < $instance; $i++){
 	    foreach ($groups as $weight => $field){
-	    	// Set the type of the field to 'ds' inorder to render throught 'ds_field' theme.
-	    	$node->ds_fields[$field]['type'] = 'ds';
-	  		$output .= theme('ds_field', $group[$field][$i] , $node->ds_fields[$field]);
-	    }
-	  	$output .="</div>";
-	  }
+	    	$output .= theme($field_settings[$group_name]['format'], $group[$field][$i] , $node->ds_fields[$field]);
+      }	  }
+    $output .="</div>";
   }
-
-	return $output;
+	return theme($field_settings[$group_name]['format'], $output, $node->ds_fields[$group_name]);
 }
