diff --git a/google_image_sitemap.module b/google_image_sitemap.module
index 6e00152..35ebb1b 100644
--- a/google_image_sitemap.module
+++ b/google_image_sitemap.module
@@ -91,8 +91,9 @@ function _google_image_sitemap_list() {
     $url = 'google_image_sitemap/sitemap_' . $gis_obj->created . '.xml';
     //$url = file_create_url(file_build_uri($url));
     $url = variable_get('file_public_path', 'sites/default/files') . '/' . $url;
+    $range_description = empty($gis_obj->range_end) ? t('No range') : $gis_obj->range_start . " to " . $gis_obj->range_end;
     // Build links.
-    $link_attributs = array('attributes' => array('title' => $gis_obj->range_start . " to " . $gis_obj->range_end));
+    $link_attributs = array('attributes' => array('title' => $range_description));
     if (empty($gis_obj->last_updated)) {
       $rebuild_link = '';
       $build_link = l(t('Generate Sitemap'), (GOOGLE_IMAGE_SITEMAP_ADMIN_PATH . '/build/' . $gis_obj->sid), $link_attributs);
@@ -105,7 +106,7 @@ function _google_image_sitemap_list() {
     $rows[] = array(
       ++$counter,
       $build_link,
-      $gis_obj->range_start . " - " . $gis_obj->range_end,
+      $range_description,
       $gis_obj->node_type,
       empty($gis_obj->last_updated) ? '-' : date('d-M-Y ', $gis_obj->last_updated),
       $rebuild_link .
@@ -147,16 +148,13 @@ function _google_image_sitemap_create_form($form, &$form_state, $sitemap_id = NU
   $form['range_start'] = array(
     '#type' => 'textfield',
     '#title' => t('Range Start'),
-    '#description' => t('Starting Node ID.'),
-    '#default_value' => '',
+    '#default_value' => '0',
     '#required' => TRUE,
   );
   $form['range_end'] = array(
     '#type' => 'textfield',
     '#title' => t('Range End'),
-    '#description' => t('Ending Node ID.'),
-    '#default_value' => '',
-    '#required' => TRUE,
+    '#description' => t('Leave it empty or use 0, if you wish no range limitation.'),
   );
   $form['license'] = array(
     '#type' => 'textfield',
@@ -191,34 +189,31 @@ function _google_image_sitemap_create_form_validate($form, &$form_state) {
   if (!empty($form_state['values']['license']) && !valid_url($form_state['values']['license'], TRUE)) {
     form_set_error('license', t('Lincese should be a valid url.'));
   }
+
   // Validate range start for integer.
-  if (empty($form_state['values']['range_start'])) {
-    form_set_error('range_start', t('Range start should be an integer and greater than 0 value.'));
-  }
-  // Validate range start for integer.
-  if (!(preg_match("/^([0-9]+)$/", $form_state['values']['range_start']))) {
-    form_set_error('range_start', t('Range start should be an integer.'));
+  if (!is_numeric($form_state['values']['range_start'])) {
+    form_set_error('range_start', t('Range start should be numeric.'));
   }
-  // Validate range end for integer.
-  if (!(preg_match("/^([0-9]+)$/", $form_state['values']['range_end']))) {
-    form_set_error('range_end', t('Range end should be an integer value.'));
+  elseif (is_numeric($form_state['values']['range_start']) && $form_state['values']['range_start'] < 0) {
+    form_set_error('range_start', t('Range start should be greater or equal to 0.'));
   }
-  // Validate range start and end.
-  if ($form_state['values']['range_start'] > $form_state['values']['range_end']) {
-    form_set_error('range_start', t('Range start should be less than to Range end.'));
-  }
-  // Validate range end with datbase.
-  $query = db_select('node', 'n');
-  $query->condition('n.type', $form_state['values']['node_type'], '=');
-  $query->condition('n.status', NODE_PUBLISHED);
-  $query->addExpression('COUNT(n.nid)', 'max_nid');
-  // Validate range start and end.
-  if ($form_state['values']['range_start'] > $query->execute()->fetchField()) {
-    form_set_error('range_start', t('Range Start should not be greater than @max_nid (Node ID).', array('@max_nid' => $query->execute()->fetchField())));
-  }
-  if ($form_state['values']['range_end'] > $query->execute()->fetchField()) {
-    form_set_error('range_end', t('Range End should not be greater than @max_nid (Node ID).', array('@max_nid' => $query->execute()->fetchField())));
+
+  // We validate range end only if value is set, because we don't
+  // require to use range.
+  if (!empty($form_state['values']['range_end'])) {
+
+    // Validate range end for integer.
+    if (!is_numeric($form_state['values']['range_end'])) {
+      form_set_error('range_end', t('Range end should be an integer.'));
+    }
+
+    // Validate range start and end.
+    if ($form_state['values']['range_start'] > $form_state['values']['range_end']) {
+      form_set_error('range_start', t('Range start should be less than to Range end.'));
+    }
+
   }
+
 }
 
 /**
@@ -279,7 +274,11 @@ function _google_image_sitemap_build($sitemap_id) {
     $query->condition('f.filemime', array('image/png', 'image/jpg', 'image/gif', 'image/jpeg'), 'IN');
     $query->orderBy('n.created', 'DESC');
     $query->orderBy('f.timestamp', 'DESC');
-    $query->range(($sitemap_obj->range_start - 1), ($sitemap_obj->range_end));
+    if ($sitemap_obj->range_end > 0) {
+      // We might not use range, so if range end is set. Then define
+      // the range in the query.
+      $query->range($sitemap_obj->range_start, $sitemap_obj->range_end);
+    }
     $nodes = $query->execute()->fetchAll();
     // Create only if images are found.
     if (count($nodes) > 0) {
