diff --git a/app/main/autoupdater.js b/app/main/autoupdater.js
index 3bd7d761..35d5a423 100644
--- a/app/main/autoupdater.js
+++ b/app/main/autoupdater.js
@@ -7,24 +7,10 @@ function appUpdater() {
 	const log = require('electron-log');
 	log.transports.file.level = 'info';
 	autoUpdater.logger = log;
-	/*
-	AutoUpdater.on('error', err => log.info(err));
-	autoUpdater.on('checking-for-update', () => log.info('checking-for-update'));
-	autoUpdater.on('update-available', () => log.info('update-available'));
-	autoUpdater.on('update-not-available', () => log.info('update-not-available'));
-	*/
 
 	// Ask the user if update is available
 	// eslint-disable-next-line no-unused-vars
 	autoUpdater.on('update-downloaded', (event, info) => {
-		// Let message = app.getName() + ' ' + info.releaseName + ' is now available. It will be installed the next time you restart the application.';
-		// if (info.releaseNotes) {
-			// const splitNotes = info.releaseNotes.split(/[^\r]\n/);
-			// message += '\n\nRelease notes:\n';
-			// splitNotes.forEach(notes => {
-				// message += notes + '\n\n';
-			// });
-		// }
 		// Ask user to update the app
 		dialog.showMessageBox({
 			type: 'question',
diff --git a/app/main/link-helper.js b/app/main/link-helper.js
deleted file mode 100644
index 49912b4b..00000000
--- a/app/main/link-helper.js
+++ /dev/null
@@ -1,16 +0,0 @@
-const wurl = require('wurl');
-
-// Check link if it's internal/external
-function linkIsInternal(currentUrl, newUrl) {
-	const currentDomain = wurl('hostname', currentUrl);
-	const newDomain = wurl('hostname', newUrl);
-	return currentDomain === newDomain;
-}
-
-// We'll be needing this to open images in default browser
-const skipImages = '.jpg|.gif|.png|.jpeg|.JPG|.PNG';
-
-module.exports = {
-	linkIsInternal,
-	skipImages
-};
diff --git a/app/main/menu.js b/app/main/menu.js
index ebdcdd49..3e7aefe0 100644
--- a/app/main/menu.js
+++ b/app/main/menu.js
@@ -9,8 +9,6 @@ const BrowserWindow = electron.BrowserWindow;
 const shell = electron.shell;
 const appName = app.getName();
 
-const {about} = require('./windowmanager');
-
 function sendAction(action) {
 	const win = BrowserWindow.getAllWindows()[0];
 
@@ -135,8 +133,10 @@ const darwinTpl = [
 		submenu: [
 			{
 				label: 'Zulip desktop',
-				click() {
-					about();
+				click(item, focusedWindow) {
+					if (focusedWindow) {
+						sendAction('open-about');
+					}
 				}
 			},
 			{
@@ -270,8 +270,10 @@ const otherTpl = [
 		submenu: [
 			{
 				label: 'Zulip desktop',
-				click() {
-					about();
+				click(item, focusedWindow) {
+					if (focusedWindow) {
+						sendAction('open-about');
+					}
 				}
 			},
 			{
diff --git a/app/main/windowmanager.js b/app/main/windowmanager.js
deleted file mode 100644
index 005d8a6f..00000000
--- a/app/main/windowmanager.js
+++ /dev/null
@@ -1,95 +0,0 @@
-'use strict';
-const path = require('path');
-const electron = require('electron');
-const ipc = require('electron').ipcMain;
-
-const APP_ICON = path.join(__dirname, '../resources', 'Icon');
-
-const iconPath = () => {
-	return APP_ICON + (process.platform === 'win32' ? '.ico' : '.png');
-};
-let domainWindow;
-let aboutWindow;
-
-function onClosed() {
-	// Dereference the window
-	domainWindow = null;
-	aboutWindow = null;
-}
-
-// Change Zulip server Window
-function createdomainWindow() {
-	const domainwin = new electron.BrowserWindow({
-		title: 'Switch Server',
-		frame: false,
-		height: 300,
-		resizable: false,
-		width: 400,
-		show: false,
-		icon: iconPath()
-
-	});
-	const domainURL = 'file://' + path.join(__dirname, '../renderer', 'pref.html');
-	domainwin.loadURL(domainURL);
-	domainwin.on('closed', onClosed);
-
-	return domainwin;
-}
-// Call this window onClick addDomain in tray
-function addDomain() {
-	domainWindow = createdomainWindow();
-	domainWindow.once('ready-to-show', () => {
-		domainWindow.show();
-	});
-	setTimeout(() => {
-		if (domainWindow !== null) {
-			if (!domainWindow.isDestroyed()) {
-				domainWindow.destroy();
-			}
-		}
-	}, 15000);
-}
-// About window
-function createAboutWindow() {
-	const aboutwin = new electron.BrowserWindow({
-		width: 500,
-		height: 500,
-		title: 'About Zulip Desktop',
-		show: false,
-		center: true,
-		fullscreen: false,
-		fullscreenable: false,
-		resizable: false
-	});
-	const aboutURL = 'file://' + path.join(__dirname, '../renderer', 'about.html');
-	aboutwin.loadURL(aboutURL);
-	aboutwin.on('closed', onClosed);
-
-	// Stop page to update it's title
-	aboutwin.on('page-title-updated', e => {
-		e.preventDefault();
-	});
-
-	aboutwin.on('closed', onClosed);
-
-	return aboutwin;
-}
-
-// Call this onClick About in tray
-function about() {
-	aboutWindow = createAboutWindow();
-	aboutWindow.once('ready-to-show', () => {
-		aboutWindow.show();
-	});
-}
-
-ipc.on('trayabout', event => {
-	if (event) {
-		about();
-	}
-});
-
-module.exports = {
-	addDomain,
-	about
-};
diff --git a/app/renderer/css/main.css b/app/renderer/css/main.css
index a873e360..b78c2d4a 100644
--- a/app/renderer/css/main.css
+++ b/app/renderer/css/main.css
@@ -116,11 +116,11 @@ html, body {
     opacity: 0.8;
 }
 
-.tab .settings-tab {
+.tab .functional-tab {
     background: #eee;
 }
 
-.tab .settings-tab i {
+.tab .functional-tab i {
     font-size: 28px;
     line-height: 36px;
 }
@@ -151,6 +151,17 @@ html, body {
 .tab .server-tab-badge {
     display: none;
 }
+
+.tab .server-tab-badge.close-button {
+    width: 16px;
+    padding: 0 0 0 1px;
+}
+
+.tab .server-tab-badge.close-button i {
+    font-size: 13px;
+    line-height: 17px;
+}
+
 /*******************
  *   Webview Area  *
  *******************/
diff --git a/app/renderer/img/icon.png b/app/renderer/img/icon.png
new file mode 100644
index 00000000..d7fe0205
Binary files /dev/null and b/app/renderer/img/icon.png differ
diff --git a/app/renderer/js/components/functional-tab.js b/app/renderer/js/components/functional-tab.js
new file mode 100644
index 00000000..9f64dc94
--- /dev/null
+++ b/app/renderer/js/components/functional-tab.js
@@ -0,0 +1,43 @@
+'use strict';
+
+const Tab = require(__dirname + '/../components/tab.js');
+
+class FunctionalTab extends Tab {
+	template() {
+		return `
+					
+						close
+					
+					
+						${this.props.materialIcon}
+					
+