diff --git a/js/components/FolderContent.vue b/js/components/FolderContent.vue
index cfd37746e2f5a27d2780fb269d4bf17cd03f8184..34ed53bdfde5e86f9b5f279dae76ded7a47e6d97 100644
--- a/js/components/FolderContent.vue
+++ b/js/components/FolderContent.vue
@@ -2,19 +2,17 @@
 	<div id="app-content">
 		<div id="app-content-wrapper">
 			<MessageList/>
-			<Message/>
+			<slot/>
 		</div>
 	</div>
 </template>
 
 <script>
-	import Message from "./Message";
 	import MessageList from "./MessageList";
 
 	export default {
 		name: "FolderContent",
 		components: {
-			Message,
 			MessageList
 		}
 	}
diff --git a/js/components/NewMessageDetail.vue b/js/components/NewMessageDetail.vue
new file mode 100644
index 0000000000000000000000000000000000000000..2e890a0748ca7aa2e214bda5cb96db8bc44e0cb8
--- /dev/null
+++ b/js/components/NewMessageDetail.vue
@@ -0,0 +1,28 @@
+<template>
+	<div class="app-content-details">
+		<Composer :draft="saveDraft"
+				  :send="sendMessage"/>
+	</div>
+</template>
+
+<script>
+	import Composer from "./Composer";
+
+	export default {
+		name: "NewMessageDetail",
+		components: {
+			Composer
+		},
+		methods: {
+			saveDraft () {
+				console.info('saving new draft');
+				return Promise.resolve();
+			},
+			sendMessage () {
+				console.info('sending message');
+				console.info('sending message');
+				return Promise.resolve();
+			}
+		}
+	}
+</script>
diff --git a/js/mixins/SidebarItems.js b/js/mixins/SidebarItems.js
new file mode 100644
index 0000000000000000000000000000000000000000..30f3088b4e4cef9be68b18ebbf4919d730d5e048
--- /dev/null
+++ b/js/mixins/SidebarItems.js
@@ -0,0 +1,60 @@
+import chain from "ramda/es/chain";
+
+export default {
+	methods: {
+		buildMenu (accounts) {
+			const items = chain(account => {
+				let items = []
+
+				if (account.visible !== false) {
+					items.push({
+						id: 'account' + account.id,
+						key: 'account' + account.id,
+						text: account.name,
+						bullet: account.bullet // TODO
+					})
+				}
+
+				return items.concat(account.folders.map(folder => {
+					let icon = 'folder';
+					if (folder.specialUse) {
+						icon = folder.specialUse;
+					}
+
+					return {
+						id: 'account' + account.id + '_' + folder.id,
+						key: 'account' + account.id + '_' + folder.id,
+						text: folder.name,
+						icon: 'icon-' + icon,
+						router: {
+							name: 'folder',
+							params: {
+								accountId: account.id,
+								folderId: folder.id,
+							}
+						},
+						utils: {
+							counter: folder.unread,
+						}
+					}
+				}))
+			}, accounts);
+
+			return {
+				id: 'accounts-list',
+				new: {
+					'id': 'mail_new_message',
+					text: t('mail', 'New message'),
+					icon: 'icon-add',
+					action: () => {
+						this.$router.push('/new');
+					}
+				},
+				items: items,
+				utils: {
+					counter: 0
+				}
+			}
+		}
+	}
+}
diff --git a/js/router.js b/js/router.js
index 666e9b65d6445b70040725e9ea8475c0faf8368e..d4faa957b53e791c1e512ab9def22089b8f7ba94 100644
--- a/js/router.js
+++ b/js/router.js
@@ -2,6 +2,7 @@ import Vue from 'vue'
 import Router from 'vue-router'
 
 import Home from './views/Home'
+import NewMessage from './views/NewMessage';
 import Setup from './views/Setup';
 
 Vue.use(Router)
@@ -15,6 +16,11 @@ export default new Router({
 			name: 'home',
 			component: Home
 		},
+		{
+			path: '/new',
+			name: 'newMessage',
+			component: NewMessage
+		},
 		{
 			path: '/accounts/:accountId/folders/:folderId',
 			name: 'folder',
@@ -26,4 +32,4 @@ export default new Router({
 			component: Setup
 		}
 	]
-})
+});
diff --git a/js/views/Home.vue b/js/views/Home.vue
index 6309b163a8319b59e76a750688ed2f2a09b733b4..32756d3fb2f4d89f0f78abaae43a1e12ed264986 100644
--- a/js/views/Home.vue
+++ b/js/views/Home.vue
@@ -1,84 +1,35 @@
 <template>
 	<div id="content" class="mail">
 		<app-navigation :menu="menu">
-			<AppSettingsMenu slot="settings-content" />
+			<AppSettingsMenu slot="settings-content"/>
 		</app-navigation>
-		<FolderContent />
+		<FolderContent>
+			<Message/>
+		</FolderContent>
 	</div>
 </template>
 
 <script>
-	import chain from "ramda/es/chain";
-
 	import AppNavigation from "../components/core/appNavigation";
 	import AppSettingsMenu from "../components/AppSettingsMenu";
-	import FolderContent from "../components/FolderContent"
+	import FolderContent from "../components/FolderContent";
+	import Message from "../components/Message";
+
+	import SidebarItems from "../mixins/SidebarItems";
 
 	export default {
 		name: 'home',
+		extends: SidebarItems,
 		components: {
+			AppNavigation,
 			AppSettingsMenu,
 			FolderContent,
-			AppNavigation
+			Message,
 		},
 		computed: {
 			menu () {
-				const items = chain(account => {
-					let items = []
-
-					if (account.visible !== false) {
-						items.push({
-							id: 'account' + account.id,
-							key: 'account' + account.id,
-							text: account.name,
-							bullet: account.bullet // TODO
-						})
-					}
-
-					return items.concat(account.folders.map(folder => {
-						let icon = 'folder';
-						if (folder.specialUse) {
-							icon = folder.specialUse;
-						}
-
-						return {
-							id: 'account' + account.id + '_' + folder.id,
-							key: 'account' + account.id + '_' + folder.id,
-							text: folder.name,
-							icon: 'icon-' + icon,
-							router: {
-								name: 'folder',
-								params: {
-									accountId: account.id,
-									folderId: folder.id,
-								}
-							},
-							utils: {
-								counter: folder.unread,
-							}
-						}
-					}))
-				}, this.$store.state.accounts);
-
-				return {
-					id: 'accounts-list',
-					new: {
-						'id': 'mail_new_message',
-						text: t('mail', 'New message'),
-						icon: 'icon-add',
-						action: this.newMessage
-					},
-					items: items,
-					utils: {
-						counter: 0
-					}
-				}
-			}
-		},
-		methods: {
-			newMessage () {
-				console.info('New message clicked');
+				return this.buildMenu(this.$store.state.accounts);
 			}
 		}
-	}
+	};
 </script>
diff --git a/js/views/NewMessage.vue b/js/views/NewMessage.vue
new file mode 100644
index 0000000000000000000000000000000000000000..00f788ab1e3a3b0b192dd86174d49ae934edf684
--- /dev/null
+++ b/js/views/NewMessage.vue
@@ -0,0 +1,35 @@
+<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>