diff --git a/eck.bundle.inc b/eck.bundle.inc
index 97a70c5..6fbfecc 100644
--- a/eck.bundle.inc
+++ b/eck.bundle.inc
@@ -86,7 +86,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") ),
@@ -113,7 +113,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', 
@@ -122,32 +123,49 @@ 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>';
+      //$output .= '<div class="description">' . filter_xss_admin($bundle->description) . '</div>';      
+      $row = array($output);
 
       $admin_info = get_bundle_admin_info($entity_type->name, $bundle->name);
 
       $uri = $admin_info['path'];
+
+      //$row = array(theme('node_admin_overview', array('name' => $name, 'type' => $type)));
+      // 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(
@@ -172,29 +190,49 @@ 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);
-  $form['entity_type'] = array(
-    '#type' => 'value',
-    '#value' => $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 implementations of hook_form_alter.
+  $form['#entity_type'] = $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 implementations of hook_form_alter.
+  $form['#bundle'] = $bundle;
+  
   $form['bundle_label'] = array(
     '#type' => 'textfield',
-    '#title' => "Type",
-    '#description' => "A Human readable name for the bundle",
+    '#title' => t('Type'),
+    '#default_value' => $bundle->label,
+    '#description' => t('A human readable name for the entity type'),
+    '#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(
     '#type' => 'submit',
@@ -213,16 +251,13 @@ 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) {
-  $entity_type = $form_state['values']['entity_type'];
- 
-
+function eck__bundle__form_validate($form, &$form_state) {
   // 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) {
+  foreach (Bundle::loadByEntityType($form['#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['#bundle']->name)) {
+      form_set_error('bundle_name', t("bundle {$bundle->label} already exists for this entity type"));
     }
   }
 }
@@ -235,27 +270,38 @@ 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'];
+  $entity_type = $form['#entity_type'];
+  $bundle = $form['#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)));
+  
+  $status = $bundle->save();
 
   drupal_get_schema(NULL, TRUE);
   entity_info_cache_clear();
   menu_rebuild();
 
-  drupal_goto("{$path}/{$entity_type->name}");
+  if (!$status) {
+    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}";
+  return;
 }
 
 /**
diff --git a/eck.entity.inc b/eck.entity.inc
index 5681907..b4c3f4d 100644
--- a/eck.entity.inc
+++ b/eck.entity.inc
@@ -17,7 +17,26 @@
 function eck__entity__menu($entity_type, $bundle) {
   $path = eck__entity_type__path();
   $menu = array();
-  
+
+  // Edit Bundle
+  $menu["{$path}/{$entity_type->name}/{$bundle->name}"] = array(
+    'title' => "Edit",
+    'page callback' => "drupal_get_form",//"eck__bundle__delete",
+    'page arguments' => array('eck__bundle__form', 3, 4),
+    'access callback' => 'eck__multiple_access_check',
+    'access arguments' => array( array( 'eck administer bundles',
+                                        'eck edit bundles',
+                                        "eck administer {$entity_type->name} bundles",
+                                        "eck edit {$entity_type->name} bundles",
+                                      ) ),
+    'file' => 'eck.bundle.inc',
+  );
+  $menu["{$path}/{$entity_type->name}/{$bundle->name}/edit"] = array(
+    'title' => "Edit",
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -50
+  );
+
   // DELETE Bundle
   $menu["{$path}/{$entity_type->name}/{$bundle->name}/delete"] = array(
     'title' => "Delete",
@@ -30,9 +49,10 @@ function eck__entity__menu($entity_type, $bundle) {
                                         "eck delete {$entity_type->name} bundles",
                                       ) ),
     'file' => 'eck.bundle.inc',
-    'type' => MENU_LOCAL_TASK
+    'type' => MENU_LOCAL_TASK,
+    'weight' => 100,
   );
-  
+
   //The entity autocomplete module does a great job at providing generalize
   //autocomplete function that will work for any entity that declares the label
   //property in the entity_info array, but there is not a general solution to
@@ -49,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),
@@ -70,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){
