diff --git a/includes/drealty.listing.admin.inc b/includes/drealty.listing.admin.inc
index 15fca46..84282de 100644
--- a/includes/drealty.listing.admin.inc
+++ b/includes/drealty.listing.admin.inc
@@ -17,13 +17,23 @@ class DrealtyListingUIController extends EntityDefaultUIController {
     );
     $items[$this->path . '/add'] = array(
       'title' => 'Add dRealty Listing',
-      'page callback' => 'drealty_listing_form_wrapper',
-      'page arguments' => array('add', drealty_listing_create(array('rets_imported' => FALSE))),
+      'page callback' => 'drealty_listing_add_page',
       'access arguments' => array('create drealty listing'),
       'file' => 'drealty.listing.admin.inc',
       'file path' => drupal_get_path('module', $this->entityInfo['module']) . '/includes',
-      'type' => MENU_LOCAL_ACTION,
     );
+    foreach (drealty_listings_get_types() as $type) {
+      $type_url_str = str_replace('_', '-', $type->type);
+      $items[$this->path . '/add/' . $type_url_str] = array(
+        'title' => $type->label,
+        'title callback' => 'check_plain',
+        'page callback' => 'drealty_listing_form_wrapper',
+        'page arguments' => array('add', drealty_listing_create(array('rets_imported' => FALSE, 'type' => $type->type))),
+        'access arguments' => array('create drealty listing'),
+        'file' => 'drealty.listing.admin.inc',
+        'file path' => drupal_get_path('module', $this->entityInfo['module']) . '/includes',
+      );
+    }
     // Loading and editing model entities
     $items[$this->path . '/' . $wildcard] = array(
       'title' => t('Edit Listing'),
@@ -74,6 +84,17 @@ class DrealtyListingUIController extends EntityDefaultUIController {
 
 }
 
+function drealty_listing_add_page() {
+  $item = menu_get_item();
+  $content = system_admin_menu_block($item);
+  // Bypass the drealty_listing/add listing if only one type is available.
+  if (count($content) == 1) {
+    $item = array_shift($content);
+    drupal_goto($item['href']);
+  }
+  return theme('node_add_list', array('content' => $content));
+}
+
 function drealty_listing_admin($type = 'new') {
   $edit = $_POST;
   if (isset($edit['operation']) && ($edit['operation'] == 'delete') && isset($edit['listings']) && $edit['listings']) {
