diff --git includes/generate.inc includes/generate.inc
index 0257944..9c4ffe1 100644
--- includes/generate.inc
+++ includes/generate.inc
@@ -177,6 +177,35 @@ class ModuleBuilderGeneratorInfo extends ModuleBuilderGenerator {
   
   // Override abstract...
   function code_body() {}
+
+  /**
+   * Merge an array of info file lines into a single piece of text.
+   *
+   * @param $lines
+   *  An array of lines keyed by label.
+   *  Place grouped labels (eg, dependencies) into an array of
+   *  their own, keyed numerically.
+   *  Eg:
+   *    name => module name
+   *    dependencies => array(foo, bar)
+   *
+   * @return
+   *  The merged text suitable for output into a .info file.
+   */
+  function merge_info_lines($lines) {
+    foreach ($lines as $label => $data) {
+      if (is_array($data)) {
+        foreach ($data as $data_piece) {
+          $merged_lines[] = $label . "[] = $data_piece"; // Urgh terrible variable name!
+        }
+      }
+      else {
+        $merged_lines[] = "$label = $data";
+      }
+    }
+    $info = implode("\n", $merged_lines);
+    return $info;
+  }
 }
 
 /**
@@ -186,18 +215,20 @@ class ModuleBuilderGeneratorInfo5 extends ModuleBuilderGeneratorInfo {
   function code_body() {
     $module_data = $this->module_data;
     
-    $info .= 'name = ' . $module_data['module_readable_name'] . "\n";
-    $info .= 'description = '. $module_data['module_short_description'] ."\n";
+    $lines = array();
+    $lines['name'] = $module_data['module_readable_name'];
+    $lines['description'] = $module_data['module_short_description'];
 
     if (!empty($module_data['module_dependencies'])) {
-      $info .= 'dependencies = '. $module_data['module_dependencies'] ."\n";
+      $lines['dependencies'] = $module_data['module_dependencies'];
     }
 
     if (!empty($module_data['module_package'])) {
-      $info .= 'package = '. $module_data['module_package'] ."\n";
+      $lines['package'] = $module_data['module_package'];
     }
 
-    return $info;    
+    $info = $this->merge_info_lines($lines);
+    return $info;
   }
 }
 
@@ -208,20 +239,23 @@ class ModuleBuilderGeneratorInfo6 extends ModuleBuilderGeneratorInfo {
   function code_body() {
     $module_data = $this->module_data;
 
-    $info .= 'name = ' . $module_data['module_readable_name'] . "\n";
-    $info .= 'description = '. $module_data['module_short_description'] ."\n";
-
+    $lines = array();
+    $lines['name'] = $module_data['module_readable_name'];
+    $lines['description'] = $module_data['module_short_description'];
     if (!empty($module_data['module_dependencies'])) {
-      foreach (explode(' ', $module_data['module_dependencies']) as $dep) {
-        $info .= 'dependencies[] = '. $dep ."\n";
+      // For lines which form a set with the same key and array markers,
+      // simply make an array.
+      foreach (explode(' ', $module_data['module_dependencies']) as $dependency) {
+        $lines['dependencies'][] = $dependency;
       }
     }
-
+    
     if (!empty($module_data['module_package'])) {
-      $info .= 'package = '. $module_data['module_package'] ."\n";
+      $lines['package'] = $module_data['module_package'];
     }
-    $info .= "core = 6.x\n";
-
+    $lines['core'] = "6.x";
+    
+    $info = $this->merge_info_lines($lines);
     return $info;
   }
 }
@@ -234,26 +268,30 @@ class ModuleBuilderGeneratorInfo7 extends ModuleBuilderGeneratorInfo {
     $module_data = $this->module_data;
     //print_r($module_data);
 
-    $info .= 'name = ' . $module_data['module_readable_name'] . "\n";
-    $info .= 'description = '. $module_data['module_short_description'] ."\n";
-
+    $lines = array();
+    $lines['name'] = $module_data['module_readable_name'];
+    $lines['description'] = $module_data['module_short_description'];
     if (!empty($module_data['module_dependencies'])) {
-      foreach (explode(' ', $module_data['module_dependencies']) as $dep) {
-        $info .= 'dependencies[] = '. $dep ."\n";
+      // For lines which form a set with the same key and array markers,
+      // simply make an array.
+      foreach (explode(' ', $module_data['module_dependencies']) as $dependency) {
+        $lines['dependencies'][] = $dependency;
       }
     }
 
     if (!empty($module_data['module_package'])) {
-      $info .= 'package = '. $module_data['module_package'] ."\n";
+      $lines['package'] = $module_data['module_package'];
     }
-    $info .= "core = 7.x\n";
+
+    $lines['core'] = "7.x";
 
     if (is_array($module_data['module_files'])) {
       foreach ($module_data['module_files'] as $file) {
-        $info .= 'files[] = '. $file ."\n";      
+        $lines['files'][] = $file;
       }
     }
 
+    $info = $this->merge_info_lines($lines);
     return $info;
   }
 }
