diff --git a/src/github.com/turt2live/matrix-media-repo/api/r0/download.go b/src/github.com/turt2live/matrix-media-repo/api/r0/download.go
index a6e5460da790a80a2c54f75a33478f5fe5a398df..f8a7a0b68be73ddd5fdcb635c94bc5341bb94166 100644
--- a/src/github.com/turt2live/matrix-media-repo/api/r0/download.go
+++ b/src/github.com/turt2live/matrix-media-repo/api/r0/download.go
@@ -7,9 +7,9 @@ import (
 	"github.com/gorilla/mux"
 	"github.com/sirupsen/logrus"
 	"github.com/turt2live/matrix-media-repo/api"
+	"github.com/turt2live/matrix-media-repo/common"
 	"github.com/turt2live/matrix-media-repo/media_cache"
 	"github.com/turt2live/matrix-media-repo/util"
-	"github.com/turt2live/matrix-media-repo/util/errs"
 )
 
 type DownloadMediaResponse struct {
@@ -42,11 +42,11 @@ func DownloadMedia(r *http.Request, log *logrus.Entry, user api.UserInfo) interf
 
 	streamedMedia, err := mediaCache.GetMedia(server, mediaId)
 	if err != nil {
-		if err == errs.ErrMediaNotFound {
+		if err == common.ErrMediaNotFound {
 			return api.NotFoundError()
-		} else if err == errs.ErrMediaTooLarge {
+		} else if err == common.ErrMediaTooLarge {
 			return api.RequestTooLarge()
-		} else if err == errs.ErrMediaQuarantined {
+		} else if err == common.ErrMediaQuarantined {
 			return api.NotFoundError() // We lie for security
 		}
 		log.Error("Unexpected error locating media: " + err.Error())
diff --git a/src/github.com/turt2live/matrix-media-repo/api/r0/info.go b/src/github.com/turt2live/matrix-media-repo/api/r0/info.go
index 6624241b76529c4502d6c538d903de7279a99b67..d6e8a05018c280dcde7b14ee5a00cfb2871a618b 100644
--- a/src/github.com/turt2live/matrix-media-repo/api/r0/info.go
+++ b/src/github.com/turt2live/matrix-media-repo/api/r0/info.go
@@ -7,8 +7,8 @@ import (
 	"github.com/gorilla/mux"
 	"github.com/sirupsen/logrus"
 	"github.com/turt2live/matrix-media-repo/api"
+	"github.com/turt2live/matrix-media-repo/common"
 	"github.com/turt2live/matrix-media-repo/media_cache"
-	"github.com/turt2live/matrix-media-repo/util/errs"
 )
 
 type MediaInfoResponse struct {
@@ -34,11 +34,11 @@ func MediaInfo(r *http.Request, log *logrus.Entry, user api.UserInfo) interface{
 
 	streamedMedia, err := mediaCache.GetMedia(server, mediaId)
 	if err != nil {
-		if err == errs.ErrMediaNotFound {
+		if err == common.ErrMediaNotFound {
 			return api.NotFoundError()
-		} else if err == errs.ErrMediaTooLarge {
+		} else if err == common.ErrMediaTooLarge {
 			return api.RequestTooLarge()
-		} else if err == errs.ErrMediaQuarantined {
+		} else if err == common.ErrMediaQuarantined {
 			return api.NotFoundError() // We lie for security
 		}
 		log.Error("Unexpected error locating media: " + err.Error())
diff --git a/src/github.com/turt2live/matrix-media-repo/api/r0/local_copy.go b/src/github.com/turt2live/matrix-media-repo/api/r0/local_copy.go
index a3148ed105c5a94a2573f6fd50bc87c74bacd897..704b5091f850e3932aec0609520acae6f5170bcf 100644
--- a/src/github.com/turt2live/matrix-media-repo/api/r0/local_copy.go
+++ b/src/github.com/turt2live/matrix-media-repo/api/r0/local_copy.go
@@ -6,9 +6,9 @@ import (
 	"github.com/gorilla/mux"
 	"github.com/sirupsen/logrus"
 	"github.com/turt2live/matrix-media-repo/api"
+	"github.com/turt2live/matrix-media-repo/common"
 	"github.com/turt2live/matrix-media-repo/media_cache"
 	"github.com/turt2live/matrix-media-repo/services/media_service"
-	"github.com/turt2live/matrix-media-repo/util/errs"
 )
 
 func LocalCopy(r *http.Request, log *logrus.Entry, user api.UserInfo) interface{} {
@@ -29,11 +29,11 @@ func LocalCopy(r *http.Request, log *logrus.Entry, user api.UserInfo) interface{
 
 	streamedMedia, err := mediaCache.GetMedia(server, mediaId)
 	if err != nil {
-		if err == errs.ErrMediaNotFound {
+		if err == common.ErrMediaNotFound {
 			return api.NotFoundError()
-		} else if err == errs.ErrMediaTooLarge {
+		} else if err == common.ErrMediaTooLarge {
 			return api.RequestTooLarge()
-		} else if err == errs.ErrMediaQuarantined {
+		} else if err == common.ErrMediaQuarantined {
 			return api.NotFoundError() // We lie for security
 		}
 		log.Error("Unexpected error locating media: " + err.Error())
@@ -48,7 +48,7 @@ func LocalCopy(r *http.Request, log *logrus.Entry, user api.UserInfo) interface{
 
 	newMedia, err := svc.StoreMedia(streamedMedia.Stream, streamedMedia.Media.ContentType, streamedMedia.Media.UploadName, user.UserId, r.Host, "")
 	if err != nil {
-		if err == errs.ErrMediaNotAllowed {
+		if err == common.ErrMediaNotAllowed {
 			return api.BadRequest("Media content type not allowed on this server")
 		}
 
diff --git a/src/github.com/turt2live/matrix-media-repo/api/r0/preview_url.go b/src/github.com/turt2live/matrix-media-repo/api/r0/preview_url.go
index fdc80bae619505c94a5a320d1d1ab12a5858e317..e023ae84067fd53c8ea8a4aed638129696056222 100644
--- a/src/github.com/turt2live/matrix-media-repo/api/r0/preview_url.go
+++ b/src/github.com/turt2live/matrix-media-repo/api/r0/preview_url.go
@@ -7,10 +7,10 @@ import (
 
 	"github.com/sirupsen/logrus"
 	"github.com/turt2live/matrix-media-repo/api"
+	"github.com/turt2live/matrix-media-repo/common"
 	"github.com/turt2live/matrix-media-repo/config"
 	"github.com/turt2live/matrix-media-repo/services/url_service"
 	"github.com/turt2live/matrix-media-repo/util"
-	"github.com/turt2live/matrix-media-repo/util/errs"
 )
 
 type MatrixOpenGraph struct {
@@ -57,9 +57,9 @@ func PreviewUrl(r *http.Request, log *logrus.Entry, user api.UserInfo) interface
 	svc := url_service.New(r.Context(), log)
 	preview, err := svc.GetPreview(urlStr, r.Host, user.UserId, ts)
 	if err != nil {
-		if err == errs.ErrMediaNotFound || err == errs.ErrHostNotFound {
+		if err == common.ErrMediaNotFound || err == common.ErrHostNotFound {
 			return api.NotFoundError()
-		} else if err == errs.ErrInvalidHost || err == errs.ErrHostBlacklisted {
+		} else if err == common.ErrInvalidHost || err == common.ErrHostBlacklisted {
 			return api.BadRequest(err.Error())
 		} else {
 			return api.InternalServerError("unexpected error during request")
diff --git a/src/github.com/turt2live/matrix-media-repo/api/r0/thumbnail.go b/src/github.com/turt2live/matrix-media-repo/api/r0/thumbnail.go
index 8b68fd44172b7caae4e1af733255fadb2e0706c2..faed89f9fdccaa3ed944358bd719d2f56eb24cfe 100644
--- a/src/github.com/turt2live/matrix-media-repo/api/r0/thumbnail.go
+++ b/src/github.com/turt2live/matrix-media-repo/api/r0/thumbnail.go
@@ -7,10 +7,10 @@ import (
 	"github.com/gorilla/mux"
 	"github.com/sirupsen/logrus"
 	"github.com/turt2live/matrix-media-repo/api"
+	"github.com/turt2live/matrix-media-repo/common"
 	"github.com/turt2live/matrix-media-repo/config"
 	"github.com/turt2live/matrix-media-repo/media_cache"
 	"github.com/turt2live/matrix-media-repo/util"
-	"github.com/turt2live/matrix-media-repo/util/errs"
 )
 
 func ThumbnailMedia(r *http.Request, log *logrus.Entry, user api.UserInfo) interface{} {
@@ -75,9 +75,9 @@ func ThumbnailMedia(r *http.Request, log *logrus.Entry, user api.UserInfo) inter
 
 	streamedThumbnail, err := mediaCache.GetThumbnail(server, mediaId, width, height, method, animated)
 	if err != nil {
-		if err == errs.ErrMediaNotFound {
+		if err == common.ErrMediaNotFound {
 			return api.NotFoundError()
-		} else if err == errs.ErrMediaTooLarge {
+		} else if err == common.ErrMediaTooLarge {
 			return api.RequestTooLarge()
 		}
 		log.Error("Unexpected error locating media: " + err.Error())
diff --git a/src/github.com/turt2live/matrix-media-repo/api/r0/upload.go b/src/github.com/turt2live/matrix-media-repo/api/r0/upload.go
index 1ae677ed2fd96915bee2f9b07c5d514dacb92908..cf83e75c39ae4e1f305862d939dcf122a7ae17aa 100644
--- a/src/github.com/turt2live/matrix-media-repo/api/r0/upload.go
+++ b/src/github.com/turt2live/matrix-media-repo/api/r0/upload.go
@@ -7,8 +7,8 @@ import (
 
 	"github.com/sirupsen/logrus"
 	"github.com/turt2live/matrix-media-repo/api"
+	"github.com/turt2live/matrix-media-repo/common"
 	"github.com/turt2live/matrix-media-repo/services/media_service"
-	"github.com/turt2live/matrix-media-repo/util/errs"
 )
 
 type MediaUploadedResponse struct {
@@ -43,7 +43,7 @@ func UploadMedia(r *http.Request, log *logrus.Entry, user api.UserInfo) interfac
 		io.Copy(ioutil.Discard, r.Body) // Ditch the entire request
 		defer r.Body.Close()
 
-		if err == errs.ErrMediaNotAllowed {
+		if err == common.ErrMediaNotAllowed {
 			return api.BadRequest("Media content type not allowed on this server")
 		}
 
diff --git a/src/github.com/turt2live/matrix-media-repo/util/errs/errorcodes.go b/src/github.com/turt2live/matrix-media-repo/common/errorcodes.go
similarity index 93%
rename from src/github.com/turt2live/matrix-media-repo/util/errs/errorcodes.go
rename to src/github.com/turt2live/matrix-media-repo/common/errorcodes.go
index 8a2e76b200b9823671084294ee9058dfc1a5eb19..d96d0fa4407e23b318310277f3ef370166e3a32e 100644
--- a/src/github.com/turt2live/matrix-media-repo/util/errs/errorcodes.go
+++ b/src/github.com/turt2live/matrix-media-repo/common/errorcodes.go
@@ -1,4 +1,4 @@
-package errs
+package common
 
 const ErrCodeInvalidHost = "M_INVALID_HOST"
 const ErrCodeHostNotFound = "M_HOST_NOT_FOUND"
diff --git a/src/github.com/turt2live/matrix-media-repo/util/errs/errors.go b/src/github.com/turt2live/matrix-media-repo/common/errors.go
similarity index 96%
rename from src/github.com/turt2live/matrix-media-repo/util/errs/errors.go
rename to src/github.com/turt2live/matrix-media-repo/common/errors.go
index 5370df9d83fcb5d9758bbfb150fca8a8dcb1499d..6f33b8078aa905268142e045b8f5f9b2cd4141d5 100644
--- a/src/github.com/turt2live/matrix-media-repo/util/errs/errors.go
+++ b/src/github.com/turt2live/matrix-media-repo/common/errors.go
@@ -1,4 +1,4 @@
-package errs
+package common
 
 import (
 	"errors"
diff --git a/src/github.com/turt2live/matrix-media-repo/media_cache/media_cache.go b/src/github.com/turt2live/matrix-media-repo/media_cache/media_cache.go
index e40cbdd3fdb40dcb9269e95c3eb2b849ed25d2eb..db11384b9121ad29a00b74075064a41dec0f2915 100644
--- a/src/github.com/turt2live/matrix-media-repo/media_cache/media_cache.go
+++ b/src/github.com/turt2live/matrix-media-repo/media_cache/media_cache.go
@@ -10,11 +10,11 @@ import (
 	"github.com/patrickmn/go-cache"
 	"github.com/pkg/errors"
 	"github.com/sirupsen/logrus"
+	"github.com/turt2live/matrix-media-repo/common"
 	"github.com/turt2live/matrix-media-repo/config"
 	"github.com/turt2live/matrix-media-repo/services/media_service"
 	"github.com/turt2live/matrix-media-repo/types"
 	"github.com/turt2live/matrix-media-repo/util"
-	"github.com/turt2live/matrix-media-repo/util/errs"
 )
 
 func (c *mediaCache) getKeyForMedia(server string, mediaId string) string {
@@ -33,7 +33,7 @@ func (c *mediaCache) GetMedia(server string, mediaId string) (*types.StreamedMed
 
 	if media.Quarantined {
 		c.log.Warn("Quarantined media accessed")
-		return nil, errs.ErrMediaQuarantined
+		return nil, common.ErrMediaQuarantined
 	}
 
 	// At this point we should have a real media object to use, so let's try caching it
@@ -80,7 +80,7 @@ func (c *mediaCache) GetRawMedia(server string, mediaId string) (*types.Media, e
 		if err == sql.ErrNoRows {
 			if util.IsServerOurs(server) {
 				c.log.Warn("Media not found")
-				return nil, errs.ErrMediaNotFound
+				return nil, common.ErrMediaNotFound
 			}
 		}
 
@@ -94,7 +94,7 @@ func (c *mediaCache) GetRawMedia(server string, mediaId string) (*types.Media, e
 	if !exists || err != nil {
 		if util.IsServerOurs(server) {
 			c.log.Error("Media not found in file store when we expected it to")
-			return nil, errs.ErrMediaNotFound
+			return nil, common.ErrMediaNotFound
 		} else {
 			c.log.Warn("Media appears to have been deleted - redownloading")
 
diff --git a/src/github.com/turt2live/matrix-media-repo/media_cache/thumbnail_cache.go b/src/github.com/turt2live/matrix-media-repo/media_cache/thumbnail_cache.go
index 952539c50c6c013977aecf88a208ee218eba8079..d353dc29809b8176aa4799a62fcf5dfb4082ed34 100644
--- a/src/github.com/turt2live/matrix-media-repo/media_cache/thumbnail_cache.go
+++ b/src/github.com/turt2live/matrix-media-repo/media_cache/thumbnail_cache.go
@@ -12,11 +12,11 @@ import (
 	"github.com/disintegration/imaging"
 	"github.com/patrickmn/go-cache"
 	"github.com/sirupsen/logrus"
+	"github.com/turt2live/matrix-media-repo/common"
 	"github.com/turt2live/matrix-media-repo/config"
 	"github.com/turt2live/matrix-media-repo/services/thumbnail_service"
 	"github.com/turt2live/matrix-media-repo/types"
 	"github.com/turt2live/matrix-media-repo/util"
-	"github.com/turt2live/matrix-media-repo/util/errs"
 )
 
 var regexContentType = regexp.MustCompile(`^\s*([^\/]+)\/(?:[^\.]+\.)?([^+;\s]+).*$`)
@@ -37,11 +37,11 @@ func (c *mediaCache) GetThumbnail(server string, mediaId string, width int, heig
 
 	thumbnail, err := c.GetRawThumbnail(server, mediaId, width, height, method, animated)
 	if err != nil {
-		if err == errs.ErrMediaQuarantined {
+		if err == common.ErrMediaQuarantined {
 			c.log.Warn("Quarantined media accessed")
 		}
 
-		if err == errs.ErrMediaQuarantined && config.Get().Quarantine.ReplaceThumbnails {
+		if err == common.ErrMediaQuarantined && config.Get().Quarantine.ReplaceThumbnails {
 			c.log.Info("Replacing thumbnail with a quarantined icon")
 			svc := thumbnail_service.New(c.ctx, c.log)
 			img, err := svc.GenerateQuarantineThumbnail(server, mediaId, width, height)
@@ -136,7 +136,7 @@ func (c *mediaCache) GetRawThumbnail(server string, mediaId string, width int, h
 	}
 
 	if media.Quarantined {
-		return nil, errs.ErrMediaQuarantined
+		return nil, common.ErrMediaQuarantined
 	}
 
 	thumb, err := thumbnailSvc.GetThumbnailDirect(media, width, height, method, animated)
diff --git a/src/github.com/turt2live/matrix-media-repo/services/media_service/media_service.go b/src/github.com/turt2live/matrix-media-repo/services/media_service/media_service.go
index 816560c6985f113494a28135e0980f7cec1673c5..32e8a672b8ce7f37ffc7b2452515a29066408698 100644
--- a/src/github.com/turt2live/matrix-media-repo/services/media_service/media_service.go
+++ b/src/github.com/turt2live/matrix-media-repo/services/media_service/media_service.go
@@ -9,12 +9,12 @@ import (
 
 	"github.com/ryanuber/go-glob"
 	"github.com/sirupsen/logrus"
+	"github.com/turt2live/matrix-media-repo/common"
 	"github.com/turt2live/matrix-media-repo/config"
 	"github.com/turt2live/matrix-media-repo/storage"
 	"github.com/turt2live/matrix-media-repo/storage/stores"
 	"github.com/turt2live/matrix-media-repo/types"
 	"github.com/turt2live/matrix-media-repo/util"
-	"github.com/turt2live/matrix-media-repo/util/errs"
 )
 
 type mediaService struct {
@@ -166,7 +166,7 @@ func (s *mediaService) StoreMedia(contents io.Reader, contentType string, filena
 	}
 
 	// Check to make sure the file is allowed
-	fileMime, err := util.GetContentType(fileLocation)
+	fileMime, err := util.GetMimeType(fileLocation)
 	if err != nil {
 		s.log.Error("Error while checking content type of file: " + err.Error())
 		os.Remove(fileLocation) // attempt cleanup
@@ -178,7 +178,7 @@ func (s *mediaService) StoreMedia(contents io.Reader, contentType string, filena
 			s.log.Warn("Content type " + fileMime + " (reported as " + contentType + ") is not allowed to be uploaded")
 
 			os.Remove(fileLocation) // attempt cleanup
-			return nil, errs.ErrMediaNotAllowed
+			return nil, common.ErrMediaNotAllowed
 		}
 	}
 
diff --git a/src/github.com/turt2live/matrix-media-repo/services/media_service/remote_media_downloader.go b/src/github.com/turt2live/matrix-media-repo/services/media_service/remote_media_downloader.go
index 42e424b9f018562a310b7e0cc420a7450500af05..bf9dd63d2afe1b3bebf7d6900cbd052057a2ab31 100644
--- a/src/github.com/turt2live/matrix-media-repo/services/media_service/remote_media_downloader.go
+++ b/src/github.com/turt2live/matrix-media-repo/services/media_service/remote_media_downloader.go
@@ -11,9 +11,9 @@ import (
 
 	"github.com/patrickmn/go-cache"
 	"github.com/sirupsen/logrus"
+	"github.com/turt2live/matrix-media-repo/common"
 	"github.com/turt2live/matrix-media-repo/config"
 	"github.com/turt2live/matrix-media-repo/matrix"
-	"github.com/turt2live/matrix-media-repo/util/errs"
 )
 
 type downloadedMedia struct {
@@ -65,7 +65,7 @@ func (r *remoteMediaDownloader) Download(server string, mediaId string) (*downlo
 	if resp.StatusCode == 404 {
 		r.log.Info("Remote media not found")
 
-		err = errs.ErrMediaNotFound
+		err = common.ErrMediaNotFound
 		downloadErrorsCache.Set(cacheKey, err, cache.DefaultExpiration)
 		return nil, err
 	} else if resp.StatusCode != 200 {
@@ -89,7 +89,7 @@ func (r *remoteMediaDownloader) Download(server string, mediaId string) (*downlo
 	if contentLength > 0 && config.Get().Downloads.MaxSizeBytes > 0 && contentLength > config.Get().Downloads.MaxSizeBytes {
 		r.log.Warn("Attempted to download media that was too large")
 
-		err = errs.ErrMediaTooLarge
+		err = common.ErrMediaTooLarge
 		downloadErrorsCache.Set(cacheKey, err, cache.DefaultExpiration)
 		return nil, err
 	}
@@ -97,7 +97,7 @@ func (r *remoteMediaDownloader) Download(server string, mediaId string) (*downlo
 	request := &downloadedMedia{
 		ContentType: resp.Header.Get("Content-Type"),
 		Contents:    resp.Body,
-		//DesiredFilename (calculated below)
+		// DesiredFilename (calculated below)
 	}
 
 	_, params, err := mime.ParseMediaType(resp.Header.Get("Content-Disposition"))
diff --git a/src/github.com/turt2live/matrix-media-repo/services/thumbnail_service/thumbnail_service.go b/src/github.com/turt2live/matrix-media-repo/services/thumbnail_service/thumbnail_service.go
index 779c9124073501a7b38cff57370b43919599e78d..201a0bea9e9df209fb86a799b5347ba37edddd8a 100644
--- a/src/github.com/turt2live/matrix-media-repo/services/thumbnail_service/thumbnail_service.go
+++ b/src/github.com/turt2live/matrix-media-repo/services/thumbnail_service/thumbnail_service.go
@@ -12,12 +12,12 @@ import (
 	"github.com/fogleman/gg"
 	"github.com/golang/freetype/truetype"
 	"github.com/sirupsen/logrus"
+	"github.com/turt2live/matrix-media-repo/common"
 	"github.com/turt2live/matrix-media-repo/config"
 	"github.com/turt2live/matrix-media-repo/storage"
 	"github.com/turt2live/matrix-media-repo/storage/stores"
 	"github.com/turt2live/matrix-media-repo/types"
 	"github.com/turt2live/matrix-media-repo/util"
-	"github.com/turt2live/matrix-media-repo/util/errs"
 	"golang.org/x/image/font/gofont/gosmallcaps"
 )
 
@@ -66,7 +66,7 @@ func (s *thumbnailService) GenerateThumbnail(media *types.Media, width int, heig
 
 	if media.SizeBytes > config.Get().Thumbnails.MaxSourceBytes {
 		s.log.Warn("Media too large to thumbnail")
-		return nil, errs.ErrMediaTooLarge
+		return nil, common.ErrMediaTooLarge
 	}
 
 	s.log.Info("Generating new thumbnail")
diff --git a/src/github.com/turt2live/matrix-media-repo/services/url_service/file_previewer.go b/src/github.com/turt2live/matrix-media-repo/services/url_service/file_previewer.go
index 799c368bac6383745111394113ce8ad4c8be71ad..3871fb608b6d5c90cb3d37217bf1f49a5aa386f3 100644
--- a/src/github.com/turt2live/matrix-media-repo/services/url_service/file_previewer.go
+++ b/src/github.com/turt2live/matrix-media-repo/services/url_service/file_previewer.go
@@ -12,9 +12,9 @@ import (
 
 	"github.com/ryanuber/go-glob"
 	"github.com/sirupsen/logrus"
+	"github.com/turt2live/matrix-media-repo/common"
 	"github.com/turt2live/matrix-media-repo/config"
 	"github.com/turt2live/matrix-media-repo/util"
-	"github.com/turt2live/matrix-media-repo/util/errs"
 )
 
 type filePreviewer struct {
@@ -37,7 +37,7 @@ func (p *filePreviewer) GeneratePreview(urlStr string) (previewResult, error) {
 		}
 
 		// We'll consider it not found for the sake of processing
-		return previewResult{}, errs.ErrMediaNotFound
+		return previewResult{}, common.ErrMediaNotFound
 	}
 
 	description := ""
@@ -80,7 +80,7 @@ func downloadFileContent(urlStr string, log *logrus.Entry) (*previewImage, error
 	}
 
 	if config.Get().UrlPreviews.MaxPageSizeBytes > 0 && resp.ContentLength >= 0 && resp.ContentLength > config.Get().UrlPreviews.MaxPageSizeBytes {
-		return nil, errs.ErrMediaTooLarge
+		return nil, common.ErrMediaTooLarge
 	}
 
 	var reader io.Reader
diff --git a/src/github.com/turt2live/matrix-media-repo/services/url_service/opengraph_previewer.go b/src/github.com/turt2live/matrix-media-repo/services/url_service/opengraph_previewer.go
index 1e034c57a3f821479fe08868cedd28ee81051cf5..02120c5aa55f4219b8a4c9b983f6fcc3655f00dd 100644
--- a/src/github.com/turt2live/matrix-media-repo/services/url_service/opengraph_previewer.go
+++ b/src/github.com/turt2live/matrix-media-repo/services/url_service/opengraph_previewer.go
@@ -15,8 +15,8 @@ import (
 	"github.com/dyatlov/go-opengraph/opengraph"
 	"github.com/ryanuber/go-glob"
 	"github.com/sirupsen/logrus"
+	"github.com/turt2live/matrix-media-repo/common"
 	"github.com/turt2live/matrix-media-repo/config"
-	"github.com/turt2live/matrix-media-repo/util/errs"
 )
 
 var ogSupportedTypes = []string{"text/*"}
@@ -41,7 +41,7 @@ func (p *openGraphUrlPreviewer) GeneratePreview(urlStr string) (previewResult, e
 		}
 
 		// We'll consider it not found for the sake of processing
-		return previewResult{}, errs.ErrMediaNotFound
+		return previewResult{}, common.ErrMediaNotFound
 	}
 
 	og := opengraph.NewOpenGraph()
@@ -111,7 +111,7 @@ func downloadHtmlContent(urlStr string, log *logrus.Entry) (string, error) {
 	}
 
 	if config.Get().UrlPreviews.MaxPageSizeBytes > 0 && resp.ContentLength >= 0 && resp.ContentLength > config.Get().UrlPreviews.MaxPageSizeBytes {
-		return "", errs.ErrMediaTooLarge
+		return "", common.ErrMediaTooLarge
 	}
 
 	var reader io.Reader
diff --git a/src/github.com/turt2live/matrix-media-repo/services/url_service/resource_handler.go b/src/github.com/turt2live/matrix-media-repo/services/url_service/resource_handler.go
index a28e62875c2027cf8bb16c102067c9bc6891ed04..a7eae80b4772cfa82cc58f83120964f63993bbd5 100644
--- a/src/github.com/turt2live/matrix-media-repo/services/url_service/resource_handler.go
+++ b/src/github.com/turt2live/matrix-media-repo/services/url_service/resource_handler.go
@@ -7,12 +7,12 @@ import (
 
 	"github.com/disintegration/imaging"
 	"github.com/sirupsen/logrus"
+	"github.com/turt2live/matrix-media-repo/common"
 	"github.com/turt2live/matrix-media-repo/config"
 	"github.com/turt2live/matrix-media-repo/resource_handler"
 	"github.com/turt2live/matrix-media-repo/services/media_service"
 	"github.com/turt2live/matrix-media-repo/types"
 	"github.com/turt2live/matrix-media-repo/util"
-	"github.com/turt2live/matrix-media-repo/util/errs"
 )
 
 type urlResourceHandler struct {
@@ -72,13 +72,13 @@ func urlPreviewWorkFn(request *resource_handler.WorkRequest) interface{} {
 	if err != nil {
 		// Transparently convert "unsupported" to "not found" for processing
 		if err == ErrPreviewUnsupported {
-			err = errs.ErrMediaNotFound
+			err = common.ErrMediaNotFound
 		}
 
-		if err == errs.ErrMediaNotFound {
-			svc.store.InsertPreviewError(info.urlStr, errs.ErrCodeNotFound)
+		if err == common.ErrMediaNotFound {
+			svc.store.InsertPreviewError(info.urlStr, common.ErrCodeNotFound)
 		} else {
-			svc.store.InsertPreviewError(info.urlStr, errs.ErrCodeUnknown)
+			svc.store.InsertPreviewError(info.urlStr, common.ErrCodeUnknown)
 		}
 		return &urlPreviewResponse{err: err}
 	}
diff --git a/src/github.com/turt2live/matrix-media-repo/services/url_service/url_service.go b/src/github.com/turt2live/matrix-media-repo/services/url_service/url_service.go
index 6588e8633da361ec966dbe3ec6cdf5b5499adb14..a5207885a75825f1ebc01849e1f16351f0bfa204 100644
--- a/src/github.com/turt2live/matrix-media-repo/services/url_service/url_service.go
+++ b/src/github.com/turt2live/matrix-media-repo/services/url_service/url_service.go
@@ -9,12 +9,12 @@ import (
 
 	"github.com/pkg/errors"
 	"github.com/sirupsen/logrus"
+	"github.com/turt2live/matrix-media-repo/common"
 	"github.com/turt2live/matrix-media-repo/config"
 	"github.com/turt2live/matrix-media-repo/storage"
 	"github.com/turt2live/matrix-media-repo/storage/stores"
 	"github.com/turt2live/matrix-media-repo/types"
 	"github.com/turt2live/matrix-media-repo/util"
-	"github.com/turt2live/matrix-media-repo/util/errs"
 )
 
 type urlService struct {
@@ -29,15 +29,15 @@ func New(ctx context.Context, log *logrus.Entry) (*urlService) {
 }
 
 func returnCachedPreview(cached *types.CachedUrlPreview) (*types.UrlPreview, error) {
-	if cached.ErrorCode == errs.ErrCodeInvalidHost {
-		return nil, errs.ErrInvalidHost
-	} else if cached.ErrorCode == errs.ErrCodeHostNotFound {
-		return nil, errs.ErrHostNotFound
-	} else if cached.ErrorCode == errs.ErrCodeHostBlacklisted {
-		return nil, errs.ErrHostBlacklisted
-	} else if cached.ErrorCode == errs.ErrCodeNotFound {
-		return nil, errs.ErrMediaNotFound
-	} else if cached.ErrorCode == errs.ErrCodeUnknown {
+	if cached.ErrorCode == common.ErrCodeInvalidHost {
+		return nil, common.ErrInvalidHost
+	} else if cached.ErrorCode == common.ErrCodeHostNotFound {
+		return nil, common.ErrHostNotFound
+	} else if cached.ErrorCode == common.ErrCodeHostBlacklisted {
+		return nil, common.ErrHostBlacklisted
+	} else if cached.ErrorCode == common.ErrCodeNotFound {
+		return nil, common.ErrMediaNotFound
+	} else if cached.ErrorCode == common.ErrCodeUnknown {
 		return nil, errors.New("unknown error")
 	}
 
@@ -70,19 +70,19 @@ func (s *urlService) GetPreview(urlStr string, onHost string, forUserId string,
 	parsedUrl, err := url.ParseRequestURI(urlStr)
 	if err != nil {
 		s.log.Error("Error parsing url: " + err.Error())
-		s.store.InsertPreviewError(urlStr, errs.ErrCodeInvalidHost)
-		return nil, errs.ErrInvalidHost
+		s.store.InsertPreviewError(urlStr, common.ErrCodeInvalidHost)
+		return nil, common.ErrInvalidHost
 	}
 
 	addrs, err := net.LookupIP(parsedUrl.Host)
 	if err != nil {
 		s.log.Error("Error getting host info: " + err.Error())
-		s.store.InsertPreviewError(urlStr, errs.ErrCodeInvalidHost)
-		return nil, errs.ErrInvalidHost
+		s.store.InsertPreviewError(urlStr, common.ErrCodeInvalidHost)
+		return nil, common.ErrInvalidHost
 	}
 	if len(addrs) == 0 {
-		s.store.InsertPreviewError(urlStr, errs.ErrCodeHostNotFound)
-		return nil, errs.ErrHostNotFound
+		s.store.InsertPreviewError(urlStr, common.ErrCodeHostNotFound)
+		return nil, common.ErrHostNotFound
 	}
 	addr := addrs[0]
 	addrStr := fmt.Sprintf("%v", addr)[1:]
@@ -98,8 +98,8 @@ func (s *urlService) GetPreview(urlStr string, onHost string, forUserId string,
 		deniedCidrs = []string{}
 	}
 	if !isAllowed(addr, allowedCidrs, deniedCidrs, s.log) {
-		s.store.InsertPreviewError(urlStr, errs.ErrCodeHostBlacklisted)
-		return nil, errs.ErrHostBlacklisted
+		s.store.InsertPreviewError(urlStr, common.ErrCodeHostBlacklisted)
+		return nil, common.ErrHostBlacklisted
 	}
 
 	result := <-getResourceHandler().GeneratePreview(urlStr, forUserId, onHost)