diff --git node_example/node_example.install node_example/node_example.install
index c069480..db31ecc 100755
--- node_example/node_example.install
+++ node_example/node_example.install
@@ -24,15 +24,35 @@
  * - Create color, quantity, and image fields.
  * - Create color, quantity, and image instances.
  *
+ * @see node_type_set_defaults()
  * @see field_info_instance()
  * @see field_update_instance()
  * @see field_create_field()
  * @see field_create_instance()
  */
 function node_example_install() {
-  node_types_rebuild();
-  $types = node_type_get_types();
-  node_add_body_field($types['node_example']);
+  // use get_t() to get the name of our localization function for translation
+  // during install, when t() is not available.
+  $t = get_t();
+
+  // Define the node type.  This is similar to hook_node_info() in Drupal 6
+  $node_example = array(
+    'type' => 'node_example',
+    'name' => $t('Example Node'),
+    'base' => 'node_content',
+    'description' => $t('This is an example node type with a few fields.'),
+    'body_label' => $t('Example Description')
+  );
+
+  // Complete the node type definition by setting any defaults not explicitly
+  // declared above.
+  // http://api.drupal.org/api/function/node_type_set_defaults/7
+  $content_type = node_type_set_defaults($node_example);
+  node_add_body_field($content_type);
+
+  // Save the content type
+  node_type_save($content_type);
+
 
   // Load the instance definition for our content type's body
   // http://api.drupal.org/api/function/field_info_instance/7
@@ -40,7 +60,10 @@ function node_example_install() {
 
   // Add our example_node_list view mode to the body instance display by
   // instructing the body to display as a summary
-  $body_instance['type'] = 'text_summary_or_trimmed';
+  $body_instance['display']['example_node_list'] = array(
+    'label' => 'hidden',
+    'type' => 'text_summary_or_trimmed',
+  );
 
   // Save our changes to the body field instance.
   // http://api.drupal.org/api/function/field_update_instance/7
@@ -56,7 +79,7 @@ function node_example_install() {
   // http://api.drupal.org/api/function/field_create_instance/7
   foreach (_node_example_installed_instances() as $instance) {
     $instance['entity_type'] = 'node';
-    $instance['bundle'] = 'node_example';
+    $instance['bundle'] = $node_example['type'];
     field_create_instance($instance);
   }
 }
@@ -64,8 +87,8 @@ function node_example_install() {
 /**
  * Return a structured array defining the fields created by this content type.
  *
- * This is packaged in a function so it can be used in both hook_install()
- * and hook_uninstall().
+ * This is packaged in a function so it can be used in both
+ * node_example_install() and node_example_uninstall().
  */
 function _node_example_installed_fields() {
   $t = get_t();
diff --git node_example/node_example.module node_example/node_example.module
index 260d92c..ac03edc 100755
--- node_example/node_example.module
+++ node_example/node_example.module
@@ -3,8 +3,8 @@
 
 /**
  * @file
- * This example shows how a module can define a new
- * node type.  In Drupal 7 we move much of what was once needed in this file
+ * This is an example outlining how a module can be used to define a new
+ * node type.  In Drupal 7 we move most of what was once needed in this file
  * to the node_example.install file so that it can be managed efficiently.
  *
  * Our example node type will allow users to specify multiple "colors",
@@ -16,8 +16,8 @@
  * return it's data.  This module declares a custom view mode called
  * "example_node_list".
  *
- * We no longer need an extra per-module database table to store this content
- * type's information.
+ * We no longer need an extra database table to store this content type's
+ * information.
  *
  * Most node types that provide fields do not require any custom code for
  * the fields, as the fields system provides storage and access.
@@ -29,28 +29,11 @@
  * See @link field Field API documentation @endlink
  *
  * See @link field_example.install field_example.install @endlink
+ *
+ * Remember that most node types do not require any custom code, as one
+ * simply creates them using the fields UI.
  */
 
-/**
- * Implements hook_node_info() to provide our node_example type.
- */
-function node_example_node_info() {
-  return array(
-    'node_example' => array(
-      'name' => t('Example Node'),
-      'base' => 'node_example',
-      'description' => t('This is an example node type with a few fields.'),
-      'has_title' => TRUE,
-    ),
-  );
-}
-
-/**
- * Implement hook_form() with the standard default form.
- */
-function node_example_form($node, $form_state) {
-  return node_content_form($node, $form_state);
-}
 
 /**
  * Implements hook_menu().
diff --git simpletest_example/simpletest_example.module simpletest_example/simpletest_example.module
index b78e124..8d740ec 100644
--- simpletest_example/simpletest_example.module
+++ simpletest_example/simpletest_example.module
@@ -71,10 +71,21 @@ function simpletest_example_node_access($node, $op, $account) {
  * Form for the node type.
  */
 function simpletest_example_form($node, $form_state) {
-  return node_content_form($node, $form_state);
+  $type = node_type_get_type($node);
+  $form = array();
+  if ($type->has_title) {
+    $form['title'] = array(
+      '#type' => 'textfield',
+      '#title' => check_plain($type->title_label),
+      '#required' => TRUE,
+      '#default_value' => $node->title,
+      '#maxlength' => 255,
+      '#weight' => -5,
+    );
+  }
+  return $form;
 }
 
-
 /**
  * Implements hook_menu().
  *
