diff --git a/nodesinblock.admin.inc b/nodesinblock.admin.inc
index b84d6e5..c54ced3 100644
--- a/nodesinblock.admin.inc
+++ b/nodesinblock.admin.inc
@@ -105,13 +105,15 @@ function nodesinblock_settings() {
           '#title' => t('Collapsible fieldset'),
           '#default_value' => variable_get('nodesinblock_' . $key . '_collapsible', TRUE),
         );
-        $options = array(0 => t('Let the user decide'));
-        $options += _nodesinblock_render_options();
+        $options = _nodesinblock_render_options(NULL);
         $form['contenttypes_block']['nodesinblock_' . $key . '_render'] = array(
           '#type' => 'select',
           '#title' => t('Render mode'),
-          '#default_value' => variable_get('nodesinblock_' . $key . '_render', 0),
+          '#description' => t("Select the <em>view modes</em> you wan't available for this content type. Selecting a single <em>view mode</em> will force that mode."),
+          '#default_value' => variable_get('nodesinblock_' . $key . '_render', array()),
           '#options' => $options,
+          '#multiple' => TRUE,
+          '#required' => TRUE,
           '#suffix' => '</div>',
         );
       }
diff --git a/nodesinblock.module b/nodesinblock.module
index 90b48e4..3df8452 100644
--- a/nodesinblock.module
+++ b/nodesinblock.module
@@ -168,15 +168,19 @@ function nodesinblock_form_node_form_alter(&$form, $form_state) {
         '#value' => $node_info['weight']
       );
 
+      $options = _nodesinblock_render_options($node->type);
       $form['nodesinblock']['nodesinblock_render'] = array(
         '#type' => 'select',
         '#title' => t('Render node as'),
-        '#options' => _nodesinblock_render_options(),
-        '#default_value' => $node_info['render']
+        '#options' => $options,
+        '#default_value' => $node_info['render'],
+        '#required' => TRUE,
       );
-      if (variable_get('nodesinblock_' . $node->type . '_render', '0') != '0') {
+
+      // We only got one option, hide the select.
+      if (sizeof($options) == 1) {
         $form['nodesinblock']['nodesinblock_render']['#type'] = 'value';
-        $form['nodesinblock']['nodesinblock_render']['#value'] = variable_get('nodesinblock_' . $node->type . '_render', 0);
+        $form['nodesinblock']['nodesinblock_render']['#value'] = current(array_keys($options));
       }
 
       $form['nodesinblock']['nodesinblock_visibility'] = array(
@@ -319,14 +323,24 @@ function _nodesinblock_validate($node) {
  * @return $render_status
  *   Colleciton of view modes.
  */
-function _nodesinblock_render_options() {
-  static $render_options = array();
+function _nodesinblock_render_options($type = NULL) {
+  $render_options = array();
+  $entity_info = entity_get_info();
 
-  if (empty($render_options)) {
-    $entity_info = entity_get_info();
+  if (is_null($type)) {
+    // We are collection view modes for the admin settings form. Return all
+    // available view modes.
     foreach ($entity_info['node']['view modes'] as $key => $view_mode) {
-      $render_options[$key . ':' . TRUE] = $view_mode['label'] . ' ' . t('With links');
-      $render_options[$key . ':'. FALSE] = $view_mode['label'] . ' ' . t('Without links');
+      $render_options[$key] = $view_mode['label'];
+    }
+  }
+  else {
+    // If we are collection view modes for a node as oppse to the admin form
+    // make sure only selected view modes are available.
+    $render = variable_get('nodesinblock_' . $type . '_render', array());
+    $view_modes = array_uintersect_assoc($entity_info['node']['view modes'], $render, create_function(null, "return 0;"));
+    foreach ($view_modes as $key => $view_mode) {
+      $render_options[$key] = $view_mode['label'];
     }
   }
 
@@ -424,9 +438,9 @@ function _nodesinblock_show($delta, $visibility) {
 
         // In case the the render selection has changed, make sure
         // we select the exact render mode.
-        if (variable_get('nodesinblock_'. $node->type .'_render', '0') != '0') {
+        /*if (variable_get('nodesinblock_'. $node->type .'_render', array()) != '0') {
           $row->render = variable_get('nodesinblock_'. $node->type .'_render', '0');
-        }
+        }*/
 
         // Assemble classes.
         $classes = array('nodesinblock');
@@ -436,11 +450,7 @@ function _nodesinblock_show($delta, $visibility) {
         $i++;
 
         // Render node.
-        list($view_mode, $links) = explode(':', $row->render);
-        $node_content = node_view($node, $view_mode);
-        if (!$links) {
-          unset($node_content['links']);
-        }
+        $node_content = node_view($node, $row->render);
 
         // Return output.
         $output .= '<div class="'. implode(' ', $classes) .'" id="nodesinblock-'. $node->nid .'">';
