diff --git a/nodeblock.module b/nodeblock.module
index d67a79c..6c82b24 100755
--- a/nodeblock.module
+++ b/nodeblock.module
@@ -56,19 +56,19 @@ function nodeblock_type_comment_link($type) {
  */
 function nodeblock_block_variable_get($delta) {
   $defaults = array(
-      'comment_link' => 'node_block_default', 
-      'node_link' => 'node_block_default', 
+      'comment_link' => 'node_block_default',
+      'node_link' => 'node_block_default',
       'view_mode' => 'node_block_default');
-  
-  $settings = variable_get('nodeblock_block_' . $delta, $defaults); 
-  
+
+  $settings = variable_get('nodeblock_block_' . $delta, $defaults);
+
   //Below adds backwards compatibility.
   $settings = array_merge ( $defaults, $settings);
   $update = FALSE;
 
   if(isset($settings['teaser'])) {
     if($settings['teaser'] == 1) {
-      $settings['view_mode'] == 'teaser';    
+      $settings['view_mode'] == 'teaser';
     }
     unset($settings['teaser']);
     $update = TRUE;
@@ -94,7 +94,7 @@ function nodeblock_block_variable_get($delta) {
 function nodeblock_block_variable_get_values($delta, $type) {
   $type = field_extract_bundle('node', $type);
   $settings = nodeblock_block_variable_get($delta);
-  foreach($settings as $setting => &$value) {  
+  foreach($settings as $setting => &$value) {
     $value = ($value == 'node_block_default' && function_exists('nodeblock_type_'.$setting)) ? call_user_func('nodeblock_type_'.$setting, $type) :  $value;
   }
   return $settings;
@@ -110,7 +110,7 @@ function nodeblock_form_alter(&$form, &$form_state, $form_id) {
   if ($form_id == 'node_type_form') {
     // Get View Mode Options
     $view_modes = nodeblock_get_view_modes($form['#node_type']);
-    
+
     $options = array(
         '0' => 'Hide',
         '1' => 'Show',
@@ -129,7 +129,7 @@ function nodeblock_form_alter(&$form, &$form_state, $form_id) {
           '#type' => 'radios',
           '#title' => t('Available as block'),
           '#default_value' => nodeblock_type_enabled($form['#node_type']),
-          '#options' => array(0 => t('Disabled'), 1 => t('Enabled')),
+          '#options' => array(0 => t('Disabled'), 1 => t('Enabled'), 2 => t('Per node setting')),
           '#description' => t('Should these nodes be made available as blocks?'),
         ),
         'nodeblock_view_mode' => array(
@@ -156,24 +156,52 @@ function nodeblock_form_alter(&$form, &$form_state, $form_id) {
     );
   }
   // node add/edit form
-  elseif (!empty($form['#node_edit_form'])) {    
+  elseif (!empty($form['#node_edit_form'])) {
     $node = $form['#node'];
     // Add translation fallback field for nodeblock and translation enabled source nodes only
-    if (nodeblock_type_enabled($node->type) && module_exists('translation') && translation_supported_type($node->type) && empty($node->translation_source) && (empty($node->tnid) || $node->tnid == 0 || $node->tnid == $node->nid)) {
-      $form['nodeblock'] = array(
+    //if (nodeblock_type_enabled($node->type) && module_exists('translation') && translation_supported_type($node->type) && empty($node->translation_source) && (empty($node->tnid) || $node->tnid == 0 || $node->tnid == $node->nid)) {
+      $form_nodeblock = array(
         '#type' => 'fieldset',
-        '#title' => t('Block translation options'),
+        '#title' => t('Node block'),
+        '#collapsible' => TRUE,
         '#tree' => TRUE,
       );
+      if(variable_get('nodeblock_'. $node->type, 0) == 2){
+        $nodeblock_nodes = variable_get('nodeblock_nodes', array());
+        if(!isset($form['nodeblock'])) {
+            $form['nodeblock'] = $form_nodeblock;
+        }
+        $form['nodeblock']['settings'] = array(
+            '#type' => 'checkbox',
+            '#title' => t('Available as block'),
+        );
+      if (isset($node->nid)){
+          $form['nodeblock']['settings']['#default_value'] = $nodeblock_nodes[$node->nid];
+      }
+      $form['#submit'][] = 'nodeblock_node_submit';
+
       $nodeblock_translation_fallback = isset($node->nid) ? variable_get('nodeblock_translation_fallback_'.$node->nid, '0') : 0;
+      if(!$form['nodeblock']) {
+          $form['nodeblock'] = $form_nodeblock;
+      }
       $form['nodeblock']['translation_fallback'] = array(
         '#type' => 'checkbox',
         '#title' => t('Enable translation fallback?'),
         '#description' => t('If checked, the source translation node will be used when a translation for the current language does not exist.  If unchecked, the block will not be displayed if a matching translation does not exist.'),
         '#default_value' => $nodeblock_translation_fallback,
       );
-    }
   }
+  }
+}
+
+function nodeblock_node_submit($form, &$form_state) {
+
+	if (isset($form_state['values']['nodeblock']['settings'])) {
+		$nodeblock_nodes = variable_get('nodeblock_nodes', array());
+		$nodeblock_nodes[$form_state['values']['nid']] = $form_state['values']['nodeblock']['settings'];
+		variable_set('nodeblock_nodes', $nodeblock_nodes);
+		_block_rehash();
+	}
 }
 
 
@@ -189,7 +217,7 @@ function nodeblock_node_delete($node) {
     $tnid = !empty($node->tnid) ? $node->tnid : $node->nid;
     if(variable_get('nodeblock_translation_fallback_' . $tnid, false)) {
       variable_del('nodeblock_translation_fallback_' . $tnid);
-    }  
+    }
   }
   _block_rehash();
 }
@@ -233,11 +261,12 @@ function _nodeblock_insert_update($node) {
  * hook_block_info
  */
 function nodeblock_block_info() {
+  $nodeblock_nodes = variable_get('nodeblock_nodes', array());
   $blocks = array();
   $blocks2 = array();
   $types = node_type_get_types();
   foreach ($types as $type) {
-    if (nodeblock_type_enabled($type)) {
+    if (variable_get('nodeblock_'. $type->type, 0) == 1) {
       // Fetch all nodes of this type, excluding translations.
       $request = db_select('node', 'n')
         ->fields('n', array('nid', 'title'))
@@ -250,6 +279,30 @@ function nodeblock_block_info() {
       }
     }
   }
+  //extra functionality
+  if (!empty($nodeblock_nodes)) {
+    	$nodes = array();
+    	foreach ($nodeblock_nodes as $nid => $type) {
+    		if ($type) {
+    			$nodes[] = (int)$nid;
+    		}
+    	}
+    	if ($nodes) {
+            $request = db_select('node', 'n')
+            ->fields('n', array('nid', 'title', 'type'))
+            ->condition('n.status', 1)
+            ->condition('n.nid', $nodes ,'IN');
+            $result = $request->execute();
+    	}
+      foreach ($result as $node) {
+        if (variable_get('nodeblock_'. $node->type, 0) == 2) {
+        	$blocks[$node->nid] = array('info' => $node->title .' (nodeblock)');
+        }
+      }
+    }
+  //end extra functionality
+
+
   return $blocks;
 }
 
@@ -289,15 +342,15 @@ function nodeblock_block_view($delta = '') {
   $node->nodeblock = TRUE;
 
   $block['subject'] = check_plain($node->title);
-  
+
   $block['content'] =  node_view($node, $settings['view_mode'], $lang);
-  
+
   if(!(bool)$settings['node_link'] && isset($block['content']['links']['node'])) {
     unset($block['content']['links']['node']);
   }
   if(!(bool)$settings['comment_link'] && isset($block['content']['links']['comment'])) {
     unset($block['content']['links']['comment']);
-  }  
+  }
   return $block;
 }
 
@@ -307,18 +360,18 @@ function nodeblock_block_view($delta = '') {
 function nodeblock_block_configure($delta = '') {
 
   $defaults = nodeblock_block_variable_get($delta);
-  
+
   $node = node_load($delta);
   $entity_info = entity_get_info('node');
   $view_modes = array();
   $view_modes['node_block_default'] = t('Default');
-  $view_modes += nodeblock_get_view_modes($node->type);  
+  $view_modes += nodeblock_get_view_modes($node->type);
   $options = array(
       'node_block_default' => 'Default',
       '0' => 'Hide',
       '1' => 'Show',
   );
-  
+
    // Add a Node Block Group
   $form['nodeblock'] = array(
     '#type' => 'fieldset',
