diff --git a/assets/fonts/icons.svg b/assets/fonts/icons.svg
index e3933635f72b24cec01ebe0b457076b217027185..2fa0039e81c615628dee6bd0dad2eb39899a8000 100644
--- a/assets/fonts/icons.svg
+++ b/assets/fonts/icons.svg
@@ -1,14 +1,19 @@
 <?xml version="1.0" standalone="no"?>
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
 <svg xmlns="http://www.w3.org/2000/svg">
-<metadata>Copyright (C) 2017 by original authors @ fontello.com</metadata>
-<defs>
-<font id="fontello" horiz-adv-x="1000" >
-<font-face font-family="fontello" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
-<missing-glyph horiz-adv-x="1000" />
-<glyph glyph-name="download" unicode="&#xe800;" d="M714 100q0 15-10 25t-25 11-25-11-11-25 11-25 25-11 25 11 10 25z m143 0q0 15-10 25t-26 11-25-11-10-25 10-25 25-11 26 11 10 25z m72 125v-179q0-22-16-37t-38-16h-821q-23 0-38 16t-16 37v179q0 22 16 38t38 16h259l75-76q33-32 76-32t76 32l76 76h259q22 0 38-16t16-38z m-182 318q10-23-8-39l-250-250q-10-11-25-11t-25 11l-250 250q-17 16-8 39 10 21 33 21h143v250q0 15 11 25t25 11h143q14 0 25-11t10-25v-250h143q24 0 33-21z" horiz-adv-x="928.6" />
+    <metadata>Copyright (C) 2017 by original authors @ fontello.com</metadata>
+    <defs>
+        <font id="fontello" horiz-adv-x="1000">
+            <font-face font-family="fontello" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850"
+                       descent="-150"/>
+            <missing-glyph horiz-adv-x="1000"/>
+            <glyph glyph-name="download" unicode="&#xe800;"
+                   d="M714 100q0 15-10 25t-25 11-25-11-11-25 11-25 25-11 25 11 10 25z m143 0q0 15-10 25t-26 11-25-11-10-25 10-25 25-11 26 11 10 25z m72 125v-179q0-22-16-37t-38-16h-821q-23 0-38 16t-16 37v179q0 22 16 38t38 16h259l75-76q33-32 76-32t76 32l76 76h259q22 0 38-16t16-38z m-182 318q10-23-8-39l-250-250q-10-11-25-11t-25 11l-250 250q-17 16-8 39 10 21 33 21h143v250q0 15 11 25t25 11h143q14 0 25-11t10-25v-250h143q24 0 33-21z"
+                   horiz-adv-x="928.6"/>
 
-<glyph glyph-name="github" unicode="&#xf09b;" d="M429 779q116 0 215-58t156-156 57-215q0-140-82-252t-211-155q-15-3-22 4t-7 17q0 1 0 43t0 75q0 54-29 79 32 3 57 10t53 22 45 37 30 58 11 84q0 67-44 115 21 51-4 114-16 5-46-6t-51-25l-21-13q-52 15-107 15t-108-15q-8 6-23 15t-47 22-47 7q-25-63-5-114-44-48-44-115 0-47 12-83t29-59 45-37 52-22 57-10q-21-20-27-58-12-5-25-8t-32-3-36 12-31 35q-11 18-27 29t-28 14l-11 1q-12 0-16-2t-3-7 5-8 7-6l4-3q12-6 24-21t18-29l6-13q7-21 24-34t37-17 39-3 31 1l13 3q0-22 0-50t1-30q0-10-8-17t-22-4q-129 43-211 155t-82 252q0 117 58 215t155 156 216 58z m-267-616q2 4-3 7-6 1-8-1-1-4 4-7 5-3 7 1z m18-19q4 3-1 9-6 5-9 2-4-3 1-9 5-6 9-2z m16-25q6 4 0 11-4 7-9 3-5-3 0-10t9-4z m24-23q4 4-2 10-7 7-11 2-5-5 2-11 6-6 11-1z m32-14q1 6-8 9-8 2-10-4t7-9q8-3 11 4z m35-3q0 7-10 6-9 0-9-6 0-7 10-6 9 0 9 6z m32 5q-1 7-10 5-9-1-8-8t10-4 8 7z" horiz-adv-x="857.1" />
-</font>
-</defs>
+            <glyph glyph-name="github" unicode="&#xf09b;"
+                   d="M429 779q116 0 215-58t156-156 57-215q0-140-82-252t-211-155q-15-3-22 4t-7 17q0 1 0 43t0 75q0 54-29 79 32 3 57 10t53 22 45 37 30 58 11 84q0 67-44 115 21 51-4 114-16 5-46-6t-51-25l-21-13q-52 15-107 15t-108-15q-8 6-23 15t-47 22-47 7q-25-63-5-114-44-48-44-115 0-47 12-83t29-59 45-37 52-22 57-10q-21-20-27-58-12-5-25-8t-32-3-36 12-31 35q-11 18-27 29t-28 14l-11 1q-12 0-16-2t-3-7 5-8 7-6l4-3q12-6 24-21t18-29l6-13q7-21 24-34t37-17 39-3 31 1l13 3q0-22 0-50t1-30q0-10-8-17t-22-4q-129 43-211 155t-82 252q0 117 58 215t155 156 216 58z m-267-616q2 4-3 7-6 1-8-1-1-4 4-7 5-3 7 1z m18-19q4 3-1 9-6 5-9 2-4-3 1-9 5-6 9-2z m16-25q6 4 0 11-4 7-9 3-5-3 0-10t9-4z m24-23q4 4-2 10-7 7-11 2-5-5 2-11 6-6 11-1z m32-14q1 6-8 9-8 2-10-4t7-9q8-3 11 4z m35-3q0 7-10 6-9 0-9-6 0-7 10-6 9 0 9 6z m32 5q-1 7-10 5-9-1-8-8t10-4 8 7z"
+                   horiz-adv-x="857.1"/>
+        </font>
+    </defs>
 </svg>
\ No newline at end of file
diff --git a/assets/sass/style.sass b/assets/sass/style.sass
index 619f21cea92dd1cbf3a4b583b0579f8be5e29b82..1c1df13cb429c9173dd36bfe621133cc933a434f 100644
--- a/assets/sass/style.sass
+++ b/assets/sass/style.sass
@@ -4,6 +4,7 @@
 
 *:focus
   outline: none
+
 *::-moz-focus-inner
   border: 0
 
@@ -22,7 +23,7 @@ nav
   position: sticky
   top: 0
   background: #333333
-  box-shadow: 0 2px 4px rgba(0,0,0,0.2)
+  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2)
   padding: 0 16px
   ul
     display: flex
@@ -71,7 +72,7 @@ nav
 .alert
   padding: 16px
   margin: 16px 0
-  box-shadow: 0 2px 4px rgba(33,33,33,0.2)
+  box-shadow: 0 2px 4px rgba(33, 33, 33, 0.2)
   text-decoration: none
   border-radius: 2px
   &.success
@@ -89,7 +90,7 @@ nav
 
 form.upload
   padding: 96px 0
-  box-shadow: 0 2px 4px rgba(0,0,0,0.2)
+  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2)
   text-decoration: none
   border-radius: 2px
   text-align: center
@@ -136,13 +137,13 @@ form.upload
         text-overflow: ellipsis
         overflow: hidden
 
-.detail 
+.detail
   max-width: 640px
   margin: 32px auto
   width: 100%
   background: #333333
   border-radius: 4px
-  box-shadow: 0 2px 4px rgba(0,0,0,0.4)
+  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.4)
   .title
     line-height: 1.25
     padding: 16px
@@ -152,7 +153,7 @@ form.upload
     color: #eee
     &:empty
       display: none
-      &+.image
+      & + .image
         border-top-left-radius: 4px
         border-top-right-radius: 4px
   .image
diff --git a/page_album_detail.go b/page_album_detail.go
index a3050c9262c1b6c95df7684e0080df0585b33bf5..440423fed475dbf96b2ee999519a4272ade1ec7f 100644
--- a/page_album_detail.go
+++ b/page_album_detail.go
@@ -3,13 +3,12 @@ package main
 import (
 	"net/http"
 	"fmt"
-	"time"
 	"path"
 )
 
 type AlbumDetailData struct {
 	User   UserInfo
-	Album Album
+	Album  Album
 	IsMine bool
 }
 
diff --git a/templates/image_list.html b/templates/image_list.html
index 0dbf5c53ca15efd7b557cecd5ed33a8fda074e74..331819abf7535c80b1e1687db3c54f52f072864f 100644
--- a/templates/image_list.html
+++ b/templates/image_list.html
@@ -4,11 +4,13 @@
 {{range .Images}}
     <a class="image" href="/i/{{.Id}}">
         <div class="image-container">
-            <img src="/{{.Id}}t" >
+            <img src="/{{.Id}}t">
         </div>
         <div class="info">
             <p>{{.OriginalName}}</p>
-            <p><time>{{.CreatedAt.Format "2006-01-02 15:04"}}</time></p>
+            <p>
+                <time>{{.CreatedAt.Format "2006-01-02 15:04"}}</time>
+            </p>
             <p>{{.MimeType}}</p>
         </div>
     </a>
diff --git a/templates/upload.html b/templates/upload.html
index 3b32c161468eca1a001296c0d7375c5d076dbd6c..a77e5f7e743a710f733b1349a859804c31a8f43d 100644
--- a/templates/upload.html
+++ b/templates/upload.html
@@ -8,11 +8,11 @@
     </div>
 {{else}}
     <div class="alert error">
-        {{if .Id}}
+    {{if .Id}}
         <h2>Upload of {{.Id}} failed.</h2>
-        {{else}}
+    {{else}}
         <h2>Upload failed.</h2>
-        {{end}}
+    {{end}}
     {{range .Errors}}
         <pre>{{.}}</pre>
     {{end}}
@@ -20,7 +20,8 @@
 {{end}}
 {{end}}
     <form class="upload" action="/upload/" method="POST" enctype="multipart/form-data">
-        <input type="file" name="file" accept=".jpg,.jpeg,.png,.gif,.apng,.tiff,.tif,.bmp,.webp,.mp4,.mov" multiple/><br>
+        <input type="file" name="file" accept=".jpg,.jpeg,.png,.gif,.apng,.tiff,.tif,.bmp,.webp,.mp4,.mov"
+               multiple/><br>
         <input type="submit"/>
     </form>
 </div>
diff --git a/types.go b/types.go
index ddd6a212e5ff99d22537c8d3acea1ee687082206..2ea713f939eb5193892cb27f757bfac973f9a7ea 100644
--- a/types.go
+++ b/types.go
@@ -16,7 +16,7 @@ type Image struct {
 }
 
 type Result struct {
-	Id      string `json:"id"`
+	Id      string   `json:"id"`
 	Success bool     `json:"success"`
 	Errors  []string `json:"errors"`
 }
diff --git a/util.go b/util.go
index 04d90064258df846fc367c8c70f62b1d8f28c6d4..54521cebdf2c987cf035c1ce2ae30fda42c196a2 100644
--- a/util.go
+++ b/util.go
@@ -7,12 +7,6 @@ import (
 	"time"
 	"database/sql"
 	"github.com/go-redis/redis"
-	"encoding/base64"
-	"io"
-	"mime/multipart"
-	"path/filepath"
-	"os"
-	"crypto/rand"
 )
 
 type UserInfo struct {
@@ -30,18 +24,18 @@ type PageContext struct {
 }
 
 type AlbumImage struct {
-	Id string
-	Title string
+	Id          string
+	Title       string
 	Description string
-	Position int
+	Position    int
 }
 
 type Album struct {
-	Id string
-	Title string
+	Id          string
+	Title       string
 	Description string
-	CreatedAt time.Time
-	Images []AlbumImage
+	CreatedAt   time.Time
+	Images      []AlbumImage
 }
 
 func parseUser(r *http.Request) UserInfo {