diff --git a/src/components/user_card_content/user_card_content.vue b/src/components/user_card_content/user_card_content.vue
index 0ee1d86f316f77bcf5072e9de9a42865fe668a3c..59cee734570d2cb1ee2ee47e8f8dd285e63a0a86 100644
--- a/src/components/user_card_content/user_card_content.vue
+++ b/src/components/user_card_content/user_card_content.vue
@@ -82,6 +82,7 @@
       toggleMute () {
         const store = this.$store
         store.commit('setMuted', {user: this.user, muted: !this.user.muted})
+        store.state.api.backendInteractor.setUserMute(this.user)
       }
     }
   }
diff --git a/src/main.js b/src/main.js
index fd03e5194fac21ce6695ff54c479cf48c34d8e50..4b367db9957c87af5048d387e4e2e3c4d59f0ab9 100644
--- a/src/main.js
+++ b/src/main.js
@@ -17,7 +17,7 @@ import configModule from './modules/config.js'
 
 import VueTimeago from 'vue-timeago'
 
-// import createPersistedState from 'vuex-persistedstate'
+import createPersistedState from 'vuex-persistedstate'
 
 Vue.use(Vuex)
 Vue.use(VueRouter)
@@ -28,9 +28,9 @@ Vue.use(VueTimeago, {
   }
 })
 
-// const persistedStateOptions = {
-//   paths: ['users.users', 'statuses.notifications']
-// }
+const persistedStateOptions = {
+  paths: ['users.users']
+}
 
 const store = new Vuex.Store({
   modules: {
@@ -39,7 +39,7 @@ const store = new Vuex.Store({
     api: apiModule,
     config: configModule
   },
-  // plugins: [createPersistedState(persistedStateOptions)],
+  plugins: [createPersistedState(persistedStateOptions)],
   strict: process.env.NODE_ENV !== 'production'
 })
 
diff --git a/src/modules/users.js b/src/modules/users.js
index ae90abbddf16b30778fa5de5a3f2d6f838576f0a..31731880d2f46b7b6c3733d3fa675fe9a7e2230e 100644
--- a/src/modules/users.js
+++ b/src/modules/users.js
@@ -82,6 +82,12 @@ const users = {
                 // Start getting fresh tweets.
                 store.dispatch('startFetching', 'friends')
 
+                // Get user mutes and follower info
+                store.rootState.api.backendInteractor.fetchMutes().then((mutedUsers) => {
+                  each(mutedUsers, (user) => { user.muted = true })
+                  store.commit('addNewUsers', mutedUsers)
+                })
+
                 // Fetch our friends
                 store.rootState.api.backendInteractor.fetchFriends()
                   .then((friends) => commit('addNewUsers', friends))
diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js
index de89f50338660f0b36c2bc2f040432c28992f592..f172f769820a359b5fd5ba6e1236fc937ac5d5a8 100644
--- a/src/services/api/api.service.js
+++ b/src/services/api/api.service.js
@@ -16,6 +16,7 @@ const MENTIONS_URL = '/api/statuses/mentions.json'
 const FRIENDS_URL = '/api/statuses/friends.json'
 const FOLLOWING_URL = '/api/friendships/create.json'
 const UNFOLLOWING_URL = '/api/friendships/destroy.json'
+const QVITTER_USER_PREF_URL = '/api/qvitter/set_profile_pref.json'
 // const USER_URL = '/api/users/show.json'
 
 const oldfetch = window.fetch
@@ -58,7 +59,7 @@ const fetchFriends = ({credentials}) => {
 const fetchAllFollowing = ({username, credentials}) => {
   const url = `${ALL_FOLLOWING_URL}/${username}.json`
   return fetch(url, { headers: authHeaders(credentials) })
-    .then((data) => data.json().users)
+    .then((data) => data.json())
 }
 
 const fetchMentions = ({username, sinceId = 0, credentials}) => {
@@ -79,6 +80,22 @@ const fetchStatus = ({id, credentials}) => {
     .then((data) => data.json())
 }
 
+const setUserMute = ({id, credentials, muted = true}) => {
+  const form = new FormData()
+
+  const muteInteger = muted ? 1 : 0
+
+  form.append('namespace', 'qvitter')
+  form.append('data', muteInteger)
+  form.append('topic', `mute:${id}`)
+
+  return fetch(QVITTER_USER_PREF_URL, {
+    method: 'POST',
+    headers: authHeaders(credentials),
+    body: form
+  })
+}
+
 const fetchTimeline = ({timeline, credentials, since = false, until = false}) => {
   const timelineUrls = {
     public: PUBLIC_TIMELINE_URL,
@@ -162,6 +179,14 @@ const uploadMedia = ({formData, credentials}) => {
     .then((text) => (new DOMParser()).parseFromString(text, 'application/xml'))
 }
 
+const fetchMutes = ({credentials}) => {
+  const url = '/api/qvitter/mutes.json'
+
+  return fetch(url, {
+    headers: authHeaders(credentials)
+  }).then((data) => data.json())
+}
+
 const apiService = {
   verifyCredentials,
   fetchTimeline,
@@ -177,7 +202,9 @@ const apiService = {
   postStatus,
   deleteStatus,
   uploadMedia,
-  fetchAllFollowing
+  fetchAllFollowing,
+  setUserMute,
+  fetchMutes
 }
 
 export default apiService
diff --git a/src/services/backend_interactor_service/backend_interactor_service.js b/src/services/backend_interactor_service/backend_interactor_service.js
index d335bfb7203ec96ded60f94f443ab785f07ca8ba..d379e602308f19127cfe2200789caa99dff501ec 100644
--- a/src/services/backend_interactor_service/backend_interactor_service.js
+++ b/src/services/backend_interactor_service/backend_interactor_service.js
@@ -34,6 +34,12 @@ const backendInteractorService = (credentials) => {
     return timelineFetcherService.startFetching({timeline, store, credentials})
   }
 
+  const setUserMute = ({id, muted = true}) => {
+    return apiService.setUserMute({id, muted, credentials})
+  }
+
+  const fetchMutes = () => apiService.fetchMutes({credentials})
+
   const backendInteractorServiceInstance = {
     fetchStatus,
     fetchConversation,
@@ -43,7 +49,9 @@ const backendInteractorService = (credentials) => {
     unfollowUser,
     fetchAllFollowing,
     verifyCredentials: apiService.verifyCredentials,
-    startFetching
+    startFetching,
+    setUserMute,
+    fetchMutes
   }
 
   return backendInteractorServiceInstance