diff --git a/main.go b/main.go
index f5f67475676c8740f781eacd601db8379831ce99..101eeb1a1436a711bfc1a6a1c66d9f975948bcb1 100644
--- a/main.go
+++ b/main.go
@@ -95,14 +95,8 @@ type UploadData struct {
 	Result Result
 }
 
-func returnResult(w http.ResponseWriter, data UploadData) error {
-	var pageTemplate *template.Template
-	var err error
-	if data.Result.Success {
-		pageTemplate, err = template.New("upload_success.html").ParseFiles("templates/upload_success.html")
-	} else {
-		pageTemplate, err = template.New("upload_failure.html").ParseFiles("templates/upload_failure.html")
-	}
+func returnResult(w http.ResponseWriter, templateName string, data interface{}) error {
+	pageTemplate, err := template.New(templateName).ParseFiles(fmt.Sprintf("templates/%s", templateName))
 	if err != nil {
 		return err
 	}
@@ -139,7 +133,7 @@ func main() {
 			file, header, err := r.FormFile("file")
 			image, err := createImage(&config, file, header)
 			if err != nil {
-				returnResult(w, UploadData{
+				returnResult(w, "upload.html", UploadData{
 					user,
 					Result{
 						Id:      "",
@@ -159,14 +153,16 @@ func main() {
 
 			data, err := json.Marshal(image)
 			if err != nil {
-				returnResult(w, UploadData{
+				if err = returnResult(w, "upload.html", UploadData{
 					user,
 					Result{
 						Id:      image.Id,
 						Success: false,
 						Errors:  []string{err.Error()},
 					},
-				})
+				}); err != nil {
+					panic(err)
+				}
 				return
 			}
 
@@ -179,28 +175,32 @@ func main() {
 			for waiting {
 				message, err := pubsub.ReceiveMessage()
 				if err != nil {
-					returnResult(w, UploadData{
+					if err = returnResult(w, "upload.html", UploadData{
 						user,
 						Result{
 							Id:      image.Id,
 							Success: false,
 							Errors:  []string{err.Error()},
 						},
-					})
+					}); err != nil {
+						panic(err)
+					}
 					return
 				}
 
 				result := Result{}
 				err = json.Unmarshal([]byte(message.Payload), &result)
 				if err != nil {
-					returnResult(w, UploadData{
+					if err = returnResult(w, "upload.html", UploadData{
 						user,
 						Result{
 							Id:      image.Id,
 							Success: false,
 							Errors:  []string{err.Error()},
 						},
-					})
+					}); err != nil {
+						panic(err)
+					}
 					return
 				}
 
@@ -209,28 +209,21 @@ func main() {
 				if result.Id == image.Id {
 					waiting = false
 
-					returnResult(w, UploadData{
+					if err = returnResult(w, "upload.html", UploadData{
 						user,
 						result,
-					})
+					}); err != nil {
+						panic(err)
+					}
 					return
 				}
 			}
 		} else {
 			user := parseUser(r)
-
-			type UploadData struct {
-				User UserInfo
-			}
-
-			tmpl, err := template.New("upload.html").ParseFiles("templates/upload.html")
-			if err != nil {
-				panic(err)
-			}
-			err = tmpl.Execute(w, UploadData{
+			if err = returnResult(w, "upload.html", UploadData{
 				user,
-			})
-			if err != nil {
+				Result{},
+			}); err != nil {
 				panic(err)
 			}
 		}
@@ -269,15 +262,10 @@ func main() {
 			images = append(images, info)
 		}
 
-		pageTemplate, err := template.New("me_images.html").ParseFiles("templates/me_images.html")
-		if err != nil {
-			panic(err)
-		}
-		err = pageTemplate.Execute(w, ImageListData{
+		if err = returnResult(w, "me_images.html", ImageListData{
 			user,
 			images,
-		})
-		if err != nil {
+		}); err != nil {
 			panic(err)
 		}
 	})
@@ -291,14 +279,9 @@ func main() {
 			User UserInfo
 		}
 
-		tmpl, err := template.New("index.html").ParseFiles("templates/index.html")
-		if err != nil {
-			panic(err)
-		}
-		err = tmpl.Execute(w, IndexData{
+		if err = returnResult(w, "index.html", IndexData{
 			user,
-		})
-		if err != nil {
+		}); err != nil {
 			panic(err)
 		}
 	})
diff --git a/templates/upload.html b/templates/upload.html
index d3e7a4cb454514b2b4c74f07176f1bdddcd0d977..bc01d19d932a1a5626162cc78faaea56d67a0213 100644
--- a/templates/upload.html
+++ b/templates/upload.html
@@ -11,6 +11,21 @@
     <a href="/upload">Upload</a>
 </p>
 
+{{ if .Result.Id }}
+    {{ if .Result.Success }}
+        <div class="info success">
+            <h2>Upload of {{ .Result.Id }} finished. <a href="/i/{{ .Result.Id }}">View</a>.</h2>
+        </div>
+    {{ else }}
+        <div class="info error">
+            <h2>Upload of {{ .Result.Id }} failed.</h2>
+            {{ range .Result.Errors }}
+                <pre>{{ . }}</pre>
+            {{ end }}
+        </div>
+    {{ end }}
+{{ end }}
+
 <form action="/upload/" method="POST" enctype="multipart/form-data">
     <input type="file" name="file"/>
     <input type="submit"/>
diff --git a/templates/upload_failure.html b/templates/upload_failure.html
deleted file mode 100644
index 9816479edd969e1ff49a8f08c9784df62446190e..0000000000000000000000000000000000000000
--- a/templates/upload_failure.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>Upload | ik8r</title>
-<link href="/assets/css/style.css" rel="stylesheet">
-<link href="/assets/css/fonts.css" rel="stylesheet">
-
-<p>Welcome, {{ .User.Name }}</p>
-<p>
-    <a href="/me/images">My Images</a> |
-    <a href="/me/albums">My Albums</a> |
-    <a href="/upload">Upload</a>
-</p>
-
-<div class="info error">
-    <h2>Upload of {{ .Result.Id }} failed.</h2>
-    {{ range .Result.Errors }}
-    <pre>{{ . }}</pre>
-    {{ end }}
-</div>
-
-<form action="/upload/" method="POST" enctype="multipart/form-data">
-    <input type="file" name="file"/>
-    <input type="submit"/>
-</form>
\ No newline at end of file
diff --git a/templates/upload_success.html b/templates/upload_success.html
deleted file mode 100644
index 1d7fbaffe9e7c65555cb8b8b952144dca789c95c..0000000000000000000000000000000000000000
--- a/templates/upload_success.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>Upload | ik8r</title>
-<link href="/assets/css/style.css" rel="stylesheet">
-<link href="/assets/css/fonts.css" rel="stylesheet">
-
-<p>Welcome, {{ .User.Name }}</p>
-<p>
-    <a href="/me/images">My Images</a> |
-    <a href="/me/albums">My Albums</a> |
-    <a href="/upload">Upload</a>
-</p>
-
-<div class="info success">
-    <h2>Upload of {{ .Result.Id }} finished. <a href="/i/{{ .Result.Id }}">View</a>.</h2>
-</div>
-
-<form action="/upload/" method="POST" enctype="multipart/form-data">
-    <input type="file" name="file"/>
-    <input type="submit"/>
-</form>
\ No newline at end of file