diff --git a/relation.install b/relation.install
index 79915c1..8b6fa7f 100644
--- a/relation.install
+++ b/relation.install
@@ -153,19 +153,33 @@ function relation_schema() {
         'default' => '',
         'description' => 'The machine-readable name of this type.',
       ),
+      'name' => array(
+        'type' => 'varchar',
+        'length' => 255,
+        'not null' => TRUE,
+        'default' => '',
+        'description' => 'The unique name of this type.',
+      ),
+      'description' => array(
+        'type' => 'varchar',
+        'length' => 255,
+        'not null' => TRUE,
+        'default' => '',
+        'description' => 'The description of this type.',
+      ),
       'label' => array(
         'type' => 'varchar',
         'length' => 255,
         'not null' => TRUE,
         'default' => '',
-        'description' => 'The human-readable name of this type.',
+        'description' => 'The human-readable label for this type.',
       ),
       'reverse_label' => array(
         'type' => 'varchar',
         'length' => 255,
         'not null' => TRUE,
         'default' => '',
-        'description' => 'The reverse human-readable name of this type. Only used for directional relations.',
+        'description' => 'The reverse human-readable label for this type. Only used for directional relations.',
       ),
       'directional' => array(
         'type' => 'int',
@@ -284,3 +298,39 @@ function relation_update_7002() {
       ->execute();
   }
 }
+
+/**
+ * Update relation_type table with new name and description fields.
+ */
+function relation_update_7003() {
+  $name_spec = array(
+    'type' => 'varchar',
+    'description' => "The unique name of this type.",
+    'length' => 255,
+    'not null' => FALSE,
+  );
+  $desc_spec = array(
+    'type' => 'varchar',
+    'description' => "The description of this type.",
+    'length' => 255,
+    'not null' => FALSE,
+  );
+  db_add_field('relation_type', 'name', $name_spec);
+  db_add_field('relation_type', 'description', $desc_spec);
+
+  // Use label as name and part of description.
+  $query = db_select('relation_type', 'rt');
+  $results = $query->fields('rt', array('relation_type', 'label'))
+    ->condition('rt.name', NULL)
+    ->condition('rt.description', NULL)
+    ->execute()
+    ->fetchAll();
+  foreach ($results as $result) {
+    db_update('relation_type')
+      ->fields(array(
+        'name' => $result->label,
+        'description' => t('A description for relation type !label', array('!label' => $result->label))))
+      ->condition('relation_type', $result->relation_type, '=')
+      ->execute();
+  }
+}
diff --git a/relation.module b/relation.module
index d3842f9..d064160 100644
--- a/relation.module
+++ b/relation.module
@@ -349,7 +349,7 @@ function relation_get_types($types = array()) {
   }
   else {
     $query = db_select('relation_type', 'rt')
-      ->fields('rt', array('relation_type', 'label', 'reverse_label', 'directional', 'transitive', 'r_unique', 'min_arity', 'max_arity'));
+      ->fields('rt', array('relation_type', 'name', 'description', 'label', 'reverse_label', 'directional', 'transitive', 'r_unique', 'min_arity', 'max_arity'));
     if ($types) {
       $query->condition('relation_type', $types);
     }
@@ -370,7 +370,7 @@ function relation_get_types_options() {
   $types = relation_get_types();
   $options = array();
   foreach ($types as $type => $relation_type) {
-    $options[$type] = $relation_type->label;
+    $options[$type] = $relation_type->name;
   }
 
   return $options;
@@ -407,11 +407,11 @@ function _relation_get_types_bundles(&$relation_types) {
  */
 function relation_list_types() {
   $results = db_select('relation_type', 'rt')
-    ->fields('rt', array('relation_type', 'label'))
+    ->fields('rt', array('relation_type', 'name'))
     ->execute()->fetchAllAssoc('relation_type');
   $relation_types = array();
   foreach ($results as $type => $relation_type) {
-    $relation_types[$type] = $relation_type->label . ' (' . $type . ')';
+    $relation_types[$type] = $relation_type->name . ' (' . $type . ')';
   }
   return $relation_types;
 }
@@ -510,7 +510,7 @@ function relation_multiple_view($relations, $view_mode) {
  * Relation type display/edit page title callback.
  */
 function relation_type_page_title($type) {
-  return $type->label;
+  return $type->name;
 }
 
 /**
diff --git a/relation_ui.css b/relation_ui.css
index a2d6e8b..736753c 100644
--- a/relation_ui.css
+++ b/relation_ui.css
@@ -2,16 +2,16 @@
  * @file relation types form css
  */
 
-.relation-type-form-table {
+.relation-type-form-table-2col {
   display: table;
 }
 
-.relation-type-form-table .form-item{
+.relation-type-form-table-2col .form-item{
   display: table-cell;
   padding-right:10px;
-  width: 33%;
+  width: 50%;
 }
 
-.relation-type-form-table .form-item:last-child {
+.relation-type-form-table-2col .form-item:last-child {
   padding-right: 0;
 }
diff --git a/relation_ui.module b/relation_ui.module
index cb041c3..ece2d19 100644
--- a/relation_ui.module
+++ b/relation_ui.module
@@ -173,6 +173,8 @@ function relation_ui_type_form($form, &$form_state, $relation_type = array(), $o
   else {
     $relation_type = (object) array(
       'relation_type' => '',
+      'name' => '',
+      'description' => '',
       'label' => '',
       'reverse_label' => '',
       'bundles' => array(),
@@ -185,14 +187,40 @@ function relation_ui_type_form($form, &$form_state, $relation_type = array(), $o
       'target_bundles' => array(),
     );
   }
+  $form['name'] = array( // use 'name' for /misc/machine-name.js
+    '#type'          => 'textfield',
+    '#title'         => t('Name'),
+    '#description'   => t('Unique name of the relation type.'),
+    '#default_value' => $relation_type->name,
+    '#size'          => 40,
+    '#required'      => TRUE,
+  );
+  $form['relation_type'] = array(
+    '#type'          => 'machine_name',
+    '#default_value' => $relation_type->relation_type,
+    '#maxlength' => 32,
+    '#disabled'      => $relation_type->relation_type,
+    '#machine_name' => array(
+      'source' => array('name'),
+      'exists' => 'relation_type_load',
+    ),
+  );
+  $form['description'] = array(
+    '#type'          => 'textfield',
+    '#title'         => t('Description'),
+    '#description'   => t('Brief description of this relation type. Used in some administrative screens.'),
+    '#default_value' => $relation_type->description,
+    '#size'          => 40,
+    '#required'      => TRUE,
+  );
   $form['labels'] = array(
     '#type' => 'container',
     '#attributes' => array(
-      'class' => array('relation-type-form-table'),
+      'class' => array('relation-type-form-table-2col'),
     ),
     '#suffix' => '<div class="clearfix"></div>',
   );
-  $form['labels']['name'] = array( // use 'name' for /misc/machine-name.js
+  $form['labels']['label'] = array( // use 'label' for /misc/machine-name.js
     '#type'          => 'textfield',
     '#title'         => t('Label'),
     '#description'   => t('Display name of the relation type. This is also used as the predicate in natural language formatters (ie. if A is related to B, you get "A [label] B")'),
@@ -200,16 +228,6 @@ function relation_ui_type_form($form, &$form_state, $relation_type = array(), $o
     '#size'          => 40,
     '#required'      => TRUE,
   );
-  $form['labels']['relation_type'] = array(
-    '#type'          => 'machine_name',
-    '#default_value' => $relation_type->relation_type,
-    '#maxlength' => 32,
-    '#disabled'      => $relation_type->relation_type,
-    '#machine_name' => array(
-      'source' => array('labels', 'name'),
-      'exists' => 'relation_type_load',
-    ),
-  );
   $form['labels']['reverse_label'] = array(
     '#type'          => 'textfield',
     '#size'          => 40,
@@ -281,7 +299,7 @@ function relation_ui_type_form($form, &$form_state, $relation_type = array(), $o
   $form['endpoints'] = array(
     '#type' => 'container',
     '#attributes' => array(
-      'class' => array('relation-type-form-table'),
+      'class' => array('relation-type-form-table-2col'),
     ),
     '#suffix' => '<div class="clearfix"></div>',
   );
@@ -327,7 +345,9 @@ function relation_ui_type_form_submit($form, &$form_state) {
     'relation_type'   => $relation_type,
     'min_arity'   => $min_arity,
     'max_arity'   => $max_arity,
-    'label' => $form_state['values']['name'],
+    'name' => $form_state['values']['name'],
+    'description' => $form_state['values']['description'],
+    'label' => $form_state['values']['label'],
     'reverse_label' => $form_state['values']['reverse_label'],
     'directional' => $form_state['values']['directional'],
     'transitive' => $form_state['values']['advanced']['transitive'],
