diff --git a/js/components/FolderContent.vue b/js/components/FolderContent.vue
index 34ed53bdfde5e86f9b5f279dae76ded7a47e6d97..b51827012ca9f4856364aea862ec483ad2836f67 100644
--- a/js/components/FolderContent.vue
+++ b/js/components/FolderContent.vue
@@ -1,19 +1,41 @@
 <template>
 	<div id="app-content">
 		<div id="app-content-wrapper">
-			<MessageList/>
-			<slot/>
+			<Loading v-if="loading"
+					 :hint="t('mail', 'Loading messages')"/>
+			<template v-else>
+				<MessageList/>
+				<NewMessageDetail v-if="newMessage"/>
+				<Message v-else/>
+			</template>
 		</div>
 	</div>
 </template>
 
 <script>
+	import Message from "./Message";
 	import MessageList from "./MessageList";
+	import NewMessageDetail from "./NewMessageDetail";
+	import Loading from "./Loading";
 
 	export default {
 		name: "FolderContent",
 		components: {
+			Loading,
+			NewMessageDetail,
+			Message,
 			MessageList
+		},
+		data () {
+			return {
+				loading: true,
+				newMessage: true,
+			}
+		},
+		created () {
+			this.$store.dispatch('fetchAccounts').then(() => {
+				this.loading = false;
+			});
 		}
 	}
 </script>
diff --git a/js/components/Loading.vue b/js/components/Loading.vue
new file mode 100644
index 0000000000000000000000000000000000000000..82f1a8a7f0bb540e961a187e6efc1fe1a5559e0f
--- /dev/null
+++ b/js/components/Loading.vue
@@ -0,0 +1,20 @@
+<template>
+	<div v-if="hint" class="emptycontent">
+		<a class="icon-loading"></a>
+		<h2>{{ hint }}</h2>
+	</div>
+	<div v-else class="container icon-loading"></div>
+</template>
+
+<script>
+	export default {
+		name: "Loading",
+		props: {
+			hint: String
+		}
+	}
+</script>
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/js/router.js b/js/router.js
index acc7d36e69bd23d51731dad6d537c473a7d700b9..19075ce9ce43bc792d92668178a888539df01be2 100644
--- a/js/router.js
+++ b/js/router.js
@@ -3,7 +3,6 @@ import Router from 'vue-router'
 
 import AccountSettings from './views/AccountSettings';
 import Home from './views/Home'
-import NewMessage from './views/NewMessage';
 import Setup from './views/Setup';
 
 Vue.use(Router)
@@ -17,11 +16,6 @@ export default new Router({
 			name: 'home',
 			component: Home
 		},
-		{
-			path: '/new',
-			name: 'newMessage',
-			component: NewMessage
-		},
 		{
 			path: '/accounts/:accountId/folders/:folderId',
 			name: 'folder',
diff --git a/js/service/AccountService.js b/js/service/AccountService.js
new file mode 100644
index 0000000000000000000000000000000000000000..e9c7a26ad65ea9fc3dcc109e6a8073a1475058c2
--- /dev/null
+++ b/js/service/AccountService.js
@@ -0,0 +1,25 @@
+export function fetchAll () {
+	return new Promise((res, rej) => {
+		setTimeout(() => {
+			res([
+				{
+					id: 1,
+					folders: [],
+				}, {
+					id: 2,
+					folders: [],
+				}
+			])
+		}, 1500);
+	})
+}
+
+export function fetch () {
+	return new Promise((res, rej) => {
+		setTimeout(() => {
+			res({
+				id: 3,
+			})
+		}, 1500);
+	})
+}
diff --git a/js/store.js b/js/store.js
index 0dacfd587dff2a327e5359bd012aff20ce7c197a..d8739f64a66756a211963f8f5ac701e7bd2e4e84 100644
--- a/js/store.js
+++ b/js/store.js
@@ -1,94 +1,68 @@
 import Vue from 'vue'
 import Vuex from 'vuex'
 
+import {
+	fetch as fetchAccount,
+	fetchAll as fetchAllAccounts
+} from './service/AccountService'
+
 Vue.use(Vuex)
 
+export const mutations = {
+	addAccount (state, account) {
+		Vue.set(state.accounts, account.id, account)
+	}
+}
+
+export const actions = {
+	fetchAccounts ({commit}) {
+		return fetchAllAccounts().then(accounts => accounts.map(account => commit('addAccount', account)))
+	},
+	fetchAccount ({commit}, id) {
+		return fetchAccount(id).then(account => commit('addAccount', account))
+	}
+}
+
 export default new Vuex.Store({
+	strict: process.env.NODE_ENV !== 'production',
 	state: {
-		accounts: [
-			{
-				id: -1,
-				name: 'email1@domain.com',
-				visible: false,
-				bullet: '#ee2629',
-				folders: [
-					{
-						id: -1,
-						name: 'All inboxes',
-						specialUse: 'inbox',
-						unread: 2,
-						messages: [
-							{
-								id: 123,
-								from: 'Steffen Lindner',
-								subject: 'Message 123',
-							},
-							{
-								id: 321,
-								from: 'Kevin Ndung\'u Gathuku',
-								subject: 'Message 321',
-							},
-						]
-					}
-				]
+		accounts: {},
+		folders: {
+			1: {
+				id: 'folder1',
+				name: 'Inbox',
+				specialUse: 'inbox',
+				unread: 2
 			},
-			{
-				id: 1,
-				name: 'email1@domain.com',
-				bullet: '#ee2629',
-				folders: [
-					{
-						id: 'folder1',
-						name: 'Inbox',
-						specialUse: 'inbox',
-						unread: 2
-					},
-					{
-						id: 'folder2',
-						name: 'Favorites',
-						specialUse: 'flagged',
-						unread: 2
-					},
-					{
-						id: 'folder3',
-						name: 'Drafts',
-						specialUse: 'drafts',
-						unread: 1
-					},
-					{
-						id: 'folder4',
-						name: 'Sent',
-						specialUse: 'sent',
-						unread: 2000
-					},
-					{
-						id: 'folder5',
-						name: 'Show all',
-					}
-				]
+			2: {
+				id: 'folder2',
+				name: 'Favorites',
+				specialUse: 'flagged',
+				unread: 2
 			},
-			{
-				id: 2,
-				name: 'email2@domain.com',
-				bullet: '#81ee53',
-				folders: [
-					{
-						id: 'folder2',
-						name: 'Inbox',
-						specialUse: 'inbox',
-						utils: {
-							counter: 0
-						}
-					}
-				]
+			3: {
+				id: 'folder3',
+				name: 'Drafts',
+				specialUse: 'drafts',
+				unread: 1
+			},
+			4: {
+				id: 'folder4',
+				name: 'Sent',
+				specialUse: 'sent',
+				unread: 2000
+			},
+			5: {
+				id: 'folder5',
+				name: 'Show all',
 			}
-		]
+		}
 	},
 	getters: {
 		currentFolder (state) {
-			return state.accounts[0].folders[0]
+			return []
 		}
 	},
-	mutations: {},
-	actions: {}
+	mutations,
+	actions
 })
diff --git a/js/views/Home.vue b/js/views/Home.vue
index 32756d3fb2f4d89f0f78abaae43a1e12ed264986..67fca12abcef5689d75b094e6b92f22677d5e7ca 100644
--- a/js/views/Home.vue
+++ b/js/views/Home.vue
@@ -1,11 +1,12 @@
 <template>
 	<div id="content" class="mail">
-		<app-navigation :menu="menu">
-			<AppSettingsMenu slot="settings-content"/>
-		</app-navigation>
-		<FolderContent>
-			<Message/>
-		</FolderContent>
+		<Loading v-if="loading" :hint="t('mail', 'Loading your accounts')"/>
+		<template v-else>
+			<app-navigation :menu="menu">
+				<AppSettingsMenu slot="settings-content"/>
+			</app-navigation>
+			<FolderContent />
+		</template>
 	</div>
 </template>
 
@@ -13,7 +14,7 @@
 	import AppNavigation from "../components/core/appNavigation";
 	import AppSettingsMenu from "../components/AppSettingsMenu";
 	import FolderContent from "../components/FolderContent";
-	import Message from "../components/Message";
+	import Loading from "../components/Loading";
 
 	import SidebarItems from "../mixins/SidebarItems";
 
@@ -21,15 +22,25 @@
 		name: 'home',
 		extends: SidebarItems,
 		components: {
+			Loading,
 			AppNavigation,
 			AppSettingsMenu,
 			FolderContent,
-			Message,
+		},
+		data () {
+			return {
+				loading: true
+			}
 		},
 		computed: {
 			menu () {
 				return this.buildMenu(this.$store.state.accounts);
 			}
+		},
+		created () {
+			this.$store.dispatch('fetchAccounts').then(() => {
+				this.loading = false;
+			});
 		}
 	};
 </script>
diff --git a/js/views/NewMessage.vue b/js/views/NewMessage.vue
deleted file mode 100644
index 00f788ab1e3a3b0b192dd86174d49ae934edf684..0000000000000000000000000000000000000000
--- a/js/views/NewMessage.vue
+++ /dev/null
@@ -1,35 +0,0 @@
-<template>
-	<div id="content" class="mail">
-		<app-navigation :menu="menu">
-			<AppSettingsMenu slot="settings-content"/>
-		</app-navigation>
-		<FolderContent>
-			<NewMessageDetail/>
-		</FolderContent>
-	</div>
-</template>
-
-<script>
-	import AppNavigation from "../components/core/appNavigation";
-	import AppSettingsMenu from "../components/AppSettingsMenu";
-	import FolderContent from "../components/FolderContent";
-
-	import SidebarItems from "../mixins/SidebarItems";
-	import NewMessageDetail from "../components/NewMessageDetail";
-
-	export default {
-		name: 'home',
-		extends: SidebarItems,
-		components: {
-			NewMessageDetail,
-			AppNavigation,
-			AppSettingsMenu,
-			FolderContent,
-		},
-		computed: {
-			menu () {
-				return this.buildMenu(this.$store.state.accounts);
-			}
-		}
-	};
-</script>
diff --git a/package-lock.json b/package-lock.json
index d34cc9bad609016e0043daedab72288c10b61926..2104525b2878b9f9b703ac18482d65ce23077352 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3080,7 +3080,7 @@
     },
     "browserify-aes": {
       "version": "1.2.0",
-      "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
+      "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
       "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
       "dev": true,
       "requires": {
@@ -3117,7 +3117,7 @@
     },
     "browserify-rsa": {
       "version": "4.0.1",
-      "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
+      "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
       "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
       "dev": true,
       "requires": {
@@ -3179,7 +3179,7 @@
     },
     "buffer": {
       "version": "4.9.1",
-      "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
+      "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
       "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
       "dev": true,
       "requires": {
@@ -3855,7 +3855,7 @@
     },
     "create-hash": {
       "version": "1.2.0",
-      "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
+      "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
       "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
       "dev": true,
       "requires": {
@@ -3868,7 +3868,7 @@
     },
     "create-hmac": {
       "version": "1.1.7",
-      "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
+      "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
       "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
       "dev": true,
       "requires": {
@@ -4694,7 +4694,7 @@
     },
     "diffie-hellman": {
       "version": "5.0.3",
-      "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
+      "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
       "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
       "dev": true,
       "requires": {
@@ -5508,7 +5508,6 @@
           "version": "2.2.4",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "safe-buffer": "^5.1.1",
             "yallist": "^3.0.0"
@@ -5527,7 +5526,6 @@
           "version": "0.5.1",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "minimist": "0.0.8"
           }
@@ -5707,8 +5705,7 @@
         "safe-buffer": {
           "version": "5.1.1",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "safer-buffer": {
           "version": "2.1.2",
@@ -5814,8 +5811,7 @@
         "yallist": {
           "version": "3.0.2",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         }
       }
     },
@@ -8559,7 +8555,7 @@
     },
     "parse-asn1": {
       "version": "5.1.1",
-      "resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz",
+      "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz",
       "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==",
       "dev": true,
       "requires": {
@@ -9347,7 +9343,7 @@
     },
     "public-encrypt": {
       "version": "4.0.2",
-      "resolved": "http://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz",
+      "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz",
       "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==",
       "dev": true,
       "requires": {
@@ -10699,7 +10695,7 @@
     },
     "sha.js": {
       "version": "2.4.11",
-      "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
+      "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
       "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
       "dev": true,
       "requires": {