"time"
 )
 
+func interfaceToTime(i interface{}) time.Time {
+       switch s := i.(type) {
+       case time.Time:
+               return s
+       case string:
+               d, e := stringToDate(s)
+               if e == nil {
+                       return d
+               }
+               errorf("Invalid Time/Date format")
+       default:
+               errorf("Only Time is supported for this key")
+       }
+
+       return *new(time.Time)
+}
+
 func interfaceToStringToDate(i interface{}) time.Time {
        s := interfaceToString(i)
 
-       if d, e := parseDateWith(s, []string{
+       if d, e := stringToDate(s); e == nil {
+               return d
+       }
+
+       return time.Unix(0, 0)
+}
+
+func stringToDate(s string) (time.Time, error) {
+       return parseDateWith(s, []string{
                time.RFC3339,
                time.RFC1123Z,
                time.RFC1123,
                "02 Jan 06 15:04 MST",
                "2006-01-02",
                "02 Jan 2006",
-       }); e == nil {
-               return d
-       }
-
-       return time.Unix(0, 0)
+       })
 }
 
 // TODO remove this and return a proper error.
        return 0
 }
 
-func interfaceToTime(i interface{}) time.Time {
-       switch s := i.(type) {
-       case time.Time:
-               return s
-       default:
-               errorf("Only Time is supported for this key")
-       }
-
-       return *new(time.Time)
-}
-
 func interfaceToString(i interface{}) string {
        switch s := i.(type) {
        case string:
 
                case "keywords":
                        page.Keywords = interfaceArrayToStringArray(v)
                case "date", "pubdate":
-                       page.Date = interfaceToStringToDate(v)
+                       page.Date = interfaceToTime(v)
                case "draft":
                        page.Draft = interfaceToBool(v)
                case "layout":
                                        for i, u := range vvv {
                                                a[i] = interfaceToString(u)
                                        }
-                                       page.Params[strings.ToLower(k)] = a
+                                       page.Params[loki] = a
                                }
                        }
                }
 
 
 func TestDegenerateDateFrontMatter(t *testing.T) {
        p, _ := ReadFrom(strings.NewReader(PAGE_WITH_INVALID_DATE), "page/with/invalid/date")
-       if p.Date != time.Unix(0, 0) {
-               t.Fatalf("Date should be set to computer epoch.  Got: %s", p.Date)
+       if p.Date != *new(time.Time) {
+               t.Fatalf("Date should be set to time.Time zero value.  Got: %s", p.Date)
        }
 }