diff --git a/fserver.drush.inc b/fserver.drush.inc
index 3acf0f6..46cbfe6 100755
--- a/fserver.drush.inc
+++ b/fserver.drush.inc
@@ -129,7 +129,7 @@ function _fserver_drush_get_projects() {
     $result = db_query("SELECT nid, title FROM {node} WHERE type = :type AND status = :status", array(':type' => 'fserver_project', ':status' => 1));
     foreach ($result as $row) {
       $node = node_load($row->nid);
-      $project = new FserverProject($node, $node->field_fserver_name[$node->language][0]['value'], $node->field_fserver_method[$node->language][0]['value'], $node->field_fserver_repository[$node->language][0]['value']);
+      $project = new FserverProject($node, $node->field_fserver_name[$node->language][0]['value'], $node->field_fserver_method[$node->language][0]['value'], $node->field_fserver_repository[$node->language][0]['value'], $node->field_fserver_repository_subdir[$node->language][0]['value']);
       $projects[$project->name] = $project;
     }
   }
@@ -150,11 +150,12 @@ class FserverProject {
   /**
    * Constructor.
    */
-  function __construct($node, $name, $method, $repository) {
+  function __construct($node, $name, $method, $repository, $repo_subdir = '') {
     $this->node = $node;
     $this->name = $name;
     $this->method = $method;
     $this->repository = $repository;
+    $this->repo_subdir = $repo_subdir;
 
     // We try to create a backend for us to user later:
     $method_class = 'FserverProject_' . $this->method;
@@ -179,7 +180,7 @@ class FserverProject {
     $new_tags = array();
     $releases = $this->get_releases();
     foreach ($this->get_tags() as $tag_id => $tag) {
-      if (!isset($releases[$tag_id])) {
+      if (!isset($releases[$tag_id]) || (isset($releases[$tag_id]['dev']) && $releases[$tag_id]['dev'] === TRUE)) {
         $new_tags[$tag_id] = $tag;
       }
     }
@@ -196,7 +197,13 @@ class FserverProject {
       foreach ($result as $row) {
         $node = node_load($row->nid);
         if ($node && isset($node->field_fserver_project[$node->language][0]['nid']) && $node->field_fserver_project[$node->language][0]['nid'] == $this->node->nid) {
-          $this->releases[fserver_generate_version($node, TRUE)] = $node;
+          $version= fserver_generate_version($node, TRUE);
+          $this->releases[$version]['node'] = $node;
+          $this->releases[$version]['dev'] = FALSE;
+          // mark dev versions
+          if (isset($node->field_fserver_dev_version[$node->language][0]['value']) && $node->field_fserver_dev_version[$node->language][0]['value'] == '1') {
+            $this->releases[$version]['dev'] = TRUE;
+          }
         }
       }
     }
@@ -225,38 +232,53 @@ class FserverProject {
   function create_release($tag_id) {
     $tag = $this->get_tag($tag_id);
     if ($tag && $file = $this->create_package($tag_id)) {
-      $node = new stdClass();
-      $node->type = 'fserver_release';
-      $node->status = 1;
-      $node->created = !empty($tag['timestamp']) ? $tag['timestamp'] : REQUEST_TIME;
-      $node->uid = $this->node->uid;
-      $node->title = "{$this->name} {$tag_id}";
-      $node->language = 'und';
-      $node->body = array(LANGUAGE_NONE => array(0 => array('value' => !empty($tag['message']) ? $tag['message'] : '')));
-
-      $node->field_fserver_file = array(LANGUAGE_NONE => array(0 => (array) $file));
-      $node->field_fserver_project = array(LANGUAGE_NONE => array(0 => array('nid' => $this->node->nid)));
-      $node->field_fserver_api = array(LANGUAGE_NONE => array(0 => array('value' => $tag['core'])));
-      $node->field_fserver_versionmajor = array(LANGUAGE_NONE => array(0 => array('value' => $tag['major'])));
-      $node->field_fserver_versionpatch = array(LANGUAGE_NONE => array(0 => array('value' => $tag['patch'])));
-      $node->field_fserver_versionextra = array(LANGUAGE_NONE => array(0 => array('value' => $tag['extra'])));
-
-      // Handle the release extra info
-      $extratype = FSERVER_EXTRATYPE_RELEASE;
-      $extranum = NULL;
-      if (!empty($tag['extra'])) {
-        $extratypes = fserver_cck_options('extratype');
-        $extratypes = array_flip($extratypes);
-        $extratype = array_key_exists($tag['extratype'], $extratypes) ? $extratypes[$tag['extratype']] : FSERVER_EXTRATYPE_OTHER;
-        $extranum = $tag['extranum'];
+      // check for dev version, only need to replace the file
+      if (isset($this->releases[$tag_id]['dev']) && $this->releases[$tag_id]['dev'] === TRUE) {
+        $node = node_load($this->releases[$tag_id]['node']->nid);
+        // $node->field_fserver_file = array(LANGUAGE_NONE => array(0 => (array) $file));
+        // node_save($node);
       }
-      $node->field_fserver_versionextratype = array(LANGUAGE_NONE => array(0 => array('value' => $extratype)));
-      $node->field_fserver_versionextranum = array(LANGUAGE_NONE => array(0 => array('value' => $extranum)));
+      else {
+        $node = new stdClass();
+        $node->type = 'fserver_release';
+        $node->status = 1;
+        $node->created = (!empty($tag['timestamp']) && is_numeric($tag['timestamp'])) ? $tag['timestamp'] : REQUEST_TIME;
+        $node->uid = $this->node->uid;
+        $node->title = "{$this->name} {$tag_id}";
+        $node->language = LANGUAGE_NONE;
+        $node->body = array(LANGUAGE_NONE => array(0 => array('value' => !empty($tag['message']) ? $tag['message'] : '')));
+
+        $node->field_fserver_file = array(LANGUAGE_NONE => array(0 => (array) $file));
+        $node->field_fserver_project = array(LANGUAGE_NONE => array(0 => array('nid' => $this->node->nid)));
+        $node->field_fserver_api = array(LANGUAGE_NONE => array(0 => array('value' => $tag['core'])));
+        $node->field_fserver_versionmajor = array(LANGUAGE_NONE => array(0 => array('value' => $tag['major'])));
+        $node->field_fserver_versionpatch = array(LANGUAGE_NONE => array(0 => array('value' => $tag['patch'])));
+        $node->field_fserver_versionextra = array(LANGUAGE_NONE => array(0 => array('value' => $tag['extra'])));
+
+        // Handle the release extra info
+        $extratype = FSERVER_EXTRATYPE_RELEASE;
+        $extranum = NULL;
+        if (!empty($tag['extra'])) {
+          $extratypes = fserver_cck_options('extratype');
+          $extratypes = array_flip($extratypes);
+          $extratype = array_key_exists($tag['extratype'], $extratypes) ? $extratypes[$tag['extratype']] : FSERVER_EXTRATYPE_OTHER;
+          $extranum = $tag['extranum'];
+        }
+        $node->field_fserver_versionextratype = array(LANGUAGE_NONE => array(0 => array('value' => $extratype)));
+        $node->field_fserver_versionextranum = array(LANGUAGE_NONE => array(0 => array('value' => $extranum)));
 
-      // @TODO
-      $node->field_fserver_recommended = array(LANGUAGE_NONE => array(0 => array('value' => 1)));
-      $node->field_fserver_security = array(LANGUAGE_NONE => array(0 => array('value' => 0)));
-      node_save($node);
+        // @TODO
+        if ($tag['patch'] == 'x') {
+          $node->field_fserver_recommended = array(LANGUAGE_NONE => array(0 => array('value' => 0)));
+          $node->field_fserver_dev_version = array(LANGUAGE_NONE => array(0 => array('value' => 1)));
+        }
+        else {
+          $node->field_fserver_recommended = array(LANGUAGE_NONE => array(0 => array('value' => 1)));
+          $node->field_fserver_dev_version = array(LANGUAGE_NONE => array(0 => array('value' => 0)));
+        }
+        $node->field_fserver_security = array(LANGUAGE_NONE => array(0 => array('value' => 0)));
+        node_save($node);
+      }
     }
     return $node;
   }
@@ -287,12 +309,17 @@ class FserverProject {
       $packaging[] = "version = \"{$tag['version']}\"";
       $packaging = "\n" . implode("\n", $packaging);
 
-      $files = file_scan_directory($this->backend->path, '/.info$/');
+      $filespath = $this->backend->path;
+      if (!empty($this->backend->FserverProject->repo_subdir)) {
+        $filespath .= '/' . $this->backend->FserverProject->repo_subdir;
+      }
+
+      $files = file_scan_directory($filespath, '/.info$/');
       foreach ($files as $path => $file) {
         // @TODO: Parse the info file or not?
-        $info_file = file_get_contents($file->filename);
+        $info_file = file_get_contents($path);
         $info_file .= $packaging;
-        file_put_contents($file->filename, $info_file);
+        $res = file_put_contents($path, $info_file);
       }
     }
   }
@@ -340,6 +367,8 @@ class FserverProject_git {
       _drush_shell_exec_output_set(' '); // Clear output cache.
       drush_op('drush_shell_exec', "git ls-remote --tags {$this->FserverProject->repository} | awk '{print $2;}'");
       $lines = drush_shell_exec_output();
+      drush_op('drush_shell_exec', "git ls-remote --heads {$this->FserverProject->repository} | awk '{print $2;}'");
+      $lines = array_merge($lines, drush_shell_exec_output());
       while ($line = array_shift($lines)) {
         $vc = array_pop(explode('/', $line));
         $parsed = fserver_parse_tag_name($vc);
@@ -362,7 +391,8 @@ class FserverProject_git {
       _drush_shell_exec_output_set(' '); // Clear output cache.
       drush_op('drush_shell_exec', "git --git-dir={$this->path}/.git --work-tree={$this->path} log -1 --pretty=format:%%ct {$vc}");
       $info = drush_shell_exec_output();
-      $tag['timestamp'] = $info[0];
+      // Above command gives a problem for heads
+      $tag['timestamp'] = is_numeric($info[0]) ? $info[0] : REQUEST_TIME;
       drush_op('drush_shell_exec', "git --git-dir={$this->path}/.git --work-tree={$this->path} show --format=%%b {$vc} -n 1000");
       $info = drush_shell_exec_output();
       // Remove the tag from the first line of the message:
@@ -387,7 +417,11 @@ class FserverProject_git {
         $vc = $tag['original'];
         drush_op('drush_shell_exec', "git --git-dir={$this->path}/.git --work-tree={$this->path} checkout {$vc}");
         $this->FserverProject->write_package_info($tag, array('.git'));
-        drush_op('drush_shell_exec', "tar -Pcf - --exclude='.git' --transform='s,{$this->path},{$this->FserverProject->name},' {$this->path} | gzip > {$file_path}/{$base}.tgz");
+        $path = $this->path;
+        if (!empty($this->FserverProject->repo_subdir)) {
+          $path .= '/' . $this->FserverProject->repo_subdir;
+        }
+        drush_op('drush_shell_exec', "tar -Pcf - --exclude='.git' --transform='s,$path,{$this->FserverProject->name},' $path | gzip > {$file_path}/{$base}.tgz");
 
         // @TODO
         // We need to properly chown and permission these directories.
@@ -398,14 +432,20 @@ class FserverProject_git {
         drush_op('chgrp', "{$file_path}/{$base}.tgz", fserver_posix_groupname());
 
         $file = new stdClass();
-        $file->uid = $this->node->uid;
+        $file->uid = $this->FserverProject->node->uid;
         $file->filename = "{$base}.tgz";
         $file->uri = "{$wrapper}fserver/{$base}.tgz";
         $file->filemime = file_get_mimetype($file->filename);
-        $file->filesize = filesize($file->filepath);
         $file->display = 1;
         $file->status = FILE_STATUS_PERMANENT;
         $file->timestamp = REQUEST_TIME;
+        
+        $existing_files = file_load_multiple(array(), array('uri' => $file->uri));
+        if (count($existing_files)) {
+          $existing = reset($existing_files);
+          $file->fid = $existing->fid;
+          $file->filename = $existing->filename;
+        }
         file_save($file);
 
         return $file;
diff --git a/fserver.features.field.inc b/fserver.features.field.inc
index 0a3505d..06cf79d 100755
--- a/fserver.features.field.inc
+++ b/fserver.features.field.inc
@@ -212,7 +212,72 @@ function fserver_field_default_fields() {
           'summary_rows' => 5,
         ),
         'type' => 'text_textarea_with_summary',
-        'weight' => '6',
+        'weight' => '8',
+      ),
+    ),
+  );
+
+  // Exported field: 'node-fserver_project-field_fserver_dev_version'
+  $fields['node-fserver_project-field_fserver_dev_version'] = array(
+    'field_config' => array(
+      'active' => '1',
+      'cardinality' => '1',
+      'deleted' => '0',
+      'entity_types' => array(),
+      'field_name' => 'field_fserver_dev_version',
+      'foreign keys' => array(),
+      'indexes' => array(
+        'value' => array(
+          0 => 'value',
+        ),
+      ),
+      'module' => 'list',
+      'settings' => array(
+        'allowed_values' => array(
+          0 => 'No',
+          1 => 'Yes',
+        ),
+        'allowed_values_function' => '',
+      ),
+      'translatable' => '0',
+      'type' => 'list_boolean',
+    ),
+    'field_instance' => array(
+      'bundle' => 'fserver_project',
+      'default_value' => array(
+        0 => array(
+          'value' => '0',
+        ),
+      ),
+      'deleted' => '0',
+      'description' => '',
+      'display' => array(
+        'default' => array(
+          'label' => 'hidden',
+          'settings' => array(),
+          'type' => 'hidden',
+          'weight' => '7',
+        ),
+        'teaser' => array(
+          'label' => 'above',
+          'settings' => array(),
+          'type' => 'hidden',
+          'weight' => 0,
+        ),
+      ),
+      'entity_type' => 'node',
+      'field_name' => 'field_fserver_dev_version',
+      'label' => 'Show dev version',
+      'required' => 1,
+      'settings' => array(
+        'user_register_form' => FALSE,
+      ),
+      'widget' => array(
+        'active' => 1,
+        'module' => 'options',
+        'settings' => array(),
+        'type' => 'options_buttons',
+        'weight' => '5',
       ),
     ),
   );
@@ -256,7 +321,7 @@ function fserver_field_default_fields() {
           'label' => 'hidden',
           'settings' => array(),
           'type' => 'hidden',
-          'weight' => '3',
+          'weight' => '5',
         ),
         'teaser' => array(
           'label' => 'above',
@@ -320,7 +385,7 @@ function fserver_field_default_fields() {
           'label' => 'hidden',
           'settings' => array(),
           'type' => 'hidden',
-          'weight' => '1',
+          'weight' => '3',
         ),
         'teaser' => array(
           'label' => 'above',
@@ -385,10 +450,9 @@ function fserver_field_default_fields() {
       'display' => array(
         'default' => array(
           'label' => 'inline',
-          'module' => 'text',
           'settings' => array(),
-          'type' => 'text_default',
-          'weight' => '4',
+          'type' => 'hidden',
+          'weight' => '2',
         ),
         'teaser' => array(
           'label' => 'above',
@@ -413,7 +477,7 @@ function fserver_field_default_fields() {
           'size' => '60',
         ),
         'type' => 'text_textfield',
-        'weight' => '5',
+        'weight' => '7',
       ),
     ),
   );
@@ -453,11 +517,11 @@ function fserver_field_default_fields() {
       'description' => 'Example: git://github.com/myname/myproject.git',
       'display' => array(
         'default' => array(
-          'label' => 'above',
+          'label' => 'inline',
           'module' => 'text',
           'settings' => array(),
           'type' => 'text_default',
-          'weight' => '5',
+          'weight' => '1',
         ),
         'teaser' => array(
           'label' => 'inline',
@@ -487,6 +551,73 @@ function fserver_field_default_fields() {
     ),
   );
 
+  // Exported field: 'node-fserver_project-field_fserver_repository_subdir'
+  $fields['node-fserver_project-field_fserver_repository_subdir'] = array(
+    'field_config' => array(
+      'active' => '1',
+      'cardinality' => '1',
+      'deleted' => '0',
+      'entity_types' => array(),
+      'field_name' => 'field_fserver_repository_subdir',
+      'foreign keys' => array(
+        'format' => array(
+          'columns' => array(
+            'format' => 'format',
+          ),
+          'table' => 'filter_format',
+        ),
+      ),
+      'indexes' => array(
+        'format' => array(
+          0 => 'format',
+        ),
+      ),
+      'module' => 'text',
+      'settings' => array(
+        'max_length' => '255',
+      ),
+      'translatable' => '0',
+      'type' => 'text',
+    ),
+    'field_instance' => array(
+      'bundle' => 'fserver_project',
+      'default_value' => NULL,
+      'deleted' => '0',
+      'description' => 'Allows you to put multiple projects inside one repository',
+      'display' => array(
+        'default' => array(
+          'label' => 'above',
+          'settings' => array(),
+          'type' => 'hidden',
+          'weight' => '6',
+        ),
+        'teaser' => array(
+          'label' => 'above',
+          'settings' => array(),
+          'type' => 'hidden',
+          'weight' => 0,
+        ),
+      ),
+      'entity_type' => 'node',
+      'field_name' => 'field_fserver_repository_subdir',
+      'label' => 'Subdir',
+      'required' => 0,
+      'settings' => array(
+        'text_processing' => '0',
+        'user_register_form' => FALSE,
+      ),
+      'widget' => array(
+        'active' => 1,
+        'module' => 'text',
+        'settings' => array(
+          'size' => '60',
+        ),
+        'type' => 'text_textfield',
+        'weight' => '6',
+      ),
+    ),
+  );
+
   // Exported field: 'node-fserver_project-field_fserver_type'
   $fields['node-fserver_project-field_fserver_type'] = array(
     'field_config' => array(
@@ -526,7 +657,7 @@ function fserver_field_default_fields() {
           'label' => 'hidden',
           'settings' => array(),
           'type' => 'hidden',
-          'weight' => '2',
+          'weight' => '4',
         ),
         'teaser' => array(
           'label' => 'above',
@@ -620,7 +751,7 @@ function fserver_field_default_fields() {
           'summary_rows' => 5,
         ),
         'type' => 'text_textarea_with_summary',
-        'weight' => '11',
+        'weight' => '12',
       ),
     ),
   );
@@ -695,6 +826,71 @@ function fserver_field_default_fields() {
     ),
   );
 
+  // Exported field: 'node-fserver_release-field_fserver_dev_version'
+  $fields['node-fserver_release-field_fserver_dev_version'] = array(
+    'field_config' => array(
+      'active' => '1',
+      'cardinality' => '1',
+      'deleted' => '0',
+      'entity_types' => array(),
+      'field_name' => 'field_fserver_dev_version',
+      'foreign keys' => array(),
+      'indexes' => array(
+        'value' => array(
+          0 => 'value',
+        ),
+      ),
+      'module' => 'list',
+      'settings' => array(
+        'allowed_values' => array(
+          0 => 'No',
+          1 => 'Yes',
+        ),
+        'allowed_values_function' => '',
+      ),
+      'translatable' => '0',
+      'type' => 'list_boolean',
+    ),
+    'field_instance' => array(
+      'bundle' => 'fserver_release',
+      'default_value' => array(
+        0 => array(
+          'value' => '0',
+        ),
+      ),
+      'deleted' => '0',
+      'description' => '',
+      'display' => array(
+        'default' => array(
+          'label' => 'above',
+          'settings' => array(),
+          'type' => 'hidden',
+          'weight' => '11',
+        ),
+        'teaser' => array(
+          'label' => 'above',
+          'settings' => array(),
+          'type' => 'hidden',
+          'weight' => 0,
+        ),
+      ),
+      'entity_type' => 'node',
+      'field_name' => 'field_fserver_dev_version',
+      'label' => 'Dev version',
+      'required' => 1,
+      'settings' => array(
+        'user_register_form' => FALSE,
+      ),
+      'widget' => array(
+        'active' => 1,
+        'module' => 'options',
+        'settings' => array(),
+        'type' => 'options_buttons',
+        'weight' => '9',
+      ),
+    ),
+  );
+
   // Exported field: 'node-fserver_release-field_fserver_file'
   $fields['node-fserver_release-field_fserver_file'] = array(
     'field_config' => array(
@@ -918,7 +1114,7 @@ function fserver_field_default_fields() {
           'display_label' => 0,
         ),
         'type' => 'options_onoff',
-        'weight' => '9',
+        'weight' => '10',
       ),
     ),
   );
@@ -988,7 +1184,7 @@ function fserver_field_default_fields() {
           'display_label' => 0,
         ),
         'type' => 'options_onoff',
-        'weight' => '10',
+        'weight' => '11',
       ),
     ),
   );
@@ -1115,9 +1311,8 @@ function fserver_field_default_fields() {
       'display' => array(
         'default' => array(
           'label' => 'above',
-          'module' => 'list',
           'settings' => array(),
-          'type' => 'list_default',
+          'type' => 'hidden',
           'weight' => '2',
         ),
         'teaser' => array(
@@ -1188,9 +1383,8 @@ function fserver_field_default_fields() {
       'display' => array(
         'default' => array(
           'label' => 'above',
-          'module' => 'list',
           'settings' => array(),
-          'type' => 'list_default',
+          'type' => 'hidden',
           'weight' => '1',
         ),
         'teaser' => array(
@@ -1327,12 +1521,13 @@ function fserver_field_default_fields() {
           18 => '18',
           19 => '19',
           20 => '20',
+          'x' => 'x',
         ),
         'allowed_values_function' => '',
         'allowed_values_php' => '',
       ),
       'translatable' => '0',
-      'type' => 'list_integer',
+      'type' => 'list_text',
     ),
     'field_instance' => array(
       'bundle' => 'fserver_release',
@@ -1374,8 +1569,10 @@ function fserver_field_default_fields() {
 
   // Translatables
   // Included for use with string extractors like potx.
+  t('Allows you to put multiple projects inside one repository');
   t('Core compatibility');
   t('Description');
+  t('Dev version');
   t('Drush Make Script');
   t('Enter a redirect URL to use for this project\'s update XML feed if this project has moved.');
   t('Example: git://github.com/myname/myproject.git');
@@ -1394,6 +1591,8 @@ function fserver_field_default_fields() {
   t('Repository URL');
   t('Security release');
   t('Select your project from the box.');
+  t('Show dev version');
+  t('Subdir');
   t('The machine-readable name for your project. This name must contain only lowercase letters, numbers, and underscores. <strong>Example:</strong> cooking_recipes.');
   t('This is the number of the extra version. For a release that is beta10, this value would be 10.');
   t('This is the version designation and number, i.e. beat10, alpha9, rc2.  This should be specified even if the Extra Version Num and Type are specified since those are used specifically to provide more accurate sorting/ordering and this is used for display.');
diff --git a/fserver.info b/fserver.info
index f6f93e9..a45eeb8 100755
--- a/fserver.info
+++ b/fserver.info
@@ -1,4 +1,8 @@
+name = "Feature Server"
+description = "Provides feature projects and releases."
 core = "7.x"
+package = "Features"
+php = "5.2.4"
 dependencies[] = "features"
 dependencies[] = "file"
 dependencies[] = "list"
@@ -7,19 +11,21 @@ dependencies[] = "nodereference_url"
 dependencies[] = "number"
 dependencies[] = "strongarm"
 dependencies[] = "views"
-description = "Provides feature projects and releases."
 features[ctools][] = "strongarm:strongarm:1"
 features[ctools][] = "views:views_default:3.0"
 features[field][] = "node-fserver_distro-field_fserver_drushmake"
 features[field][] = "node-fserver_distro-field_fserver_name"
 features[field][] = "node-fserver_project-body"
+features[field][] = "node-fserver_project-field_fserver_dev_version"
 features[field][] = "node-fserver_project-field_fserver_method"
 features[field][] = "node-fserver_project-field_fserver_name"
 features[field][] = "node-fserver_project-field_fserver_redirect"
 features[field][] = "node-fserver_project-field_fserver_repository"
+features[field][] = "node-fserver_project-field_fserver_repository_subdir"
 features[field][] = "node-fserver_project-field_fserver_type"
 features[field][] = "node-fserver_release-body"
 features[field][] = "node-fserver_release-field_fserver_api"
+features[field][] = "node-fserver_release-field_fserver_dev_version"
 features[field][] = "node-fserver_release-field_fserver_file"
 features[field][] = "node-fserver_release-field_fserver_project"
 features[field][] = "node-fserver_release-field_fserver_recommended"
@@ -32,6 +38,22 @@ features[field][] = "node-fserver_release-field_fserver_versionpatch"
 features[node][] = "fserver_distro"
 features[node][] = "fserver_project"
 features[node][] = "fserver_release"
+features[variable][] = "comment_anonymous_fserver_project"
+features[variable][] = "comment_anonymous_fserver_release"
+features[variable][] = "comment_default_mode_fserver_project"
+features[variable][] = "comment_default_mode_fserver_release"
+features[variable][] = "comment_default_per_page_fserver_project"
+features[variable][] = "comment_default_per_page_fserver_release"
+features[variable][] = "comment_form_location_fserver_project"
+features[variable][] = "comment_form_location_fserver_release"
+features[variable][] = "comment_fserver_project"
+features[variable][] = "comment_fserver_release"
+features[variable][] = "comment_preview_fserver_project"
+features[variable][] = "comment_preview_fserver_release"
+features[variable][] = "comment_subject_field_fserver_project"
+features[variable][] = "comment_subject_field_fserver_release"
+features[variable][] = "node_options_fserver_project"
+features[variable][] = "node_options_fserver_release"
 features[views_view][] = "fserver_projects"
 features[views_view][] = "fserver_release_lookup"
 features[views_view][] = "fserver_releases"
@@ -42,6 +64,3 @@ files[] = "views/fserver_handler_field_mdhash.inc"
 files[] = "views/fserver_handler_field_release_tag.inc"
 files[] = "views/fserver_handler_sort_release_tag.inc"
 files[] = "views/fserver_plugin_style_updatexml.inc"
-name = "Feature Server"
-package = "Features"
-php = "5.2.4"
diff --git a/fserver.module b/fserver.module
index fc35970..791c7e8 100755
--- a/fserver.module
+++ b/fserver.module
@@ -80,6 +80,19 @@ function fserver_node_view($node, $view_mode = 'full') {
         '#weight' => 1
       );
     }
+    $dev_version = field_get_items('node', $node, 'field_fserver_dev_version', $node->language);
+    if (isset($dev_version[0]['value']) && $dev_version[0]['value']) {
+      $view = views_get_view('fserver_releases');
+      $view->execute('dev');
+      if ($view->result) {
+        $node->content['releases_dev'] = array(
+          '#type' => 'item',
+          '#title' => 'Development releases',
+          '#markup' => $view->render(),
+          '#weight' => 1
+        );
+      }
+    }
   }
   if ($node->type == 'fserver_release') {
     drupal_add_css(drupal_get_path('module', 'fserver') . '/fserver.css');
@@ -154,10 +167,14 @@ function fserver_cck_options($type = 'core') {
       break;
     case 'patch':
       $result = range(0, 50);
+      $result['x'] = 'x';
       break;
     case 'recommended':
       $result =  array(t('Not recommended'), t('Recommended'));
       break;
+    case 'dev_version':
+      $result =  array(t('Normal version'), t('Development version'));
+      break;
     case 'security':
       $result =  array(t('Not a security release'), t('Security release'));
       break;
@@ -200,7 +217,7 @@ function fserver_cck_options($type = 'core') {
  */
 function fserver_parse_package_name($package_filename) {
   // example: fserver-6.x-2.0-rc3.tar.gz
-  if (preg_match('/^(?<project>\w+)-(?<core>\d+\.x)-(?<major>\d+)\.(?<patch>\d+)-?(?<extra>\w+)?\.(tar\.gz|tgz)$/', $package_filename, $matches)) {
+  if (preg_match('/^(?<project>\w+)-(?<core>\d+\.x)-(?<major>\d+)\.(?<patch>[\d|x]+)-?(?<extra>\w+)?\.(tar\.gz|tgz)$/', $package_filename, $matches)) {
     if (!empty($matches['extra']) && preg_match('/^(?P<extratype>[A-Za-z]+)(?P<extranum>\d+)?$/', $matches['extra'], $extra_matches)) {
       $matches = array_merge($matches, array_intersect_key($extra_matches, array('extratype' => '', 'extranum' => '')));
     }
@@ -215,10 +232,9 @@ function fserver_parse_package_name($package_filename) {
  * Supports CVS style drupal tags (drupal-6--1-0-alpha1) as well as git style tags (7.x-1.0-alpha1).
  */
 function fserver_parse_tag_name($tag) {
-
   $regex = (stripos($tag, 'drupal-') === 0)
-              ? '/^(?P<project>\w+)-(?P<core>\d+)--(?P<major>\d+)-(?P<patch>\d+)-?(?P<extra>\w+)?$/'
-              : '/^(?P<core>\d+)\.x-(?P<major>\d+)\.(?P<patch>\d+)-?(?P<extra>\w+)?$/';
+              ? '/^(?P<project>\w+)-(?P<core>\d+)--(?P<major>[\d|x]+)-(?P<patch>[\d|x]+)-?(?P<extra>\w+)?$/'
+              : '/^(?P<core>\d+)\.x-(?P<major>\d+)\.(?P<patch>[\d|x]+)-?(?P<extra>\w+)?$/';
 
   if (preg_match($regex, $tag, $matches)) {
     $parsed = array_intersect_key($matches, array('core' => '', 'major' => '', 'patch' => '', 'extra' => ''));
diff --git a/fserver.strongarm.inc b/fserver.strongarm.inc
index e97f63e..db85e41 100755
--- a/fserver.strongarm.inc
+++ b/fserver.strongarm.inc
@@ -5,7 +5,7 @@
  */
 
 /**
- * Implementation of hook_strongarm().
+ * Implements hook_strongarm().
  */
 function fserver_strongarm() {
   $export = array();
diff --git a/fserver.views_default.inc b/fserver.views_default.inc
index e28251c..c87944d 100755
--- a/fserver.views_default.inc
+++ b/fserver.views_default.inc
@@ -17,7 +17,7 @@ function fserver_views_default_views() {
   $view->base_table = 'node';
   $view->human_name = 'Projects and Distributions';
   $view->core = 7;
-  $view->api_version = '3.0-alpha1';
+  $view->api_version = '3.0';
   $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
 
   /* Display: Master */
@@ -82,7 +82,7 @@ function fserver_views_default_views() {
   $view->base_table = 'node';
   $view->human_name = 'Release Lookup';
   $view->core = 7;
-  $view->api_version = '3.0-alpha1';
+  $view->api_version = '3.0';
   $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
 
   /* Display: Master */
@@ -181,7 +181,7 @@ function fserver_views_default_views() {
   $view->base_table = 'node';
   $view->human_name = 'Releases';
   $view->core = 7;
-  $view->api_version = '3.0-alpha1';
+  $view->api_version = '3.0';
   $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
 
   /* Display: Master */
@@ -274,7 +274,7 @@ function fserver_views_default_views() {
   $handler->display->display_options['fields']['field_fserver_file']['field_api_classes'] = 0;
   /* Field: Content: Link */
   $handler->display->display_options['fields']['view_node']['id'] = 'view_node';
-  $handler->display->display_options['fields']['view_node']['table'] = 'node';
+  $handler->display->display_options['fields']['view_node']['table'] = 'views_entity_node';
   $handler->display->display_options['fields']['view_node']['field'] = 'view_node';
   $handler->display->display_options['fields']['view_node']['label'] = '';
   $handler->display->display_options['fields']['view_node']['alter']['alter_text'] = 0;
@@ -402,6 +402,36 @@ function fserver_views_default_views() {
   $handler->display->display_options['filters']['field_fserver_recommended_value']['value'] = array(
     1 => '1',
   );
+
+  /* Display: Block */
+  $handler = $view->new_display('block', 'Block', 'dev');
+  $handler->display->display_options['defaults']['title'] = FALSE;
+  $handler->display->display_options['title'] = 'Recommended Releases';
+  $handler->display->display_options['defaults']['pager'] = FALSE;
+  $handler->display->display_options['pager']['type'] = 'full';
+  $handler->display->display_options['pager']['options']['items_per_page'] = '5';
+  $handler->display->display_options['defaults']['filters'] = FALSE;
+  /* Filter criterion: Content: Published */
+  $handler->display->display_options['filters']['status']['id'] = 'status';
+  $handler->display->display_options['filters']['status']['table'] = 'node';
+  $handler->display->display_options['filters']['status']['field'] = 'status';
+  $handler->display->display_options['filters']['status']['value'] = 1;
+  $handler->display->display_options['filters']['status']['group'] = 0;
+  $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
+  /* Filter criterion: Content: Type */
+  $handler->display->display_options['filters']['type']['id'] = 'type';
+  $handler->display->display_options['filters']['type']['table'] = 'node';
+  $handler->display->display_options['filters']['type']['field'] = 'type';
+  $handler->display->display_options['filters']['type']['value'] = array(
+    'fserver_release' => 'fserver_release',
+  );
+  /* Filter criterion: Content: Dev version (field_fserver_dev_version) */
+  $handler->display->display_options['filters']['field_fserver_dev_version_value']['id'] = 'field_fserver_dev_version_value';
+  $handler->display->display_options['filters']['field_fserver_dev_version_value']['table'] = 'field_data_field_fserver_dev_version';
+  $handler->display->display_options['filters']['field_fserver_dev_version_value']['field'] = 'field_fserver_dev_version_value';
+  $handler->display->display_options['filters']['field_fserver_dev_version_value']['value'] = array(
+    1 => '1',
+  );
   $export['fserver_releases'] = $view;
 
   $view = new view;
@@ -411,7 +441,7 @@ function fserver_views_default_views() {
   $view->base_table = 'node';
   $view->human_name = 'Updates';
   $view->core = 7;
-  $view->api_version = '3.0-alpha1';
+  $view->api_version = '3.0';
   $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
 
   /* Display: Master */
