diff --git a/og_vocab.module b/og_vocab.module
index 2fa4780..94dc6fd 100644
--- a/og_vocab.module
+++ b/og_vocab.module
@@ -143,6 +143,8 @@ function og_vocab_og_permission() {
 function og_vocab_entity_info() {
   $items['og_vocab'] = array(
     'label' => t('OG vocab'),
+    'label callback' => 'og_vocab_label',
+    'uri callback' => 'og_vocab_uri',
     'controller class' => 'EntityAPIController',
     'entity class' => 'OgVocab',
     'base table' => 'og_vocab',
@@ -162,6 +164,58 @@ function og_vocab_entity_info() {
 }
 
 /**
+ * Label callback.
+ *
+ * Return the taxonomy name for privleged users, otherwise the OG vocab ID.
+ */
+function og_vocab_label($og_vocab) {
+  $relation = og_vocab_relation_get($og_vocab->vid);
+  if (og_user_access($relation->group_type, $relation->gid, 'administer taxonomy')) {
+    $entity_info = entity_get_info($og_vocab->entity_type);
+    $vocab = taxonomy_vocabulary_load($og_vocab->vid);
+    $params = array(
+      '@id' => $og_vocab->id,
+      '@bundle' => $entity_info['bundles'][$og_vocab->bundle]['label'],
+      '@name' => $vocab->name,
+    );
+    return t('@bundle bundle in @name vocabulary (OG Vocabulary ID @id)', $params);
+  }
+  return t('OG Vocabulary ID @id', array('@id' => $og_vocab->id));
+}
+
+/**
+ * URI callback.
+ */
+function og_vocab_uri($og_vocab) {
+  $url = array();
+
+  $vocab = taxonomy_vocabulary_load($og_vocab->vid);
+  if (user_access('administer taxonomy')) {
+    // URL to taxonomy administration.
+    $url = array(
+      'path' => "admin/structure/taxonomy/$vocab->machine_name/edit",
+    );
+  }
+  else {
+    $relation = og_vocab_relation_get($og_vocab->vid);
+    if (og_user_access($relation->group_type, $relation->gid, 'administer taxonomy')) {
+      // URL to taxonomy administration in the group context.
+      $url = array(
+        'path' => "group/$relation->group_type/$relation->gid/admin/taxonomy/$vocab->machine_name/edit",
+      );
+    }
+  }
+
+  if ($url) {
+    $entity_type = $og_vocab->entity_type;
+    $bundle = $og_vocab->bundle;
+    $url['options']['fragment'] = drupal_clean_css_identifier("og-vocab-$entity_type-$bundle");
+  }
+
+  return $url;
+}
+
+/**
  * Implements hook_migrate_api().
  */
 function og_vocab_migrate_api() {
@@ -842,12 +896,28 @@ function og_vocab_form_taxonomy_form_vocabulary_alter(&$form, $form_state) {
     return;
   }
 
-  if (!$context = og_vocab_is_group_admin_context()) {
+  if (!empty($form['#vocabulary']->vid)) {
+    if (!$relation = og_vocab_relation_get($form['#vocabulary']->vid)) {
+      // This is an existing vocabulary, not associated with a group.
+      return;
+    }
+
+    $group_type = $relation->group_type;
+    $gid = $relation->gid;
+  }
+  elseif ($context = og_vocab_is_group_admin_context()) {
+    // We are inside a group context.
+    $group_type = $context['group_type'];
+    $gid = $context['gid'];
+    $form['#validate'][] = 'og_vocab_form_taxonomy_form_vocabulary_validate';
+  }
+
+  if (empty($group_type)) {
+    // We don't have enough context, about which group this vocabulary
+    // should belong to.
     return;
   }
 
-  $group_type = $context['group_type'];
-  $gid = $context['gid'];
 
   $group = entity_load_single($group_type, $gid);
   list(,, $group_bundle) = entity_extract_ids($group_type, $group);
@@ -862,8 +932,6 @@ function og_vocab_form_taxonomy_form_vocabulary_alter(&$form, $form_state) {
     '#value' => array('group_type' => $group_type, 'gid' => $gid),
   );
 
-  $form['#validate'][] = 'og_vocab_form_taxonomy_form_vocabulary_validate';
-
   // Add widget settings per group content. We discover all the group
   // content that reference this group type.
   $entity_info = entity_get_info();
@@ -905,6 +973,7 @@ function og_vocab_form_taxonomy_form_vocabulary_alter(&$form, $form_state) {
       $form['og_vocab']["$entity_type:$bundle"] = array(
         '#type' => 'fieldset',
         '#title' => check_plain($name),
+        '#id' => drupal_clean_css_identifier("og-vocab-$entity_type-$bundle"),
       );
 
       // Load an existing OG-vocab, or get default values.
