diff --git a/modules/node/content_types.inc b/modules/node/content_types.inc
index b5db1e00cd4855a4d98b33383e3886cc86744a10..95fc1f47c09b81f83e4a539faac7ade4b52c2558 100644
--- a/modules/node/content_types.inc
+++ b/modules/node/content_types.inc
@@ -17,7 +17,7 @@ function node_overview_types() {
 
   foreach ($names as $key => $name) {
     $type = $types[$key];
-    if (module_exist($type->module)) {
+    if (function_exists($type->module .'_form')) {
       $name = check_plain($name);
       $type_url_str = str_replace('_', '-', $type->type);
       // Populate the operations field.
diff --git a/modules/node/node.module b/modules/node/node.module
index c05e8dc3eef4d96c75de88a02b23f50d3628fccb..a85a91ca12baf2f1fd6de3543d62674286522f3e 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -1062,7 +1062,7 @@ function node_menu($may_cache) {
       'type' => MENU_CALLBACK);
 
     foreach (node_get_types() as $type) {
-      if (module_exist($type->module)) {
+      if (function_exists($type->module .'_form')) {
         $name = check_plain($type->name);
         $type_url_str = str_replace('_', '-', $type->type);
         $items[] = array(
@@ -2010,7 +2010,7 @@ function node_add($type) {
   else {
     // If no (valid) node type has been provided, display a node type overview.
     foreach ($types as $type) {
-      if (module_exist($type->module) && node_access('create', $type->type)) {
+      if (function_exists($type->module .'_form') && node_access('create', $type->type)) {
         $type_url_str = str_replace('_', '-', $type->type);
         $title = t('Add a new %s.', array('%s' => check_plain($type->name)));
         $out = '<dt>'. l($type->name, "node/add/$type_url_str", array('title' => $title)) .'</dt>';