diff --git a/src/UNL/WDN/Assessment.php b/src/UNL/WDN/Assessment.php
index cc4be260f83b18599a758d7d8f432dd1249349c2..54790020ee521f73f3f7a9865880a37ea5dbfbb8 100644
--- a/src/UNL/WDN/Assessment.php
+++ b/src/UNL/WDN/Assessment.php
@@ -11,6 +11,23 @@ class UNL_WDN_Assessment
         $this->db      = $db;
     }
     
+    function checkInvalid()
+    {
+        $plogger          = new UNL_WDN_Assessment_PageLogger($this);
+        $vlogger          = new UNL_WDN_Assessment_ValidateInvalidLogger($this);
+        $downloader       = new Spider_Downloader();
+        $parser           = new Spider_Parser();
+        $spider           = new Spider($downloader, $parser);
+        
+        $spider->addLogger($plogger);
+        $spider->addLogger($vlogger);
+        $spider->addUriFilter('Spider_AnchorFilter');
+        $spider->addUriFilter('Spider_MailtoFilter');
+        $spider->addUriFilter('UNL_WDN_Assessment_FileExtensionFilter');
+
+        $spider->spider($this->baseUri);
+    }
+    
     function reValidate()
     {
         $this->removeEntries();
@@ -45,13 +62,13 @@ class UNL_WDN_Assessment
     
     function setValidationResult($uri, $result)
     {
-        $sth = $this->db->prepare('UPDATE assessment SET valid = ? WHERE baseurl = ? AND url = ?;');
+        $sth = $this->db->prepare('UPDATE assessment SET valid = ?, timestamp = ? WHERE baseurl = ? AND url = ?;');
         if ($result) {
             $result = 'true';
         } else {
             $result = 'false';
         }
-        $sth->execute(array($result, $this->baseUri, $uri));
+        $sth->execute(array($result, date('Y-m-d H:i:s'), $this->baseUri, $uri));
     }
     
     function getSubPages()
@@ -60,4 +77,15 @@ class UNL_WDN_Assessment
         $sth->execute(array($this->baseUri));
         return $sth->fetchAll();
     }
+    
+    function pageWasValid($uri)
+    {
+        $sth = $this->db->prepare('SELECT valid FROM assessment WHERE baseurl = ? AND url = ?;');
+        $sth->execute(array($this->baseUri, $uri));
+        $result = $sth->fetch();
+        if ($result['valid'] == 'true') {
+            return true;
+        }
+        return false;
+    }
 }
\ No newline at end of file
diff --git a/src/UNL/WDN/Assessment/ValidateInvalidLogger.php b/src/UNL/WDN/Assessment/ValidateInvalidLogger.php
new file mode 100644
index 0000000000000000000000000000000000000000..c0608deef3060220f1a65b29a93c4659363b633c
--- /dev/null
+++ b/src/UNL/WDN/Assessment/ValidateInvalidLogger.php
@@ -0,0 +1,10 @@
+<?php
+class UNL_WDN_Assessment_ValidateInvalidLogger extends UNL_WDN_Assessment_ValidationLogger
+{
+    function log($uri, DOMXPath $xpath)
+    {
+        if (!$this->assessment->pageWasValid($uri)) {
+            parent::log($uri, $xpath);
+        }
+    }
+}
\ No newline at end of file
diff --git a/www/index.php b/www/index.php
index 88bf08bd1cc9d7808eb13cfe6624cdfb065d8aae..c8e32a32e92a1197b07a32f4abdadcc714c04a33 100644
--- a/www/index.php
+++ b/www/index.php
@@ -9,14 +9,17 @@ if (isset($_GET['uri'])) {
     $assessment = new UNL_WDN_Assessment($uri, $db);
     if (isset($_GET['revalidate'])) {
         $assessment->reValidate();
+    } elseif (isset($_GET['invalid'])) {
+        $assessment->checkInvalid();
     }
 }
 
 ?>
-<h1>Welcome to the batch validator</h1>
+<h1>Welcome to the new batch validator</h1>
 <form method="GET" action="">
 <input type="text" name="uri" value="<?php echo $uri; ?>" />
 Revalidate all? <input type="checkbox" name="revalidate" />
+Revalidate invalid? <input type="checkbox" name="invalid" />
 <input type="submit" name="submit" /></form>
 
 <?php