diff --git a/eck.bundle.inc b/eck.bundle.inc
index f0fa91e..c4b5e88 100644
--- a/eck.bundle.inc
+++ b/eck.bundle.inc
@@ -90,7 +90,7 @@ function eck__bundle__menu($entity_type) {
     'title' => "Add bundle ",
     'description' => "Add a(n) new '{$entity_type->label} Bundle'",
     'page callback' => "drupal_get_form",
-    'page arguments' => array('eck__bundle__add', 3),
+    'page arguments' => array('eck__bundle__form', 3),
     'access callback' => 'eck__multiple_access_check',
     'access arguments' => array( array('eck administer bundles', 
       'eck add bundles', "eck add {$entity_type->name} bundles") ),
@@ -117,7 +117,8 @@ function eck__bundle__menu($entity_type) {
 function eck__bundle__list($entity_type) {
   $path = eck__entity_type__path();
   $entity_type = entity_type_load($entity_type);
-  
+  $field_ui = module_exists('field_ui');
+
   //Check that the user has permissions to view bundle lists:
   if( eck__multiple_access_check(
       array( 'eck administer bundles', 
@@ -126,32 +127,47 @@ function eck__bundle__list($entity_type) {
              "eck list {$entity_type->name} bundles"
   ) ) )
   {
-    
-    $header = array(t('Type'), array('data' => t('Operations'), 'colspan' => '1'));
+
+    $header = array(t('Type'), array('data' => t('Operations'), 'colspan' => $field_ui ? '4' : '2'));
     $rows = array();
 
     foreach (Bundle::loadByEntityType($entity_type) as $bundle) {
-      $bundle_label =  $bundle->label;
+
+      // @todo: This should probably be moved out to a theme function.
+      $output = check_plain($bundle->label);
+      $output .= ' <small>' . t('(Machine name: @type)', array('@type' => $bundle->name)) . '</small>';
+      $row = array($output);
 
       $admin_info = get_bundle_admin_info($entity_type->name, $bundle->name);
 
       $uri = $admin_info['path'];
+
+      // Set the edit column.
+      $row[] = array('data' => l(t('edit'), $uri));
+
+      if ($field_ui) {
+        // Manage fields.
+        $row[] = array('data' => l(t('manage fields'), $uri . "/fields"));
       
-      $allowed_operations = '';
-      //Check that the user has permissions to delete:
+        // Display fields.
+        $row[] = array('data' => l(t('manage display'), $uri . '/display'));
+      }
+
+      // Set the delete column.
       if( eck__multiple_access_check(
-        array( 'eck administer bundles', 
-               'eck delete bundles',
-               "eck administer {$entity_type->name} bundles",
-               "eck delete {$entity_type->name} bundles"
-              ) )
-      ) $allowed_operations = l(t('delete'), $uri."/delete");
-      
-      $rows[] = 
-      array(
-        l($bundle_label, url($uri, array('absolute' => TRUE))),
-        $allowed_operations
-      );
+         array( 'eck administer bundles',
+                'eck delete bundles',
+                "eck administer {$entity_type->name} bundles",
+                "eck delete {$entity_type->name} bundles"
+               ) )
+       ) {
+        $row[] = array('data' => l(t('delete'), $uri . '/delete'));
+      }
+      else {
+        $row[] = array('data' => '');
+      }
+
+      $rows[] = $row;
     }
  
     $build['bundle_table'] = array(
@@ -176,36 +192,69 @@ function eck__bundle__list($entity_type) {
  * @param entity_type
  *  (String) entity type
  */
-function eck__bundle__add($form, &$form_state, $entity_type) {
-  $entity_type = entity_type_load($entity_type);
+function eck__bundle__form($form, &$form_state, $entity_type_name, $bundle_name = NULL) {
+  $entity_type = entity_type_load($entity_type_name);
+
+  // Make the entity type object available to validation and submission
+  // handlers, and to implementations of hook_form_alter().
   $form['entity_type'] = array(
     '#type' => 'value',
     '#value' => $entity_type,
   );
 
+  // If this form is being called on a new bundle, create a new bundle object,
+  // otherwise load the corresponding bundle.
+  if (!isset($bundle_name)) {
+    $bundle = new Bundle();
+  }
+  else {
+    $bundle = Bundle::loadByMachineName("{$entity_type_name}_{$bundle_name}");
+  }
+
+  // Make the bundle object available to validation and submission handlers,
+  // and to implementations of hook_form_alter().
+  $form['bundle'] = array(
+    '#type' => 'value',
+    '#value' => $bundle,
+  );
+
   $form['bundle_label'] = array(
     '#type' => 'textfield',
     '#title' => t('Type'),
-    '#description' => "A Human readable name for the bundle",
+    '#default_value' => $bundle->label,
+    '#description' => t('A human readable name for the bundle'),
+    '#required' => TRUE,
+    '#size' => 30,
   );
 
   $form['bundle_name'] = array(
     '#type' => 'machine_name',
-    '#required' => FALSE,
+    '#default_value' => $bundle->name,
+    '#disabled' => !$bundle->is_new,
     '#machine_name' => array(
       'exists' => '_eck_fake_exists',
       'source' => array('bundle_label'),
-    )
+    ),
+  );
+
+  $form['additional_settings'] = array(
+    '#type' => 'vertical_tabs',
   );
 
-  $form['#validate'][] = 'eck__bundle__add_validate';
+  $form['#validate'][] = 'eck__bundle__form_validate';
 
-  $form['submit'] = array(
+  $form['actions'] = array('#type' => 'actions');
+  $form['actions']['submit'] = array(
     '#type' => 'submit',
     '#weight' => 10000,
     '#value' => t('Save'),
   );
 
+  // Let the behaviors modify the form.
+  $vars = eck_property_behavior_invoke_plugin_alter($entity_type, 'bundle_form', array('form' => $form, 'form_state' => $form_state));
+  $form = $vars['form'];
+  $form_state = $vars['form_state'];
+
   return $form;
 }
 
@@ -217,16 +266,14 @@ function eck__bundle__add($form, &$form_state, $entity_type) {
  * @param $form_state
  *  array provided by the Form API
  */
-function eck__bundle__add_validate($form, &$form_state) {
+function eck__bundle__form_validate($form, &$form_state) {
   $entity_type = $form_state['values']['entity_type'];
- 
 
   // The type does not have to be unique in the table, but it should be unique
   // to its entity so we will check that here.
   foreach (Bundle::loadByEntityType($entity_type) as $bundle) {
-    
-    if ($bundle->name == $form_state['values']['bundle_name']) {
-      form_set_error('bundle', t("bundle {$bundle->label} already exists for this entity type"));
+    if ($bundle->is_new && ($bundle->name == $form_state['values']['bundle_name'])) {
+      form_set_error('bundle_name', t("bundle {$bundle->label} already exists for this entity type"));
     }
   }
 }
@@ -239,74 +286,21 @@ function eck__bundle__add_validate($form, &$form_state) {
  * @param $form_state
  *  array provided by the Form API
  */
-function eck__bundle__add_submit($form, &$form_state) {
+function eck__bundle__form_submit($form, &$form_state) {
   $path = eck__entity_type__path();
-  
+
   $entity_type = $form_state['values']['entity_type'];
+  $bundle = $form_state['values']['bundle'];
+
   $bundle_name = $form_state['values']['bundle_name'];
   $bundle_label = $form_state['values']['bundle_label'];
 
-  $bundle = new Bundle();
-  $bundle->name = $bundle_name;
+  if ($bundle->is_new) {
+    $bundle->entity_type = $entity_type->name;
+    $bundle->name = $bundle_name;
+  }
   $bundle->label = $bundle_label;
-  $bundle->entity_type = $entity_type->name;
-  $bundle->save();
-
-  drupal_set_message(t('the %bundle for entity type %entity_type has been saved', 
-  array('%bundle' => $bundle_name, '%entity_type' => $entity_type->name)));
-
-  drupal_get_schema(NULL, TRUE);
-  entity_info_cache_clear();
-  menu_rebuild();
-
-  drupal_goto("{$path}/{$entity_type->name}");
-}
 
-/**
- * Form constructor for the entity bundle editing form.
- *
- * @param $entity_type_name
- *   Entity type name
- *
- * @param $bundle_name
- *   Entity bundle name
- *
- */
-
-function eck__bundle__edit_form($form, &$form_state, $entity_type_name, $bundle_name) {
-  $path = eck__entity_type__path();
-  $entity_type = entity_type_load($entity_type_name);
-  $bundle = bundle_load($entity_type_name, $bundle_name);
-  $form = array();
-
-  $form['entity_type'] =
-      array(
-        '#type' => 'value',
-        '#value' => $entity_type,
-  );
-
-  $form['bundle'] =
-      array(
-        '#type' => 'value',
-        '#value' => $bundle,
-  );
-
-  // Let the behaviors to modify form
-  $vars = eck_property_behavior_invoke_plugin_alter($entity_type, 'bundle_form', array('form' => $form, 'form_state' => $form_state));
-  $form = $vars['form'];
-  $form_state = $vars['form_state'];
-
-  $form['actions'] = array('#type' => 'actions');
-  $form['actions']['submit'] = array(
-    '#type' => 'submit',
-    '#value' => t('Save bundle'),
-    '#weight' => 40,
-  );
-  return $form;
-}
-
-function eck__bundle__edit_form_submit($form, &$form_state) {
-  $bundle = $form_state['values']['bundle'];
   // Save all form values starting from 'config_' to the $bundle->config array.
   $bundle_config = array();
   foreach ($form_state['values'] as $name => $value) {
@@ -316,8 +310,24 @@ function eck__bundle__edit_form_submit($form, &$form_state) {
     }
   }
   $bundle->config = $bundle_config;
-  // Save the bundle object to the database
+
+  // Save the bundle object to the database.
   $bundle->save();
+
+  drupal_get_schema(NULL, TRUE);
+  entity_info_cache_clear();
+  menu_rebuild();
+
+  if (!$bundle->is_new) {
+    drupal_set_message(t('the %bundle bundle for entity type %entity_type has been updated.',
+    array('%bundle' => $bundle_name, '%entity_type' => $entity_type->name)));
+  }
+  else {
+    drupal_set_message(t('the %bundle bundle for entity type %entity_type has been saved.',
+    array('%bundle' => $bundle_name, '%entity_type' => $entity_type->name)));
+  }
+
+  $form_state['redirect'] = "{$path}/{$entity_type->name}";
 }
 
 /**
diff --git a/eck.entity.inc b/eck.entity.inc
index 0f6eb39..3708177 100644
--- a/eck.entity.inc
+++ b/eck.entity.inc
@@ -17,34 +17,40 @@
 function eck__entity__menu($entity_type, $bundle) {
   $path = eck__entity_type__path();
   $menu = array();
-  
-  // DELETE Bundle
-  $menu["{$path}/{$entity_type->name}/{$bundle->name}/delete"] = array(
-    'title' => "Delete",
-    'page callback' => "drupal_get_form",//"eck__bundle__delete",
-    'page arguments' => array('eck__bundle__delete_form', 3, 4),
+
+  // Edit Bundle
+  $menu["{$path}/{$entity_type->name}/{$bundle->name}"] = array(
+    'title' => $bundle->label,
+    'page callback' => "drupal_get_form",
+    'page arguments' => array('eck__bundle__form', 3, 4),
     'access callback' => 'eck__multiple_access_check',
     'access arguments' => array( array( 'eck administer bundles',
-                                        'eck delete bundles',
+                                        'eck edit bundles',
                                         "eck administer {$entity_type->name} bundles",
-                                        "eck delete {$entity_type->name} bundles",
+                                        "eck edit {$entity_type->name} bundles",
                                       ) ),
     'file' => 'eck.bundle.inc',
-    'type' => MENU_LOCAL_TASK
   );
-  
   $menu["{$path}/{$entity_type->name}/{$bundle->name}/edit"] = array(
-    'title' => 'Edit',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('eck__bundle__edit_form', $entity_type->name, $bundle->name),
+    'title' => "Edit",
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -50
+  );
+
+  // DELETE Bundle
+  $menu["{$path}/{$entity_type->name}/{$bundle->name}/delete"] = array(
+    'title' => "Delete",
+    'page callback' => "drupal_get_form",//"eck__bundle__delete",
+    'page arguments' => array('eck__bundle__delete_form', 3, 4),
     'access callback' => 'eck__multiple_access_check',
     'access arguments' => array( array( 'eck administer bundles',
-                                        'eck edit bundles',
+                                        'eck delete bundles',
                                         "eck administer {$entity_type->name} bundles",
-                                        "eck edit {$entity_type->name} bundles",
+                                        "eck delete {$entity_type->name} bundles",
                                       ) ),
     'file' => 'eck.bundle.inc',
     'type' => MENU_LOCAL_TASK,
+    'weight' => 100,
   );
 
   //The entity autocomplete module does a great job at providing generalize
@@ -63,8 +69,8 @@ function eck__entity__menu($entity_type, $bundle) {
   $admin_info = get_bundle_admin_info($entity_type->name, $bundle->name);
   
   // OVERVIEW Entity
-  $menu[$admin_info['path']] = array(
-    'title' => "{$bundle->label}",
+  $menu[$admin_info['path']."/list"] = array(
+    'title' => "Entity List",
     'description' => "View all entites of type {$entity_type->label} with bundle {$bundle->label}",
     'page callback' => "eck__entity__list",
     'page arguments' => array($entity_type->name, $bundle->name),
@@ -84,15 +90,10 @@ function eck__entity__menu($entity_type, $bundle) {
       ) 
     ),
     'weight' => 0,
-    'file' => 'eck.entity.inc'
+    'file' => 'eck.entity.inc',
+    'type' => MENU_LOCAL_TASK,
   );
 
-  $menu[$admin_info['path']."/list"] = array(
-    'title' => "Entity List",
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-    'weight' => 100
-  );
-  
   $crud_info = get_bundle_crud_info($entity_type->name, $bundle->name);
   
   foreach($crud_info as $action => $info){
