diff --git a/CHANGELOG b/CHANGELOG
index c02e7665e1fe5de08762c1cc24ad77dad397b045..1b98df96e32ad596bff153a67d670a4eefa27f78 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -5,6 +5,17 @@ Changelog
 ----------------
 
 
+0.5.2 (2018-02-26)
+------------------
+
+- Fixed broken file import due to wrong url (#73)
+- More accurate mimetype detection
+- Fixed really small size on small screens
+- Added masonry layout for artists, requests and radios (#68)
+- We now have a favicon!
+- Fixed truncated play icon (#65)
+
+
 0.5.1 (2018-02-24)
 ------------------
 
diff --git a/api/funkwhale_api/__init__.py b/api/funkwhale_api/__init__.py
index d3e404f122db7601939f9f3cea1ce64a6cc60383..2df7e2034219375fac6f0dffd0865f54d6c4f589 100644
--- a/api/funkwhale_api/__init__.py
+++ b/api/funkwhale_api/__init__.py
@@ -1,3 +1,3 @@
 # -*- coding: utf-8 -*-
-__version__ = '0.5.1'
+__version__ = '0.5.2'
 __version_info__ = tuple([int(num) if num.isdigit() else num for num in __version__.replace('-', '.', 1).split('.')])
diff --git a/api/funkwhale_api/music/utils.py b/api/funkwhale_api/music/utils.py
index a75cf5de8508efaa5df587eb17b01a2e87f1214f..df659cb8057b3c519610ff0a70f2524b973d220f 100644
--- a/api/funkwhale_api/music/utils.py
+++ b/api/funkwhale_api/music/utils.py
@@ -1,4 +1,5 @@
 import magic
+import mimetypes
 import re
 
 from django.db.models import Q
@@ -42,7 +43,13 @@ def get_query(query_string, search_fields):
 
 def guess_mimetype(f):
     b = min(100000, f.size)
-    return magic.from_buffer(f.read(b), mime=True)
+    t = magic.from_buffer(f.read(b), mime=True)
+    if t == 'application/octet-stream':
+        # failure, we try guessing by extension
+        mt, _ = mimetypes.guess_type(f.path)
+        if mt:
+            t = mt
+    return t
 
 
 def compute_status(jobs):
diff --git a/api/tests/music/test_utils.py b/api/tests/music/test_utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..0a4f4b99424c34557fb846866b6e1b2958244a88
--- /dev/null
+++ b/api/tests/music/test_utils.py
@@ -0,0 +1,19 @@
+from funkwhale_api.music import utils
+
+
+def test_guess_mimetype_try_using_extension(factories, mocker):
+    mocker.patch(
+        'magic.from_buffer', return_value='audio/mpeg')
+    f = factories['music.TrackFile'].build(
+        audio_file__filename='test.ogg')
+
+    assert utils.guess_mimetype(f.audio_file) == 'audio/mpeg'
+
+
+def test_guess_mimetype_try_using_extension_if_fail(factories, mocker):
+    mocker.patch(
+        'magic.from_buffer', return_value='application/octet-stream')
+    f = factories['music.TrackFile'].build(
+        audio_file__filename='test.mp3')
+
+    assert utils.guess_mimetype(f.audio_file) == 'audio/mpeg'
diff --git a/front/index.html b/front/index.html
index 55e32a7ee20612128e338e3b58096b4f13e90408..da815d61914ac3753686b60147c5f673ba846a78 100644
--- a/front/index.html
+++ b/front/index.html
@@ -3,6 +3,8 @@
   <head>
     <meta charset="utf-8">
     <title>Funkwhale</title>
+    <link rel="shortcut icon" type="image/png" href="/static/favicon.png"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1">
   </head>
   <body>
     <div id="app"></div>
diff --git a/front/package.json b/front/package.json
index 042e332d0eb91d81df9c27fe13b82b0e16013d3a..d6bdb8c56caaeb8da80213800537ed255b5c960a 100644
--- a/front/package.json
+++ b/front/package.json
@@ -20,6 +20,7 @@
     "js-logger": "^1.3.0",
     "jwt-decode": "^2.2.0",
     "lodash": "^4.17.4",
+    "masonry-layout": "^4.2.1",
     "moment": "^2.20.1",
     "moxios": "^0.4.0",
     "raven-js": "^3.22.3",
@@ -27,6 +28,7 @@
     "showdown": "^1.8.6",
     "vue": "^2.3.3",
     "vue-lazyload": "^1.1.4",
+    "vue-masonry": "^0.10.16",
     "vue-router": "^2.3.1",
     "vue-upload-component": "^2.7.4",
     "vuedraggable": "^2.14.1",
diff --git a/front/src/App.vue b/front/src/App.vue
index 8453aa33941813d6c451fa2184d05e7f9c669486..3e39d7262ccec891711e7d6a16c8454a53559aaa 100644
--- a/front/src/App.vue
+++ b/front/src/App.vue
@@ -59,7 +59,7 @@ export default {
 
 html, body {
   @include media("<desktop") {
-    font-size: 200%;
+    font-size: 90%;
   }
 }
 #app {
diff --git a/front/src/components/audio/album/Card.vue b/front/src/components/audio/album/Card.vue
index 968b828a49df356baf3ab104edc6e7fa5c811bc5..ea42f06a8392871cca63b6d5fbe62d5f26d75455 100644
--- a/front/src/components/audio/album/Card.vue
+++ b/front/src/components/audio/album/Card.vue
@@ -17,7 +17,7 @@
           <table class="ui very basic fixed single line compact unstackable table">
             <tbody>
               <tr v-for="track in tracks">
-                <td>
+                <td class="play-cell">
                   <play-button class="basic icon" :track="track" :discrete="true"></play-button>
                 </td>
                 <td colspan="6">
@@ -67,7 +67,7 @@ export default {
   data () {
     return {
       backend: backend,
-      initialTracks: 4,
+      initialTracks: 5,
       showAllTracks: false
     }
   },
@@ -85,6 +85,9 @@ export default {
 <!-- Add "scoped" attribute to limit CSS to this component only -->
 <style scoped lang="scss">
 
+table.fixed td.play-cell {
+  overflow: auto;
+}
 tr {
   .favorite-icon:not(.favorited) {
     display: none;
diff --git a/front/src/components/audio/artist/Card.vue b/front/src/components/audio/artist/Card.vue
index 9a82d6c8f315e09ab6d6ce2fb08c491ec31183e9..a5111434546e43c233d717616aa4363c7e6a36f3 100644
--- a/front/src/components/audio/artist/Card.vue
+++ b/front/src/components/audio/artist/Card.vue
@@ -54,8 +54,8 @@ export default {
   data () {
     return {
       backend: backend,
-      initialAlbums: 3,
-      showAllAlbums: false
+      initialAlbums: 30,
+      showAllAlbums: true
     }
   },
   computed: {
diff --git a/front/src/components/library/Artist.vue b/front/src/components/library/Artist.vue
index c2834e1de87b11fd3fdd2f9e4e8a65c5c1045e75..7724428cac36ced03671c461dd76bea3acdd6364 100644
--- a/front/src/components/library/Artist.vue
+++ b/front/src/components/library/Artist.vue
@@ -30,7 +30,7 @@
       </div>
       <div class="ui vertical stripe segment">
         <h2>Albums by this artist</h2>
-        <div class="ui stackable three column grid">
+        <div class="ui stackable doubling three column grid">
           <div class="column" :key="album.id" v-for="album in albums">
             <album-card :mode="'rich'" class="fluid" :album="album"></album-card>
           </div>
diff --git a/front/src/components/library/Artists.vue b/front/src/components/library/Artists.vue
index c9bea5efc0c4667f9c625a62bf12f9b820c1dbf5..3cf123447128d8198853036ab1be5c0b52ebbc0a 100644
--- a/front/src/components/library/Artists.vue
+++ b/front/src/components/library/Artists.vue
@@ -34,8 +34,16 @@
         </div>
       </div>
       <div class="ui hidden divider"></div>
-      <div v-if="result" class="ui stackable three column grid">
+      <div
+        v-if="result"
+        v-masonry
+        transition-duration="0"
+        item-selector=".column"
+        percent-position="true"
+        stagger="0"
+        class="ui stackable three column doubling grid">
         <div
+          v-masonry-tile
           v-if="result.results.length > 0"
           v-for="artist in result.results"
           :key="artist.id"
diff --git a/front/src/components/library/Radios.vue b/front/src/components/library/Radios.vue
index 1952908ff8a5a56a6731c4ca3b6c74803beca8d5..303ce100ecf35ec46be8d6909b03398dbe125826 100644
--- a/front/src/components/library/Radios.vue
+++ b/front/src/components/library/Radios.vue
@@ -36,8 +36,16 @@
         </div>
       </div>
       <div class="ui hidden divider"></div>
-      <div v-if="result" class="ui stackable three column grid">
+      <div
+        v-if="result"
+        v-masonry
+        transition-duration="0"
+        item-selector=".column"
+        percent-position="true"
+        stagger="0"
+        class="ui stackable three column doubling grid">
         <div
+          v-masonry-tile
           v-if="result.results.length > 0"
           v-for="radio in result.results"
           :key="radio.id"
diff --git a/front/src/components/library/import/FileUpload.vue b/front/src/components/library/import/FileUpload.vue
index 35b7b636ad79200d36e68c9b53a0fff8918edd3d..1b90adc9d71b2d0425603d0cbb9f98de0b51a905 100644
--- a/front/src/components/library/import/FileUpload.vue
+++ b/front/src/components/library/import/FileUpload.vue
@@ -29,7 +29,7 @@
       </button>
     </div>
     <div class="ui hidden divider"></div>
-    <p>
+    <p v-if="batch">
       Once all your files are uploaded, simply head over  <router-link :to="{name: 'library.import.batches.detail', params: {id: batch.id }}">import detail page</router-link> to check the import status.
     </p>
     <table class="ui single line table">
@@ -73,7 +73,7 @@ export default {
   data () {
     return {
       files: [],
-      uploadUrl: 'import-jobs/',
+      uploadUrl: '/api/v1/import-jobs/',
       batch: null
     }
   },
diff --git a/front/src/components/requests/Card.vue b/front/src/components/requests/Card.vue
index deb9c3fe093a58cc6913805ad4fcbe9bed4da58d..17fecde5294a1e26d78467d8efc780b1b023b19f 100644
--- a/front/src/components/requests/Card.vue
+++ b/front/src/components/requests/Card.vue
@@ -5,10 +5,10 @@
       <div class="description">
         <div
           v-if="request.albums" v-html="$options.filters.markdown(request.albums)"></div>
-        <div v-if="request.comment" class="ui comments">
+        <div class="ui comments">
           <comment
             :user="request.user"
-            :content="request.comment"
+            :content="request.comment || ''"
             :date="request.creation_date"></comment>
         </div>
       </div>
@@ -24,7 +24,7 @@
         @click="createImport"
         v-if="request.status === 'pending' && importAction && $store.state.auth.availablePermissions['import.launch']"
         class="ui mini basic green right floated button">Create import</button>
-      
+
     </div>
   </div>
 </template>
diff --git a/front/src/components/requests/RequestsList.vue b/front/src/components/requests/RequestsList.vue
index cb3e9af00bc40d0301b23dcb446576a567e7f153..33ba04f53c61a47e59fcd991185d3961ad12e693 100644
--- a/front/src/components/requests/RequestsList.vue
+++ b/front/src/components/requests/RequestsList.vue
@@ -34,8 +34,16 @@
         </div>
       </div>
       <div class="ui hidden divider"></div>
-      <div v-if="result" class="ui stackable three column grid">
+      <div
+        v-if="result"
+        v-masonry
+        transition-duration="0"
+        item-selector=".column"
+        percent-position="true"
+        stagger="0"
+        class="ui stackable three column doubling grid">
         <div
+          v-masonry-tile
           v-if="result.results.length > 0"
           v-for="request in result.results"
           :key="request.id"
diff --git a/front/src/main.js b/front/src/main.js
index 2e351310a15e218d1e9438c12d7c8e8ba1b37426..caf924188086270a8d0e598c9a5307d3fa57c1e2 100644
--- a/front/src/main.js
+++ b/front/src/main.js
@@ -9,6 +9,7 @@ import Vue from 'vue'
 import App from './App'
 import router from './router'
 import axios from 'axios'
+import {VueMasonryPlugin} from 'vue-masonry'
 import VueLazyload from 'vue-lazyload'
 import store from './store'
 import config from './config'
@@ -24,7 +25,9 @@ window.$ = window.jQuery = require('jquery')
 // play really nice with webpack and I want to get rid of Google Fonts
 // require('./semantic/semantic.css')
 require('semantic-ui-css/semantic.js')
+require('masonry-layout')
 
+Vue.use(VueMasonryPlugin)
 Vue.use(VueLazyload)
 Vue.config.productionTip = false
 
diff --git a/front/static/favicon.png b/front/static/favicon.png
new file mode 100644
index 0000000000000000000000000000000000000000..089442fab7cb4e68cec9de87d421b64495e3263a
Binary files /dev/null and b/front/static/favicon.png differ