Implemented issue 1, fixed various minor bugs
diff --git a/background.js b/background.js
index a82ee27..73dbe50 100644
--- a/background.js
+++ b/background.js
@@ -52,12 +52,12 @@
 }
 
 function createmenus() {
-	chrome.storage.sync.get("languages", function(items) {
+	chrome.storage.sync.get("translateinto", function(items) {
 		chrome.contextMenus.removeAll();
 
 		var count = 0, singleone = true;
 
-		for (var language in items.languages) {
+		for (var language in items.translateinto) {
 			if (count == 0) {
 				count++;
 			} else {
@@ -67,7 +67,8 @@
 		}
 
 		if (singleone) {
-			for (var language in items.languages) {
+			for (var language_id in items.translateinto) {
+				var language = items.translateinto[language_id];
 				var languagem = isoLangs[language];
 				var title = languagem.name + " ("+languagem.nativeName+")";
 				var parent = chrome.contextMenus.create({"title": chrome.i18n.getMessage("contextmenu_title2", languagem.name), "contexts": ["selection"], "onclick": click});
@@ -78,7 +79,8 @@
 			}
 		} else {
 			var parent = chrome.contextMenus.create({"title": chrome.i18n.getMessage("contextmenu_title"), "contexts": ["selection"]});
-			for (var language in items.languages) {
+			for (var language_id in items.translateinto) {
+				var language = items.translateinto[language_id];
 				var languagem = isoLangs[language];
 				var title = languagem.name + " ("+languagem.nativeName+")";
 				var id = chrome.contextMenus.create({"title": title, "parentId": parent, "contexts":["selection"], "onclick": click});
@@ -97,9 +99,9 @@
 	chrome.storage.sync.get(null, function(items) {
 		if (details.reason == "install") {
 			if (isEmpty(items)) {
-				var settings = {'languages': {}, 'uniquetab': ''}, default_language = chrome.i18n.getMessage("@@ui_locale").split("_")[0];
+				var settings = {'translateinto': {}, 'uniquetab': ''}, default_language = chrome.i18n.getMessage("@@ui_locale").split("_")[0];
 				if (isoLangs[default_language] != "undefined") {
-					settings.languages[default_language] = default_language;
+					settings.translateinto[default_language] = default_language;
 				}
 				chrome.storage.sync.set(settings, function() {
 					chrome.notifications.create("install", {
@@ -129,6 +131,16 @@
 					}, function(id) {});
 				});
 			}
+			if (version[0] == "0" && version[1] < "7") {
+				items.translateinto = {};
+				var i = 0;
+				for (var language in items.languages) {
+					items.translateinto[i] = items.languages[language];
+					i++;
+				}
+				delete(items.languages);
+				chrome.storage.sync.set(items);
+			}
 		}
 	});
 });
@@ -139,7 +151,7 @@
 });
 
 chrome.storage.sync.get(null, function(items) {
-	if (items.languages) {
+	if (items.translateinto) {
 		createmenus();
 	} else {
 		chrome.contextMenus.removeAll();
diff --git a/manifest.json b/manifest.json
index d742a5e..e30f611 100644
--- a/manifest.json
+++ b/manifest.json
@@ -2,18 +2,18 @@
   "manifest_version": 2,
   "name": "__MSG_appBetaName__",
   "description": "__MSG_appDescription__",
-  "version": "0.6.2",
+  "version": "0.7",
   "permissions": [
     "contextMenus",
     "storage",
     "notifications"
   ],
   "icons": {
-    "16": "translate-16.png",
-    "32": "translate-32.png",
-    "64": "translate-64.png",
-    "128": "translate-128.png",
-    "256": "translate-256.png"
+    "16": "icons/translate-16.png",
+    "32": "icons/translate-32.png",
+    "64": "icons/translate-64.png",
+    "128": "icons/translate-128.png",
+    "256": "icons/translate-256.png"
   },
   "background": {
     "scripts": ["background.js"]
diff --git a/options.css b/options.css
deleted file mode 100644
index f1bc8ed..0000000
--- a/options.css
+++ /dev/null
@@ -1,22 +0,0 @@
-body {
-	padding:10px;
-	font-family:"Roboto", "Arial", sans-serif!important;
-	background-image: url('translate-1.png');
-	background-repeat: repeat;
-	background-position: left top;
-	font-size: 100%!important;
-}
-h1 {
-	text-align:center;
-	font-size:30px;
-}
-h2 {
-	font-size:20px;
-}
-#languages {
-	-webkit-column-count:4;
-}
-button#save {
-	display:block;
-	margin:18px auto;
-}
diff --git a/options.html b/options.html
index 414cfff..fbdceb7 100644
--- a/options.html
+++ b/options.html
@@ -1,16 +1,22 @@
+<!DOCTYPE html>
 <html>
 	<head>
-		<title>Options</title>
 		<meta charset="UTF-8">
-		<script src="options.js"></script>
-		<link rel="stylesheet" type="text/css" href="options.css">
-		<link href='http://fonts.googleapis.com/css?family=Roboto' rel='stylesheet' type='text/css'>
+		<title>Options</title>
+		<link rel="stylesheet" type="text/css" href="css/options.css">
+		<script src="js/options.js"></script>
+		<script src="js/sortable.js"></script>
+		<link href='http://fonts.googleapis.com/css?family=Roboto:400,700,700italic,400italic' rel='stylesheet' type='text/css'>
 	</head>
 	<body>
 		<h1 id="welcome"></h1>
 		<p id="introduction"></p>
-		<h2 id="languageselectheader"></h2>
-		<div id="languages"></div>
+		<div id="languages_container">
+			<ul id="languages"></ul>
+		</div>
+		<div id="languages_footer">
+			<button id="languages_add">Add</button>
+		</div>
 		<h2 id="otheroptionsheader"></h2>
 		<div id="otheroptions">
 			<input type="radio" name="uniquetab" id="varioustabs" value=""> <label id="varioustabs_label" for="varioustabs"></label><br>
@@ -18,5 +24,16 @@
 			<input type="radio" name="uniquetab" id="panel" value="panel"> <label id="panel_label" for="panel"></label>
 		</div>
 		<button id="save"></button>
+		<dialog id="languages_add_dialog">
+		  <h3>Add language</h3>
+		  <div class="content_area">
+		    <label id="language_label" for="select_language">Language:</label>
+		    <select id="select_language"></select>
+		  </div>
+		  <div class="action_buttons">
+		    <button id="languages_add_cancel">Cancel</button>
+		    <button id="languages_add_ok">OK</button>
+		  </div>
+		</dialog>
 	</body>
 </html>
diff --git a/options.js b/options.js
deleted file mode 100644
index d240da1..0000000
--- a/options.js
+++ /dev/null
@@ -1,107 +0,0 @@
-var isoLangs = {"af":{"name":"Afrikaans","nativeName":"Afrikaans"},"sq":{"name":"Albanian","nativeName":"Shqip"},"ar":{"name":"Arabic","nativeName":"\u0639\u0631\u0628\u064a"},"hy":{"name":"Armenian","nativeName":"\u0540\u0561\u0575\u0565\u0580\u0567\u0576"},"az":{"name":"Azerbaijani","nativeName":"\u0622\u0630\u0631\u0628\u0627\u06cc\u062c\u0627\u0646 \u062f\u06cc\u0644\u06cc"},"eu":{"name":"Basque","nativeName":"Euskara"},"be":{"name":"Belarusian","nativeName":"\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f"},"bg":{"name":"Bulgarian","nativeName":"\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438"},"ca":{"name":"Catalan","nativeName":"Catal\u00e0"},"zh-CN":{"name":"Chinese (Simplified)","nativeName":"\u4e2d\u6587\u7b80\u4f53"},"zh-TW":{"name":"Chinese (Traditional)","nativeName":"\u4e2d\u6587\u7e41\u9ad4"},"hr":{"name":"Croatian","nativeName":"Hrvatski"},"cs":{"name":"Czech","nativeName":"\u010ce\u0161tina"},"da":{"name":"Danish","nativeName":"Dansk"},"nl":{"name":"Dutch","nativeName":"Nederlands"},"en":{"name":"English","nativeName":"English"},"et":{"name":"Estonian","nativeName":"Eesti keel"},"tl":{"name":"Filipino","nativeName":"Filipino"},"fi":{"name":"Finnish","nativeName":"Suomi"},"fr":{"name":"French","nativeName":"Fran\u00e7ais"},"gl":{"name":"Galician","nativeName":"Galego"},"ka":{"name":"Georgian","nativeName":"\u10e5\u10d0\u10e0\u10d7\u10e3\u10da\u10d8"},"de":{"name":"German","nativeName":"Deutsch"},"el":{"name":"Greek","nativeName":"\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac"},"ht":{"name":"Haitian Creole","nativeName":"Krey\u00f2l ayisyen"},"iw":{"name":"Hebrew","nativeName":"\u05e2\u05d1\u05e8\u05d9\u05ea"},"hi":{"name":"Hindi","nativeName":"\u0939\u093f\u0928\u094d\u0926\u0940"},"hu":{"name":"Hungarian","nativeName":"Magyar"},"is":{"name":"Icelandic","nativeName":"\u00cdslenska"},"id":{"name":"Indonesian","nativeName":"Bahasa Indonesia"},"ga":{"name":"Irish","nativeName":"Gaeilge"},"it":{"name":"Italian","nativeName":"Italiano"},"ja":{"name":"Japanese","nativeName":"\u65e5\u672c\u8a9e"},"ko":{"name":"Korean","nativeName":"\ud55c\uad6d\uc5b4"},"lv":{"name":"Latvian","nativeName":"Latvie\u0161u"},"lt":{"name":"Lithuanian","nativeName":"Lietuvi\u0173 kalba"},"mk":{"name":"Macedonian","nativeName":"\u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0441\u043a\u0438"},"ms":{"name":"Malay","nativeName":"Malay"},"mt":{"name":"Maltese","nativeName":"Malti"},"no":{"name":"Norwegian","nativeName":"Norsk"},"fa":{"name":"Persian","nativeName":"\u0641\u0627\u0631\u0633\u06cc"},"pl":{"name":"Polish","nativeName":"Polski"},"pt":{"name":"Portuguese","nativeName":"Portugu\u00eas"},"ro":{"name":"Romanian","nativeName":"Rom\u00e2n\u0103"},"ru":{"name":"Russian","nativeName":"\u0420\u0443\u0441\u0441\u043a\u0438\u0439"},"sr":{"name":"Serbian","nativeName":"\u0421\u0440\u043f\u0441\u043a\u0438"},"sk":{"name":"Slovak","nativeName":"Sloven\u010dina"},"sl":{"name":"Slovenian","nativeName":"Slovensko"},"es":{"name":"Spanish","nativeName":"Espa\u00f1ol"},"sw":{"name":"Swahili","nativeName":"Kiswahili"},"sv":{"name":"Swedish","nativeName":"Svenska"},"th":{"name":"Thai","nativeName":"\u0e44\u0e17\u0e22"},"tr":{"name":"Turkish","nativeName":"T\u00fcrk\u00e7e"},"uk":{"name":"Ukrainian","nativeName":"\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430"},"ur":{"name":"Urdu","nativeName":"\u0627\u0631\u062f\u0648"},"vi":{"name":"Vietnamese","nativeName":"Ti\u1ebfng Vi\u1ec7t"},"cy":{"name":"Welsh","nativeName":"Cymraeg"},"yi":{"name":"Yiddish","nativeName":"\u05d9\u05d9\u05b4\u05d3\u05d9\u05e9"}};
-
-function $(selector) {
-    return document.querySelector(selector);
-}
-
-function $all(selector) {
-    return document.querySelectorAll(selector);
-}
-
-function isEmpty(obj) {
-    return Object.keys(obj).length === 0;
-}
-
-function init() {
-    $("#welcome").innerHTML = chrome.i18n.getMessage("options_welcome");
-    $("#introduction").innerHTML = chrome.i18n.getMessage("options_introduction");
-    $("#languageselectheader").innerHTML = chrome.i18n.getMessage("options_languageselectheader");
-    $("#otheroptionsheader").innerHTML = chrome.i18n.getMessage("options_otheroptionsheader");
-    $("#varioustabs_label").innerHTML = chrome.i18n.getMessage("options_tabsoption_1");
-    $("#uniquetab_label").innerHTML = chrome.i18n.getMessage("options_tabsoption_2");
-    $("#panel_label").innerHTML = chrome.i18n.getMessage("options_tabsoption_3");
-    chrome.storage.sync.get(null, function(items) {
-        if (isEmpty(items)) {
-            items = {'languages': {}, 'uniquetab': ''};
-            chrome.storage.sync.set({'languages': {}, 'uniquetab': ''});
-        }
-        if (items.uniquetab === "yep")
-            $("#uniquetab").checked = true;
-        if (items.uniquetab === "")
-            $("#varioustabs").checked = true;
-        if (items.uniquetab === "panel")
-            $("#panel").checked = true;
-        $("#panelsflag").addEventListener('click', function() { event.preventDefault(); chrome.tabs.create({url: 'chrome://flags/#enable-panels'}); });
-        $("#save").innerHTML = chrome.i18n.getMessage("options_savebutton");
-        $("#save").addEventListener('click', function() {
-            save_options();
-        });
-        var languages = items.languages;
-        for (var language in isoLangs) {
-            var el = document.createElement('div');
-            el.setAttribute('class','language');
-            el.setAttribute('id', 'cont-'+language);
-            $("#languages").appendChild(el);
-            var el2 = document.createElement('input');
-            el2.setAttribute('type','checkbox');
-            el2.setAttribute('id', language);
-            el2.setAttribute('name', language);
-            el2.setAttribute('data-language', language);
-            el.appendChild(el2);
-            var el3 = document.createElement('label');
-            el3.setAttribute('for', language);
-            el3.innerHTML = isoLangs[language]["name"]+" ("+isoLangs[language]["nativeName"]+")";
-            el.appendChild(el3);
-        }
-        if (!languages) {
-            return;
-        }
-        else {
-            var options = items.languages;
-            for (var language in options) {
-                document.getElementById(language).checked = true;
-            }
-        }
-        var languages_el = document.getElementById("languages");
-    });
-}
-
-function save_options() {
-    var languages = document.getElementById("languages");
-    var options = {"uniquetab": "", "languages": {}};
-
-    options.uniquetab = radio_selected("uniquetab");
-
-    for (var language in isoLangs) {
-        if ($("input[data-language='"+language+"']").checked) {
-            options.languages[language] = language;
-        }
-    }
-
-    chrome.storage.sync.set(options, function() {
-        var background = chrome.extension.getBackgroundPage();
-
-        background.translator_tab = false;
-        background.translator_window = false;
-        window.close();
-    });
-
-    // We don't need the following code because the background.js is already listening to changes in chrome.sync ;-) Yeeey!
-    //chrome.extension.getBackgroundPage().createmenus(JSON.stringify(options));
-}
-
-function toObject(arr) {
-    var rv = {};
-    for (var i = 0; i < arr.length; ++i)
-        if (arr[i] !== undefined) rv[i] = arr[i];
-    return rv;
-}
-
-function radio_selected(a) {
-    var elements = document.getElementsByName(a);
-
-    for (var i=0; i<elements.length; i++)
-        if (elements[i].checked) return elements[i].value;
-}
-
-window.addEventListener('load', init);
diff --git a/translate-1.png b/translate-1.png
deleted file mode 100644
index 8bab181..0000000
--- a/translate-1.png
+++ /dev/null
Binary files differ
diff --git a/translate-128.png b/translate-128.png
deleted file mode 100644
index 1a33921..0000000
--- a/translate-128.png
+++ /dev/null
Binary files differ
diff --git a/translate-16.png b/translate-16.png
deleted file mode 100644
index 6629ac6..0000000
--- a/translate-16.png
+++ /dev/null
Binary files differ
diff --git a/translate-2.png b/translate-2.png
deleted file mode 100644
index 9625b12..0000000
--- a/translate-2.png
+++ /dev/null
Binary files differ
diff --git a/translate-256.png b/translate-256.png
deleted file mode 100644
index 0b2ead1..0000000
--- a/translate-256.png
+++ /dev/null
Binary files differ
diff --git a/translate-32.png b/translate-32.png
deleted file mode 100644
index ee6fcfe..0000000
--- a/translate-32.png
+++ /dev/null
Binary files differ
diff --git a/translate-4.png b/translate-4.png
deleted file mode 100644
index 815085d..0000000
--- a/translate-4.png
+++ /dev/null
Binary files differ
diff --git a/translate-512.png b/translate-512.png
deleted file mode 100644
index 8fc23a3..0000000
--- a/translate-512.png
+++ /dev/null
Binary files differ
diff --git a/translate-64.png b/translate-64.png
deleted file mode 100644
index 6de6bb7..0000000
--- a/translate-64.png
+++ /dev/null
Binary files differ
diff --git a/translate-8.png b/translate-8.png
deleted file mode 100644
index 1e5832c..0000000
--- a/translate-8.png
+++ /dev/null
Binary files differ