diff --git a/example.json b/example.json
index 8d7ccf38535c60585a8d8f8eca202b55cab2bcb7..9e7b846505357d4d162427f8634a4a88dce6631c 100644
--- a/example.json
+++ b/example.json
@@ -13,7 +13,7 @@
     },
     {
         "userid": "user2",
-        "url": "http://www.someamazingwebsite.com/3",
+        "url": "http://www.someamazingwebsite.com/1",
         "type": "GET",
         "timestamp": 1360662163000
     },
@@ -25,7 +25,7 @@
     },
     {
         "userid": "user2",
-        "url": "http://www.someamazingwebsite.com/2",
+        "url": "http://www.someamazingwebsite.com/3",
         "type": "GET",
         "timestamp": 1360462163000
     }
diff --git a/main.go b/main.go
index eba4f1321bb5e3908de9fa594f08477869ba4cff..358d9d806d0a7ff3f124f8f941bc33936a6cd77f 100644
--- a/main.go
+++ b/main.go
@@ -23,14 +23,14 @@ type Load struct {
 	Timestamp   int64  `json:"timestamp"`
 }
 
-type Dates struct {
-	Exists map[string]*URLs
-}
 type URLs struct {
-	Exists map[string]*URL
+	URL map[string]*Dates
+}
+type Dates struct {
+	Exists map[string]*Visits
 }
 
-type URL struct {
+type Visits struct {
 	Counter int
 	UserIds map[string]bool
 }
@@ -47,7 +47,7 @@ func Index(w http.ResponseWriter, r *http.Request) {
 	decoder := json.NewDecoder(r.Body)
 
 	var loads []Load
-	dates := Dates{Exists: make(map[string]*URLs)}
+	visited := URLs{URL: make(map[string]*Dates)}
 
 	err := decoder.Decode(&loads)
 	if err != nil {
@@ -68,49 +68,52 @@ func Index(w http.ResponseWriter, r *http.Request) {
 			t = time.Unix(load.Timestamp/1000, 0).Format("2006-01-02")
 		}
 		log.Println(t)
-		if site, ok := dates.Exists[t]; ok {
-			log.Println("Date exists.")
 
-			if url, ok := site.Exists[load.Url]; ok {
-				log.Println("URL exists.")
-				if url.UserIds[load.Userid] {
+		if date, ok := visited.URL[load.Url]; ok {
+			log.Println("URL exists.")
+
+			if visit, ok := date.Exists[t]; ok {
+				log.Println("Date exists.")
+				if visit.UserIds[load.Userid] {
 					continue //Continue as the user has already visited that website for this day once.
 				} else {
-
-					url.Counter += 1
-					url.UserIds[load.Userid] = true
-					log.Println(url.Counter)
+					visit.Counter += 1
+					visit.UserIds[load.Userid] = true
+					log.Println(visit.Counter)
 				}
 			} else {
-				//Add the URL and a visit.
-				entry := URL{Counter: 0, UserIds: make(map[string]bool)}
-
+				//Add the Date and a Visit.
+				entry := Visits{Counter: 0, UserIds: make(map[string]bool)}
 				entry.Counter += 1
 				entry.UserIds[load.Userid] = true
-				dates.Exists[t].Exists[load.Url] = &entry
-				log.Println("URL is added.")
+				visited.URL[load.Url].Exists[t] = &entry
+				log.Println("Date and Visit is added.")
 			}
 		} else {
-			log.Println("Date doesnt yet exist.")
-			//Initialising Date and Urls for that date.
-			entry := URL{Counter: 0, UserIds: make(map[string]bool)}
-			urls := URLs{Exists: make(map[string]*URL)}
+			log.Println("URL doesn't exist.")
+			//Initialising URL, date and visits for that date.
+			entry := Visits{Counter: 0, UserIds: make(map[string]bool)}
+			dates := Dates{Exists: make(map[string]*Visits)}
 
 			entry.Counter += 1
 			entry.UserIds[load.Userid] = true
-			urls.Exists[load.Url] = &entry
-			dates.Exists[t] = &urls
+			dates.Exists[t] = &entry
+			visited.URL[load.Url] = &dates
 			log.Println("We added it though")
 		}
-		log.Println(dates)
+		log.Println(visited)
 		//fmt.Fprintf(w, "%q", json.NewEncoder(w).Encode(load))
 	}
 
 	// loop over elements of slice
-	for k, v := range dates.Exists {
+	for k, v := range visited.URL {
 		// m is a map[string]interface.
 		// loop over keys and values in the map.
-		log.Println(k, "value is", v)
+
+		log.Println(k, " has these records:")
+		for m, x := range v.Exists {
+			log.Print(" For date: ", m, " there are: ", x.Counter, " unique visits.")
+		}
 
 	}
 }