diff --git a/populate.sh b/populate.sh
new file mode 100755
index 0000000000000000000000000000000000000000..eb7ea111545697bbbd426105c6878b0c9f9d2c9b
--- /dev/null
+++ b/populate.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+mvn -q exec:java -Dexec.mainClass=info.kwarc.mmt.errorview.PopulateDB \
+-Dexec.args="errors.db /var/data/localmh/MathHub/"
diff --git a/src/main/resource/static/search.js b/src/main/resource/static/search.js
index 664ab5c91e4e80e3ca4873a3fceeb20312cd1ead..265ec8d5b0ec8291f4522f08affb78cda9efbb68 100644
--- a/src/main/resource/static/search.js
+++ b/src/main/resource/static/search.js
@@ -5,6 +5,7 @@ angular.module('searchApp', []).controller('SearchController',
       , errLevel : { x : true, long : 'level', search : '' }
       , errType : { x : false, long : 'error type', search : '' }
       , fileName : { x : true, long : 'file name', search : '' }
+      , fileDate : { x : false, long : 'modified', search : '' }
       , target : { x : true, long : 'target', search : '' }
       , sourceRef : { x : true, long : 'source', search : '' }
       , shortMsg : { x : true, long : 'short message', search : '' }
diff --git a/src/main/scala/ParseXML.scala b/src/main/scala/ParseXML.scala
index 7433002147f752ebeb09ca1d0637228f12e68352..2875c2101fc4fa980499d6f3e203b74e48ee4596 100644
--- a/src/main/scala/ParseXML.scala
+++ b/src/main/scala/ParseXML.scala
@@ -1,6 +1,8 @@
 package info.kwarc.mmt.errorview
 
 import java.io.File
+import java.text.SimpleDateFormat
+import java.util.Date
 
 import org.slf4j.{Logger, LoggerFactory}
 
@@ -37,7 +39,7 @@ class ParseXML(db: PopulateDB) {
       if (errs.isEmpty) log.info("no errors in: " + f)
       else errs map (x => procErr(f, x))
     }
-    else log.info("skipped: " + f)
+    else log.debug("skipped: " + f)
   }
 
   def procErr(f: File, x: Node): Unit = {
@@ -56,7 +58,9 @@ class ParseXML(db: PopulateDB) {
     val trace: String = (stacks map (e => (e.child map (_.text)).mkString("\n"))).mkString("\n")
     val rest: String = (others map (_.text)).mkString
     // see Table.columns for the proper argument order
-    val vs = List(f.getPath, tgt, srcRef, errType, shortMsg, level, rest, trace)
+    val vs = List(f.getPath,
+      (new SimpleDateFormat("yyyy-MM-dd HH:mm")).format(new Date(f.lastModified)),
+      tgt, srcRef, errType, shortMsg, level, rest, trace)
     assert(vs.length == Table.columns.length)
     db.insertRow(vs)
     val elems = others filter (_.isInstanceOf[Elem])
diff --git a/src/main/scala/Table.scala b/src/main/scala/Table.scala
index 063b7793e10aa19ac322f0dbbae91d76710a11b2..195b5b1e25ae6205e9ea0011af97a9ab5ce8da73 100644
--- a/src/main/scala/Table.scala
+++ b/src/main/scala/Table.scala
@@ -5,7 +5,7 @@ import org.apache.camel.impl.DefaultCamelContext
 import org.sqlite.SQLiteDataSource
 
 object Table {
-  val columns = List("fileName", "target", "sourceRef", "errType", "shortMsg", "errLevel", "longMsg", "stackTrace")
+  val columns = List("fileName", "fileDate", "target", "sourceRef", "errType", "shortMsg", "errLevel", "longMsg", "stackTrace")
   val name = "errors"
 
   def initArgs(args: scala.Array[String]): (DefaultCamelContext, String) = {