diff --git profile2.admin.inc profile2.admin.inc
index ca14139..5eaf7a4 100644
--- profile2.admin.inc
+++ profile2.admin.inc
@@ -47,10 +47,10 @@ function profile2_overview_types() {
  */
 function theme_profile2_admin_type($variables) {
   $label = $variables['label'];
-  $type  = $variables['type'];
+  $profile_type  = $variables['type'];
 
   $output = check_plain($label);
-  $output .= ' <small> (Machine name: ' . check_plain($type->name) . ')</small>';
+  $output .= ' <small> (Machine name: ' . check_plain($profile_type->type) . ')</small>';
   // @todo if we add a description column to profile types.
   //$output .= '<div class="description">' . filter_xss_admin($type['description']) . '</div>';
   return $output;
@@ -59,23 +59,23 @@ function theme_profile2_admin_type($variables) {
 /**
  * Generates the profile type editing form.
  */
-function profile2_type_form($form, &$form_state, $type = NULL) {
-  if (!isset($type->name)) {
+function profile2_type_form($form, &$form_state, $profile_type = NULL) {
+  if (!isset($profile_type->type)) {
     // This is a new type.
-    $type = profile2_type_set_defaults(array());
+    $profile_type = profile2_type_set_defaults(array());
   }
 
   // Make the type object available to implementations of hook_form_alter.
-  $form['#profile_type'] = $type;
+  $form['#profile_type'] = $profile_type;
 
   $form['name'] = array(
     '#title' => t('Name'),
     '#type' => 'textfield',
-    '#default_value' => $type->label,
+    '#default_value' => $profile_type->label,
     '#description' => t('The human-readable name of this profile type. This text will be displayed as part of the list on the <em>TO DO</em> page. It is recommended that this name begin with a capital letter and contain only letters, numbers, and spaces. This name must be unique.'),
     '#required' => TRUE,
     '#size' => 30,
-    '#field_suffix' => ' <small id="edit-name-suffix">' . ($type->locked ? t('Machine name: @name', array('@name' => $type->name)) : '&nbsp;') . '</small>',
+    '#field_suffix' => ' <small id="edit-name-suffix">' . ($type->locked ? t('Machine name: @name', array('@name' => $profile_type->type)) : '&nbsp;') . '</small>',
   );
 
   $form['actions'] = array('#type' => 'actions');
@@ -85,8 +85,8 @@ function profile2_type_form($form, &$form_state, $type = NULL) {
     '#weight' => 40,
   );
 
-  if (!$type->locked) {
-    if (!empty($type->name)) {
+  if (!$profile_type->locked) {
+    if (!empty($profile_type->type)) {
       $form['actions']['delete'] = array(
         '#type' => 'submit',
         '#value' => t('Delete profile type'),
diff --git profile2.api.php profile2.api.php
index 58cab51..9b0be35 100644
--- profile2.api.php
+++ profile2.api.php
@@ -170,7 +170,7 @@ function hook_profile_type_delete($type) {
  */
 function hook_default_profile_type() {
   $types['main'] = new ProfileType(array(
-      'name' => 'main',
+      'type' => 'main',
       'label' => t('Profile'),
       'weight' => 0,
       'locked' => TRUE,
diff --git profile2.install profile2.install
index c4196c1..c2555aa 100644
--- profile2.install
+++ profile2.install
@@ -53,8 +53,8 @@ function profile2_schema() {
         'not null' => TRUE,
         'description' => 'Primary Key: Unique profile item ID.',
       ),
-      'name' => array(
-        'description' => 'The name of the profile.',
+      'type' => array(
+        'description' => 'The {profile_type}.type of this node.',
         'type' => 'varchar',
         'length' => 32,
         'not null' => TRUE,
@@ -73,7 +73,7 @@ function profile2_schema() {
     ),
     'foreign keys' => array(
       'uid' => array('users' => 'uid'),
-      'name' => array('profile_types' => 'name'),
+      'type' => array('profile_type' => 'type'),
     ),
     'primary key' => array('pid'),
   );
@@ -86,7 +86,7 @@ function profile2_schema() {
         'not null' => TRUE,
         'description' => 'Primary Key: Unique profile type ID.',
       ),
-      'name' => array(
+      'type' => array(
         'description' => 'The machine-readable name of this profile type.',
         'type' => 'varchar',
         'length' => 32,
@@ -124,7 +124,7 @@ function profile2_schema() {
     ),
     'primary key' => array('id'),
     'unique keys' => array(
-      'name' => array('name'),
+      'type' => array('type'),
     ),
   );
   return $schema;
diff --git profile2.module profile2.module
index 0d944d3..8ba6e30 100644
--- profile2.module
+++ profile2.module
@@ -24,11 +24,11 @@ function profile2_entity_info() {
       ),
       'entity keys' => array(
         'id' => 'pid',
-        'bundle' => 'name',
+        'bundle' => 'type',
       ),
       'bundles' => array(),
       'bundle keys' => array(
-        'bundle' => 'name',
+        'bundle' => 'type',
       ),
     ),
   );
@@ -42,7 +42,7 @@ function profile2_entity_info() {
     'exportable' => TRUE,
     'entity keys' => array(
       'id' => 'id',
-      'name' => 'name',
+      'type' => 'type',
     ),
   );
   return $return;
@@ -55,12 +55,12 @@ function profile2_entity_info() {
  * the profile types needs the entity info too.
  */
 function profile2_entity_info_alter(&$entity_info) {
-  foreach (profile2_get_types() as $name => $info) {
-    $entity_info['profile']['bundles'][$name] = array(
+  foreach (profile2_get_types() as $type => $info) {
+    $entity_info['profile']['bundles'][$type] = array(
       'label' => $info->label,
       'admin' => array(
         'path' => 'admin/structure/profiles/manage/%profile_type',
-        'real path' => 'admin/structure/profiles/manage/' . str_replace('_', '-', $name),
+        'real path' => 'admin/structure/profiles/manage/' . str_replace('_', '-', $type),
         'bundle argument' => 4,
         'access arguments' => array('administer profiles'),
       ),
@@ -123,21 +123,21 @@ function profile2_menu() {
 /**
  * Menu argument loader; Load a profile type by string.
  *
- * @param $name
+ * @param $type
  *   The machine-readable name of a profile type to load;
  *   having '_' replaced with '-'.
  * @return
- *   A profile type array or FALSE if $name does not exist.
+ *   A profile type array or FALSE if $type does not exist.
  */
-function profile_type_load($name) {
-  return profile2_get_types(strtr($name, array('-' => '_')));
+function profile_type_load($type) {
+  return profile2_get_types(strtr($type, array('-' => '_')));
 }
 
 /**
  * Menu title callback.
  */
-function profile2_type_page_title($type) {
-  return $type->name;
+function profile2_type_page_title($profile_type) {
+  return $type->type;
 }
 
 /**
@@ -163,22 +163,22 @@ function profile2_permission() {
   return $permissions;
 }
 
-function profile2_list_permissions($type) {
-  $type_name = check_plain($type->name);
+function profile2_list_permissions($profile_type) {
+  $type_name = check_plain($profile_type->type);
 
   // Build standard list of node permissions for this type.
   $perms = array(
     "edit own $type_name profile" => array(
-      'title' => t('Edit own %type_name profile', array('%type_name' => $type->label)),
+      'title' => t('Edit own %type_name profile', array('%type_name' => $profile_type->label)),
     ),
     "edit any $type_name profile" => array(
-      'title' => t('Edit any %type_name profile', array('%type_name' => $type->label)),
+      'title' => t('Edit any %type_name profile', array('%type_name' => $profile_type->label)),
     ),
     "view own $type_name profile" => array(
-      'title' => t('View own %type_name profile', array('%type_name' => $type->label)),
+      'title' => t('View own %type_name profile', array('%type_name' => $profile_type->label)),
     ),
     "view any $type_name profile" => array(
-      'title' => t('View any %type_name profile', array('%type_name' => $type->label)),
+      'title' => t('View any %type_name profile', array('%type_name' => $profile_type->label)),
     ),
   );
 
@@ -186,17 +186,18 @@ function profile2_list_permissions($type) {
 }
 
 /**
- * Gets an array of all profile types, keyed by the name.
+ * Gets an array of all profile types, keyed by the type name.
  *
- * @param $name
+ * @param $type
  *   If set, the type with the given name is returned.
  * @return ProfileType[]
- *   Depending whether $name isset, an array of profile types or a single one.
+ *   Depending whether $type isset, an array of profile types or a single one.
  */
-function profile2_get_types($name = NULL) {
-  $types = entity_load('profile_type', isset($name) ? array($name) : FALSE);
-  if (isset($name)) {
-    return isset($types[$name]) ? $types[$name] : FALSE;
+function profile2_get_types($type = NULL) {
+  // @todo: fix fugly variable names.
+  $types = entity_load('profile_type', isset($type) ? array($type) : FALSE);
+  if (isset($type)) {
+    return isset($types[$type]) ? $types[$type] : FALSE;
   }
   return $types;
 }
@@ -243,37 +244,37 @@ function profile2_load_multiple($pids = array(), $conditions = array(), $reset =
  *
  * @param $account
  *   The user account to load profiles for, or its uid.
- * @param $name
- *   To load a single profile, pass the name of the profile to load.
+ * @param $type
+ *   To load a single profile, pass the type of the profile to load.
  * @return
- *   Either a single profile or an array of profiles keyed by profile name.
+ *   Either a single profile or an array of profiles keyed by profile type.
  *
  * @see profile2_load_multiple()
  */
-function profile2_load_by_user($account, $name = NULL) {
+function profile2_load_by_user($account, $type = NULL) {
   $cache = drupal_static(__FUNCTION__, array());
   $uid = is_object($account) ? $account->uid : $account;
   
   if (!isset($cache[$uid])) {
-    if (empty($name)) {
+    if (empty($type)) {
       $profiles = profile2_load_multiple(array(), array('uid' => $uid));
       // Cache ids for further lookups.
       $cache[$uid] = array();
       foreach ($profiles as $pid => $profile) {
-        $cache[$uid][$profile->name] = $pid;
+        $cache[$uid][$profile->type] = $pid;
       }
       return array_combine(array_keys($cache[$uid]), $profiles);
     }
     $cache[$uid] = db_select('profile', 'p')
-      ->fields('p', array('name', 'pid'))
+      ->fields('p', array('type', 'pid'))
       ->condition('uid', $uid)
       ->execute()
       ->fetchAllKeyed();
   }
-  if (isset($name)) {
-    return isset($cache[$uid][$name]) ? profile2_load($cache[$uid][$name]) : FALSE;
+  if (isset($type)) {
+    return isset($cache[$uid][$type]) ? profile2_load($cache[$uid][$type]) : FALSE;
   }
-  // Return an array containing profiles keyed by profile name.
+  // Return an array containing profiles keyed by profile type.
   return $cache[$uid] ? array_combine(array_keys($cache[$uid]), profile2_load_multiple($cache[$uid])) : $cache[$uid];
 }
 
@@ -333,7 +334,7 @@ function profile2_type_save(ProfileType $type) {
  */
 function profile2_profile_type_presave($type) {
   $data = get_object_vars($type);
-  unset($data['name'], $data['label'], $data['weight'], $data['locked'], $data['data'], $data['userCategory'], $data['userView'], $data['status']);
+  unset($data['type'], $data['label'], $data['weight'], $data['locked'], $data['data'], $data['userCategory'], $data['userView'], $data['status']);
   $type->data = $data;
 }
 
@@ -358,7 +359,7 @@ function profile2_type_set_defaults($info = array()) {
 
   if (!isset($type)) {
     $type = new stdClass();
-    $type->name = '';
+    $type->type = '';
     $type->label = '';
     $type->weight = 0;
     $type->locked = 0;
@@ -382,8 +383,8 @@ function profile2_profile_load($profiles) {
   $types = profile2_get_types();
   // Load the profile's label.
   foreach ($profiles as $profile) {
-    if (isset($types[$profile->name])) {
-      $profile->label = $types[$profile->name]->label;
+    if (isset($types[$profile->type])) {
+      $profile->label = $types[$profile->type]->label;
     }
   }
 }
@@ -393,7 +394,7 @@ function profile2_profile_load($profiles) {
  */
 function profile2_profile_type_delete($type) {
   // Delete all profiles of this type.
-  $pids = array_keys(profile2_load_multiple(FALSE, array('name' => $type->name)));
+  $pids = array_keys(profile2_load_multiple(FALSE, array('type' => $type->type)));
   profile2_delete_multiple($pids);
 }
 
@@ -401,13 +402,13 @@ function profile2_profile_type_delete($type) {
  * Implements hook_user_view().
  */
 function profile2_user_view($account) {
-  foreach (profile2_get_types() as $name => $profile_type) {
-    if ($profile_type->userView && ($profile = profile2_load_by_user($account, $name))) {
-      $account->content['profile_' . $name] = array(
+  foreach (profile2_get_types() as $type => $profile_type) {
+    if ($profile_type->userView && ($profile = profile2_load_by_user($account, $type))) {
+      $account->content['profile_' . $type] = array(
         '#type' => 'user_profile_category',
         '#title' => $profile->label,
       );
-      $account->content['profile_' . $name] += field_attach_view('profile', $profile);
+      $account->content['profile_' . $type] += field_attach_view('profile', $profile);
     }
   }
 }
@@ -423,9 +424,9 @@ function profile2_form_user_profile_form_alter(&$form, &$form_state) {
     if (empty($form_state['profiles'])) {
       $profile = profile2_load_by_user($form['#user'], $form['#user_category']);
       if (empty($profile)) {
-        $profile = profile_create(array('name' => $form['#user_category'], 'uid' => $form['#user']->uid));
+        $profile = profile_create(array('type' => $form['#user_category'], 'uid' => $form['#user']->uid));
       }
-      $form_state['profiles'][$profile->name] = $profile;
+      $form_state['profiles'][$profile->type] = $profile;
     }
     profile2_attach_form($form, $form_state);
   }
@@ -435,10 +436,10 @@ function profile2_form_user_profile_form_alter(&$form, &$form_state) {
  * Implements hook_form_FORM_ID_alter() for the registration form.
  */
 function profile2_form_user_register_form_alter(&$form, &$form_state) {
-  $name = variable_get('profile2_register', 'main');
-  if ($name && ($type = profile2_get_types($name))) {
+  $type = variable_get('profile2_register', 'main');
+  if ($type && ($profile_type = profile2_get_types($type))) {
     if (empty($form_state['profiles'])) {
-      $form_state['profiles'][$name] = profile_create(array('name' => $name));
+      $form_state['profiles'][$type] = profile_create(array('type' => $type));
     }
     profile2_attach_form($form, $form_state);
   }
@@ -456,9 +457,9 @@ function profile2_attach_form(&$form, &$form_state) {
     // TODO: Remove this once it's optional in core.
     $form['#builder_function'] = 'profile2_form_submit_builder';
   }
-  foreach ($form_state['profiles'] as $name => $profile) {
-    $form['profile_' . $profile->name] = array();
-    field_attach_form('profile', $profile, $form['profile_' . $profile->name], $form_state);
+  foreach ($form_state['profiles'] as $type => $profile) {
+    $form['profile_' . $profile->type] = array();
+    field_attach_form('profile', $profile, $form['profile_' . $profile->type], $form_state);
   }
   $form['#validate'][] = 'profile2_form_validate_handler';
   // Extract the form values and clean them up first. This is needed as some
@@ -474,7 +475,7 @@ function profile2_attach_form(&$form, &$form_state) {
  * @see profile2_attach_form()
  */
 function profile2_form_validate_handler(&$form, &$form_state) {
-  foreach ($form_state['profiles'] as $name => $profile) {
+  foreach ($form_state['profiles'] as $type => $profile) {
     field_attach_form_validate('profile', $profile, $form, $form_state);
   }
 }
@@ -489,7 +490,7 @@ function profile2_form_validate_handler(&$form, &$form_state) {
  * @see profile2_attach_form()
  */
 function profile2_form_submit_builder(&$form, &$form_state) {
-  foreach ($form_state['profiles'] as $name => $profile) {
+  foreach ($form_state['profiles'] as $type => $profile) {
     field_attach_submit('profile', $profile, $form, $form_state);
   }
   $form_state['rebuild'] = TRUE;
@@ -512,7 +513,7 @@ function profile2_form_submit_cleanup(&$form, &$form_state) {
  * @see profile2_attach_form()
  */
 function profile2_form_submit_handler(&$form, &$form_state) {
-  foreach ($form_state['profiles'] as $name => $profile) {
+  foreach ($form_state['profiles'] as $type => $profile) {
     // During registration set the uid field of the newly created user.
     if (empty($profile->uid) && isset($form_state['user']->uid)) {
       $profile->uid = $form_state['user']->uid;
@@ -527,15 +528,15 @@ function profile2_form_submit_handler(&$form, &$form_state) {
  */
 function profile2_user_categories() {
   $data = array();
-  foreach (profile2_get_types() as $name => $type) {
-    if ($type->userCategory) {
+  foreach (profile2_get_types() as $type => $info) {
+    if ($info->userCategory) {
       $data[] = array(
-        'name' => $name,
-        'title' => $type->label,
+        'type' => $profile_type,
+        'title' => $info->label,
         // Add an offset so a weight of 0 appears right of the account category.
-        'weight' => $type->weight + 3,
+        'weight' => $info->weight + 3,
         'access callback' => 'profile2_category_access',
-        'access arguments' => array(1, $name)
+        'access arguments' => array(1, $type)
       );
     }
   }
@@ -545,7 +546,7 @@ function profile2_user_categories() {
 /**
  * Menu item access callback - check if a user has access to a profile category.
  */
-function profile2_category_access($account, $profile_name) {
+function profile2_category_access($account, $profile_type) {
   if (user_access('administer profiles') && $account->uid > 0) {
     return TRUE;
   }
@@ -604,7 +605,7 @@ class ProfileType extends EntityDBExtendable {
  */
 function profile2_default_profile_type() {
   $types['main'] = new ProfileType(array(
-      'name' => 'main',
+      'type' => 'main',
       'label' => t('Profile'),
       'weight' => 0,
       'locked' => TRUE,
diff --git profile2.test profile2.test
index 05c4c40..4622a1a 100644
--- profile2.test
+++ profile2.test
@@ -18,12 +18,12 @@ class ProfileCRUDTestCase extends DrupalWebTestCase {
     parent::setUp('profile2', 'locale');
     
     profile2_type_save(new ProfileType(array(
-      'name' => 'test',
+      'type' => 'test',
       'label' => 'label',
       'weight' => 0
     )));
     profile2_type_save(new ProfileType(array(
-      'name' => 'test2',
+      'type' => 'test2',
       'label' => 'label2',
       'weight' => 2
     )));
@@ -36,9 +36,9 @@ class ProfileCRUDTestCase extends DrupalWebTestCase {
   function testCRUD() {
     $user1 = $this->drupalCreateUser();
     // Create profiles for the user1 and unrelated to a user.
-    profile2_save(profile_create(array('name' => 'test', 'uid' => $user1->uid)));
-    profile2_save(profile_create(array('name' => 'test2', 'uid' => $user1->uid)));
-    $profile = profile_create(array('name' => 'test', 'uid' => NULL));
+    profile2_save(profile_create(array('type' => 'test', 'uid' => $user1->uid)));
+    profile2_save(profile_create(array('type' => 'test2', 'uid' => $user1->uid)));
+    $profile = profile_create(array('type' => 'test', 'uid' => NULL));
     profile2_save($profile);
     
     $profiles = profile2_load_by_user($user1);
