diff --git a/README.md b/README.md
index f8c7efc25..70cb246d7 100644
--- a/README.md
+++ b/README.md
@@ -10,7 +10,7 @@ It's both a startup and a community project, completely open source under the [M
 
 ### [Getting Started](https://github.com/codecombat/codecombat/wiki/Dev-Setup:-General-Information)
 
-We've made it easy to fork the project, run a simple script that'll install all the dependencies, and get a local copy of CodeCombat running right away on [Mac](https://github.com/codecombat/codecombat/wiki/Dev-Setup:-Mac-and-Vagrant), [Linux](https://github.com/codecombat/codecombat/wiki/Dev-Setup:-Linux), or [Windows](https://github.com/codecombat/codecombat/wiki/Dev-Setup:-Windows). See [the docs for details](https://github.com/codecombat/codecombat/wiki/Developer-environment).
+We've made it easy to fork the project, run a simple script that'll install all the dependencies, and get a local copy of CodeCombat running right away on [Mac](https://github.com/codecombat/codecombat/wiki/Dev-Setup:-Mac-and-Vagrant), [Linux](https://github.com/codecombat/codecombat/wiki/Dev-Setup:-Linux), or [Windows](https://github.com/codecombat/codecombat/wiki/Dev-Setup:-Windows). See [the docs for details](https://github.com/codecombat/codecombat/wiki/Dev-Setup:-General-Information).
 
 ### [Getting In Touch](https://github.com/codecombat/codecombat/wiki/Developer-organization)
 
diff --git a/app/lib/world/names.coffee b/app/lib/world/names.coffee
index b4655c8d1..e8b954ff8 100644
--- a/app/lib/world/names.coffee
+++ b/app/lib/world/names.coffee
@@ -637,3 +637,33 @@ module.exports.thangNames = thangNames =
     'Ganju'
     'Ralthora'
   ]
+  'Skeleton': [
+    'Bloody Johnny'
+    'Bone Daddy'
+    'Bonejangles'
+    'Bonesworth'
+    'Bonette'
+    'Doornail'
+    'Drybones'
+    'Grim'
+    'Haskell'
+    'Indiana Bones'
+    'James Bone'
+    'Kate'
+    'Palatine'
+    'Ribster'
+    'Rusty'
+    'Sacra'
+    'Scraps'
+    'Shelly'
+    'Skeletor'
+    'Skellington'
+    'Skulldugger'
+    'Skully'
+    'Smitty'
+    'Sphenoid'
+    'Sternum'
+    'Talus'
+    'Ulna'
+    'Yorick'
+  ]
diff --git a/app/locale/ar.coffee b/app/locale/ar.coffee
index f68d84aa2..3046f7cfa 100644
--- a/app/locale/ar.coffee
+++ b/app/locale/ar.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
 #  game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/bg.coffee b/app/locale/bg.coffee
index 174b50364..485c9910b 100644
--- a/app/locale/bg.coffee
+++ b/app/locale/bg.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "български език", englishDescri
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
 #  game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "български език", englishDescri
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/ca.coffee b/app/locale/ca.coffee
index 5d5bcd376..3bdb5766f 100644
--- a/app/locale/ca.coffee
+++ b/app/locale/ca.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
     inventory_tab: "Inventari"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
   subscribe:
     subscribe_title: "Subscriu-te"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/cs.coffee b/app/locale/cs.coffee
index 0c2525177..1841766ee 100644
--- a/app/locale/cs.coffee
+++ b/app/locale/cs.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
     inventory_tab: "Inventář"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr
   subscribe:
     subscribe_title: "Předplacení"
     unsubscribe: "Zrušit předplacení"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
     levels: "Získejte více praxe s bonusovými úrovněmi!"
     heroes: "Více silnějších hrdinů!"
     gems: "3500 bonusových drahokamů každý měsíc!"
diff --git a/app/locale/da.coffee b/app/locale/da.coffee
index 8af523f98..166da1912 100644
--- a/app/locale/da.coffee
+++ b/app/locale/da.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/de-AT.coffee b/app/locale/de-AT.coffee
index e71c8cab8..2e3ef6179 100644
--- a/app/locale/de-AT.coffee
+++ b/app/locale/de-AT.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
     inventory_tab: "Inventar"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/de-CH.coffee b/app/locale/de-CH.coffee
index af3da25d4..3e0db3d25 100644
--- a/app/locale/de-CH.coffee
+++ b/app/locale/de-CH.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/de-DE.coffee b/app/locale/de-DE.coffee
index 518bafa14..3f9a842a0 100644
--- a/app/locale/de-DE.coffee
+++ b/app/locale/de-DE.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
     inventory_tab: "Inventar"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
   subscribe:
     subscribe_title: "Abonnieren"
     unsubscribe: "Abmelden"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
     levels: "25 weitere level! Und 5 neue jede Woche!"
     heroes: "Stärkere Helden!"
     gems: "3500 bonus Edelsteine jeden Monat!"
diff --git a/app/locale/el.coffee b/app/locale/el.coffee
index 01ecbc9ba..90a15556d 100644
--- a/app/locale/el.coffee
+++ b/app/locale/el.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "Ελληνικά", englishDescription: "Gre
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "Ελληνικά", englishDescription: "Gre
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/en-AU.coffee b/app/locale/en-AU.coffee
index 2d9895185..ca521867c 100644
--- a/app/locale/en-AU.coffee
+++ b/app/locale/en-AU.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
 #  game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/en-GB.coffee b/app/locale/en-GB.coffee
index f8d610ac6..678377a36 100644
--- a/app/locale/en-GB.coffee
+++ b/app/locale/en-GB.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
 #  game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/en-US.coffee b/app/locale/en-US.coffee
index d46ad4830..98a483b8f 100644
--- a/app/locale/en-US.coffee
+++ b/app/locale/en-US.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
 #  game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/en.coffee b/app/locale/en.coffee
index 2d3e8b8bf..8568569b2 100644
--- a/app/locale/en.coffee
+++ b/app/locale/en.coffee
@@ -323,6 +323,8 @@
     tip_reusable_software: "Before software can be reusable it first has to be usable."
     tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
     tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+    tip_source_code: "I want to change the world but they would not give me the source code."
+    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
     inventory_tab: "Inventory"
@@ -369,6 +371,13 @@
   subscribe:
     subscribe_title: "Subscribe"
     unsubscribe: "Unsubscribe"
+    confirm_unsubscribe: "Confirm Unsubscribe"
+    never_mind: "Never Mind, I Still Love You"
+    thank_you_months_prefix: "Thank you for supporting us these last"
+    thank_you_months_suffix: "months."
+    thank_you: "Thank you for supporting CodeCombat."
+    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+    unsubscribe_feedback_placeholder: "O, what have we done?"
     levels: "Get more practice with bonus levels!"
     heroes: "More powerful heroes!"
     gems: "3500 bonus gems every month!"
diff --git a/app/locale/es-419.coffee b/app/locale/es-419.coffee
index b2685ad0e..d1eda2836 100644
--- a/app/locale/es-419.coffee
+++ b/app/locale/es-419.coffee
@@ -81,7 +81,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
     awaiting_levels_adventurer_prefix: "Nosotros creamos 5 nuevos niveles cada semana"
     awaiting_levels_adventurer: "Registrate como un aventurero"
     awaiting_levels_adventurer_suffix: "para ser el primero en jugar nuevos niveles."
-#    adjust_volume: "Adjust volume"
+    adjust_volume: "Ajustar el volumen"
     choose_your_level: "Elige tu nivel" # The rest of this section is the old play view at /play-old and isn't very important.
     adventurer_prefix: "Puedes saltar a cualquier nivel de abajo, o discutir los niveles en "
     adventurer_forum: "el foro del aventurero"
@@ -160,10 +160,10 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
     date: "Fecha"
     body: "Cuerpo"
     version: "Versión"
-#    pending: "Pending"
-#    accepted: "Accepted"
-#    rejected: "Rejected"
-#    withdrawn: "Withdrawn"
+    pending: "Pendiente"
+    accepted: "Aceptado"
+    rejected: "Rechazado"
+    withdrawn: "Retirado"
     submitter: "Emisor"
     submitted: "Enviado"
     commit_msg: "Enviar mensaje"
@@ -171,10 +171,10 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
     version_history: "Historial de Versiones"
     version_history_for: "Historial de Versiones para: "
     select_changes: "Selcciona dos cambios abajo para ver la diferencia"
-#    undo_prefix: "Undo"
-#    undo_shortcut: "(Ctrl+Z)"
-#    redo_prefix: "Redo"
-#    redo_shortcut: "(Ctrl+Shift+Z)"
+    undo_prefix: "Deshacer"
+    undo_shortcut: "(Ctrl+Z)"
+    redo_prefix: "Rehacer"
+    redo_shortcut: "(Ctrl+Shift+Z)"
     play_preview: "Mira el avance del nivel"
     result: "Resultado"
     results: "Resultados"
@@ -198,9 +198,9 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
     hard: "Difícil"
     player: "Jugador"
     player_level: "Nivel" # Like player level 5, not like level: Dungeons of Kithgard
-#    warrior: "Warrior"
-#    ranger: "Ranger"
-#    wizard: "Wizard"
+    warrior: "Guerrero"
+    ranger: "Guardabosques"
+    wizard: "Mago"
 
   units:
     second: "segundo"
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
     inventory_tab: "Inventario"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
   subscribe:
     subscribe_title: "Suscribirse"
     unsubscribe: "Des-suscribirse"
+    confirm_unsubscribe: "Confirmar cancelacion de suscripción"
+    never_mind: "Olvidalo, Te sigo queriendo"
+    thank_you_months_prefix: "Gracias por tu apoyo en estos ultimos"
+    thank_you_months_suffix: "meses."
+    thank_you: "Gracias por apoyar CodeCombat."
+    sorry_to_see_you_go: "¡Sentimos que te vayas! Por favor, haznos saber lo que podríamos haber hecho mejor."
+    unsubscribe_feedback_placeholder: "¿Pero qué hemos hecho?"
     levels: "Adquirí más practica con un nivel bonus!"
     heroes: "Héroes más poderosos!"
     gems: "Bonus de 3500 todos los meses!"
@@ -392,7 +401,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
     javascript_blurb: "El lenguaje de la web (no es Java)."
     coffeescript_blurb: "JavaScript pero más bonito."
     clojure_blurb: "Un Lisp moderno."
-    lua_blurb: "Lenguaje ara Juegos."
+    lua_blurb: "Lenguaje para Juegos."
     io_blurb: "Simple pero oscuro."
     status: "Estado"
     weapons: "Armas"
@@ -616,12 +625,12 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
     revert: "Revertir"
     revert_models: "Revertir Modelos"
     pick_a_terrain: "Elije un Terreno"
-#    dungeon: "Dungeon"
-#    indoor: "Indoor"
-#    desert: "Desert"
+    dungeon: "Calabozo"
+    indoor: "Interior"
+    desert: "Desierto"
     grassy: "Herboso"
     small: "Pequeño"
-#    large: "Large"
+    large: "Grande"
     fork_title: "Fork de Nueva Versión"
     fork_creating: "Creando Fork..."
     generate_terrain: "Generar terreno"
@@ -642,9 +651,9 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
     level_tab_thangs_all: "Todo"
     level_tab_thangs_conditions: "Condiciones Iniciales"
     level_tab_thangs_add: "Agregar Thangs"
-#    add_components: "Add Components"
-#    component_configs: "Component Configurations"
-#    config_thang: "Double click to configure a thang"
+    add_components: "Agregar Componentes"
+    component_configs: "Configuraciones del Componente"
+    config_thang: "Doble clic para configurar un thang"
     delete: "Borrar"
     duplicate: "Duplicar"
 #    stop_duplicate: "Stop Duplicate"
@@ -682,7 +691,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
 #    achievement_query_goals: "Key achievement off of level goals"
 #    level_completion: "Level Completion"
 #    pop_i18n: "Populate I18N"
-#    tasks: "Tasks"
+    tasks: "Tareas"
 
   article:
     edit_btn_preview: "Vista previa"
@@ -891,7 +900,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
     leaderboard: "Clasificación"
     user_schema: "Esquema de Usuario"
     user_profile: "Perfil de Usuario"
-#    patch: "Patch"
+    patch: "Parche"
     patches: "Parches"
     patched_model: "Documento fuente"
     model: "Modelo"
@@ -914,13 +923,13 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
     employers: "Empleadores"
     candidates: "Candidatos"
     candidate_sessions: "Sesión de candidato"
-#    user_remark: "User Remark"
-#    user_remarks: "User Remarks"
+    user_remark: "Observación del usuario"
+    user_remarks: "Observaciones del usuario"
     versions: "Versiones"
     items: "Items"
     heroes: "Héroes"
     achievement: "Logros"
-#    clas: "CLAs"
+    clas: "CLAs"
     play_counts: "Conteo de juegos"
     feedback: "Feedback"
     payment_info: "Información de pago"
@@ -956,7 +965,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
     archmage_wiki_url: "nuestra wiki de Archimago"
     opensource_description_suffix: "Para la lista de softwares que hacen al juego posible."
     practices_title: "Mejores prácticas respetuosas"
-#    practices_description: "These are our promises to you, the player, in slightly less legalese."
+    practices_description: "Estas son nuestras promesas hacia ti, el jugador, en términos menos legales."
     privacy_title: "Privacidad"
     privacy_description: "No vederemos nada sobre tu información personalWe will not sell any of your personal information."
     security_title: "Seguridad"
diff --git a/app/locale/es-ES.coffee b/app/locale/es-ES.coffee
index 97cec6451..3d0fd1a34 100644
--- a/app/locale/es-ES.coffee
+++ b/app/locale/es-ES.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
     inventory_tab: "Inventario"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
   subscribe:
     subscribe_title: "Suscríbete"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
     levels: "¡Desbloquea 17 niveles adicionales! ¡5 nuevos cada semana!"
     heroes: "¡Más heroes poderosos!"
     gems: "¡3500 joyas adicionales cada mes!"
diff --git a/app/locale/fa.coffee b/app/locale/fa.coffee
index 1c8f2ec15..13deb176d 100644
--- a/app/locale/fa.coffee
+++ b/app/locale/fa.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian",
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
 #  game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian",
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/fi.coffee b/app/locale/fi.coffee
index 53725ee44..4ad0f16da 100644
--- a/app/locale/fi.coffee
+++ b/app/locale/fi.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
 #  game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/fr.coffee b/app/locale/fr.coffee
index aca640269..4fe5a942b 100644
--- a/app/locale/fr.coffee
+++ b/app/locale/fr.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
     inventory_tab: "Inventaire"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
   subscribe:
     subscribe_title: "Inscription"
     unsubscribe: "Désinscription"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
     levels: "Débloquer 17 niveaux supplémentaires ! Et 5 nouveaux chaque semaines!"
     heroes: "Héros plus puissants!"
     gems: "3500 gemmes en bonus chaque mois !"
diff --git a/app/locale/gl.coffee b/app/locale/gl.coffee
index ba3431b37..5b581f7fd 100644
--- a/app/locale/gl.coffee
+++ b/app/locale/gl.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "Galego", englishDescription: "Galician", tr
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
     inventory_tab: "Inventario"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "Galego", englishDescription: "Galician", tr
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/he.coffee b/app/locale/he.coffee
index 528091743..607e4dfb3 100644
--- a/app/locale/he.coffee
+++ b/app/locale/he.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
 #  game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/hi.coffee b/app/locale/hi.coffee
index d46f87b1c..1d0866fd4 100644
--- a/app/locale/hi.coffee
+++ b/app/locale/hi.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
 #  game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/hu.coffee b/app/locale/hu.coffee
index 571487c20..0b0c3373a 100644
--- a/app/locale/hu.coffee
+++ b/app/locale/hu.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
     inventory_tab: "Raktár"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
   subscribe:
     subscribe_title: "Feliratkozás"
     unsubscribe: "Leiratkozás"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
     levels: "Gyakorolj a bónusz szinteken!"
     heroes: "Még erősebb hősök!"
     gems: "3500 búnusz drágakő havonta!"
diff --git a/app/locale/id.coffee b/app/locale/id.coffee
index b1ce678b6..5b4f0f114 100644
--- a/app/locale/id.coffee
+++ b/app/locale/id.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
 #  game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/it.coffee b/app/locale/it.coffee
index 3ca374748..cdf8a99da 100644
--- a/app/locale/it.coffee
+++ b/app/locale/it.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
     inventory_tab: "Inventario"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/ja.coffee b/app/locale/ja.coffee
index e9ec27d6a..df10c6a30 100644
--- a/app/locale/ja.coffee
+++ b/app/locale/ja.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/ko.coffee b/app/locale/ko.coffee
index 3a008703f..cee88dd99 100644
--- a/app/locale/ko.coffee
+++ b/app/locale/ko.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/lt.coffee b/app/locale/lt.coffee
index bfa2080f9..cc2e1d9ac 100644
--- a/app/locale/lt.coffee
+++ b/app/locale/lt.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
 #  game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/mk-MK.coffee b/app/locale/mk-MK.coffee
index 9ba6f031f..5b9d17521 100644
--- a/app/locale/mk-MK.coffee
+++ b/app/locale/mk-MK.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "Македонски", englishDescription:
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "Македонски", englishDescription:
   subscribe:
     subscribe_title: "Зачлени се"
     unsubscribe: "Откажи членство"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
     levels: "Вежбај повеќе со дополнителни нивоа!"
     heroes: "Помоќни херои!"
     gems: "3500 скапоцени камења секој месец!"
diff --git a/app/locale/ms.coffee b/app/locale/ms.coffee
index 9ea609566..76e0a8701 100644
--- a/app/locale/ms.coffee
+++ b/app/locale/ms.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
 #  game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/nb.coffee b/app/locale/nb.coffee
index ad7beb61b..d09b52fd5 100644
--- a/app/locale/nb.coffee
+++ b/app/locale/nb.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
     inventory_tab: "Utstyr"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/nl-BE.coffee b/app/locale/nl-BE.coffee
index 364943354..d36620c99 100644
--- a/app/locale/nl-BE.coffee
+++ b/app/locale/nl-BE.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
     inventory_tab: "Inventaris"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
   subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
     gems: "Elke maand 3500 bonus juwelen!"
diff --git a/app/locale/nl-NL.coffee b/app/locale/nl-NL.coffee
index 65635198b..a115826e8 100644
--- a/app/locale/nl-NL.coffee
+++ b/app/locale/nl-NL.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
     inventory_tab: "Inventaris"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
   subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
     gems: "3500 extra edelstenen elke maand!"
diff --git a/app/locale/nn.coffee b/app/locale/nn.coffee
index abd524c7f..c5e738440 100644
--- a/app/locale/nn.coffee
+++ b/app/locale/nn.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
 #  game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/no.coffee b/app/locale/no.coffee
index 72c06c055..05568aeac 100644
--- a/app/locale/no.coffee
+++ b/app/locale/no.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/pl.coffee b/app/locale/pl.coffee
index d5f1e561d..51ebbf0a5 100644
--- a/app/locale/pl.coffee
+++ b/app/locale/pl.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
     inventory_tab: "Ekwipunek"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/pt-BR.coffee b/app/locale/pt-BR.coffee
index 344b6fb29..1813e9619 100644
--- a/app/locale/pt-BR.coffee
+++ b/app/locale/pt-BR.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "Português do Brasil", englishDescription:
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
     inventory_tab: "Inventário"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "Português do Brasil", englishDescription:
   subscribe:
     subscribe_title: "Inscrever-se"
     unsubscribe: "Desinscrever-se"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
     levels: "Desbloqueie 17 níveis extras! Com 5 novos toda semana!"
     heroes: "Mais poderosos heróis!"
     gems: "3500 gemas bônus todo mês!"
diff --git a/app/locale/pt-PT.coffee b/app/locale/pt-PT.coffee
index 573b1cbdc..66400af18 100644
--- a/app/locale/pt-PT.coffee
+++ b/app/locale/pt-PT.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
     tip_reusable_software: "Antes de um software poder ser reutilizável, primeiro tem de ser utilizável."
     tip_optimization_operator: "Todas as linguagens têm um operador de otimização. Na maior parte delas esse operador é ‘//’."
     tip_lines_of_code: "Medir o progresso em programação pelo número de linhas de código é como medir o progresso da construção de um avião pelo peso. — Bill Gates"
+    tip_source_code: "Quero mudar o mundo, mas não há maneira de me darem o código-fonte."
+    tip_javascript_java: "Java é para JavaScript o mesmo que Carro (Car) para Tapete (Carpet). - Chris Heilmann"
 
   game_menu:
     inventory_tab: "Inventário"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
   subscribe:
     subscribe_title: "Subscrever"
     unsubscribe: "Cancelar Subscrição"
+    confirm_unsubscribe: "Confirmar Cancelamento da Subscrição"
+    never_mind: "Não Importa, Gostamos de Ti à Mesma"
+    thank_you_months_prefix: "Obrigado por nos teres apoiado neste(s) último(s)"
+    thank_you_months_suffix: "mês(meses)."
+    thank_you: "Obrigado por apoiares o CodeCombat."
+    sorry_to_see_you_go: "Lamentamos ver-te partir! Por favor, diz-nos o que podíamos ter feito melhor."
+    unsubscribe_feedback_placeholder: "Oh, o que fomos fazer?"
     levels: "Pratica mais com níveis bónus!"
     heroes: "Heróis mais poderosos!"
     gems: "3500 gemas de bónus todos os meses!"
@@ -856,8 +865,8 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
     price: "Preço"
     gems: "Gemas"
     active: "Activa"
-    subscribed: "Subscrito"
-    unsubscribed: "Não Subscrito"
+    subscribed: "Subscrito(a)"
+    unsubscribed: "Não Subscrito(a)"
     active_until: "Ativa Até"
     cost: "Custo"
     next_payment: "Próximo Pagamento"
diff --git a/app/locale/ro.coffee b/app/locale/ro.coffee
index e32acaa71..2d13f066e 100644
--- a/app/locale/ro.coffee
+++ b/app/locale/ro.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/ru.coffee b/app/locale/ru.coffee
index faa650fdf..0e20791d5 100644
--- a/app/locale/ru.coffee
+++ b/app/locale/ru.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
     tip_reusable_software: "Прежде, чем программное обеспечение станет повторно используемым, оно должно стать в принципе используемым."
     tip_optimization_operator: "В каждом языке есть оператор оптимизации. В большинстве языков это оператор ‘//’"
     tip_lines_of_code: "Измерение прогресса программирования в строках кода - это как измерять прогресс построения самолета по его весу. — Bill Gates"
+    tip_source_code: "Я хочу изменить мир, но они вряд ли дадут мне исходники."
+    tip_javascript_java: "Java к JavaScript относится так же, как кол относится к колготкам. - Chris Heilmann (перефраз.)"
 
   game_menu:
     inventory_tab: "Инвентарь"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
   subscribe:
     subscribe_title: "Подпишись"
     unsubscribe: "Отписаться"
+    confirm_unsubscribe: "Подтвердить отмену подписки"
+    never_mind: "Неважно, Я Все Равно Тебя Люблю"
+    thank_you_months_prefix: "Спасибо Вам за поддерживание нас в течение последних"
+    thank_you_months_suffix: "месяцев."
+    thank_you: "Спасибо за поддержку CodeCombat."
+    sorry_to_see_you_go: "Жаль, что вы уходите! Пожалуйста, расскажите нам, что мы могли бы сделать лучше."
+    unsubscribe_feedback_placeholder: "О, что мы наделали?"
     levels: "Получите больше практики с бонусными уровнями!"
     heroes: "Более сильные герои!"
     gems: "3500 бонусных самоцветов каждый месяц!"
diff --git a/app/locale/sk.coffee b/app/locale/sk.coffee
index ec2b802fa..e1d7963f3 100644
--- a/app/locale/sk.coffee
+++ b/app/locale/sk.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak",
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
 #  game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak",
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/sl.coffee b/app/locale/sl.coffee
index 212f332fe..3869c1bdd 100644
--- a/app/locale/sl.coffee
+++ b/app/locale/sl.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
 #  game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/sr.coffee b/app/locale/sr.coffee
index a0981e382..92bf819db 100644
--- a/app/locale/sr.coffee
+++ b/app/locale/sr.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/sv.coffee b/app/locale/sv.coffee
index b8cb962a3..910aaff45 100644
--- a/app/locale/sv.coffee
+++ b/app/locale/sv.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
     inventory_tab: "Utrustning"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/th.coffee b/app/locale/th.coffee
index 65d00e52f..6e69a6733 100644
--- a/app/locale/th.coffee
+++ b/app/locale/th.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/tr.coffee b/app/locale/tr.coffee
index 74d380c75..dc31d6b2f 100644
--- a/app/locale/tr.coffee
+++ b/app/locale/tr.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
     inventory_tab: "Envanter"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/uk.coffee b/app/locale/uk.coffee
index 4454a735b..a88cd4e4d 100644
--- a/app/locale/uk.coffee
+++ b/app/locale/uk.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "Українська", englishDescription:
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
     inventory_tab: "Інвентар"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "Українська", englishDescription:
   subscribe:
     subscribe_title: "Взяти абонемент"
     unsubscribe: "Скасувати абонемент"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
     levels: "Розблокуйте 25 рівнів! Та отримуйте 5 нових кожного тижня!"
     heroes: "Більше могутніх героїв!"
     gems: "Щомісячний бонус 3500 самоцвітів!"
diff --git a/app/locale/ur.coffee b/app/locale/ur.coffee
index 535006934..227711849 100644
--- a/app/locale/ur.coffee
+++ b/app/locale/ur.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu",
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
 #  game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu",
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/vi.coffee b/app/locale/vi.coffee
index 51704b410..f30db598b 100644
--- a/app/locale/vi.coffee
+++ b/app/locale/vi.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/zh-HANS.coffee b/app/locale/zh-HANS.coffee
index b769ca7cb..1cc44e510 100644
--- a/app/locale/zh-HANS.coffee
+++ b/app/locale/zh-HANS.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
     inventory_tab: "道具箱"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
   subscribe:
     subscribe_title: "订阅"
     unsubscribe: "取消订阅"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
     levels: "多解锁17个关卡!每周解锁5个新关卡!"
     heroes: "更多强大的英雄!"
     gems: "每月多3500宝石奖励!"
diff --git a/app/locale/zh-HANT.coffee b/app/locale/zh-HANT.coffee
index c0cd308cd..579af99f4 100644
--- a/app/locale/zh-HANT.coffee
+++ b/app/locale/zh-HANT.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
     inventory_tab: "倉庫"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/zh-WUU-HANS.coffee b/app/locale/zh-WUU-HANS.coffee
index beea36af1..24fd6f414 100644
--- a/app/locale/zh-WUU-HANS.coffee
+++ b/app/locale/zh-WUU-HANS.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
 #  game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/locale/zh-WUU-HANT.coffee b/app/locale/zh-WUU-HANT.coffee
index c0e2deb40..5610c092c 100644
--- a/app/locale/zh-WUU-HANT.coffee
+++ b/app/locale/zh-WUU-HANT.coffee
@@ -323,6 +323,8 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio
 #    tip_reusable_software: "Before software can be reusable it first has to be usable."
 #    tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
 #    tip_lines_of_code: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates"
+#    tip_source_code: "I want to change the world but they would not give me the source code."
+#    tip_javascript_java: "Java is to JavaScript what Car is to Carpet. - Chris Heilmann"
 
   game_menu:
 #    inventory_tab: "Inventory"
@@ -369,6 +371,13 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio
 #  subscribe:
 #    subscribe_title: "Subscribe"
 #    unsubscribe: "Unsubscribe"
+#    confirm_unsubscribe: "Confirm Unsubscribe"
+#    never_mind: "Never Mind, I Still Love You"
+#    thank_you_months_prefix: "Thank you for supporting us these last"
+#    thank_you_months_suffix: "months."
+#    thank_you: "Thank you for supporting CodeCombat."
+#    sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
+#    unsubscribe_feedback_placeholder: "O, what have we done?"
 #    levels: "Get more practice with bonus levels!"
 #    heroes: "More powerful heroes!"
 #    gems: "3500 bonus gems every month!"
diff --git a/app/styles/account/subscription-view.sass b/app/styles/account/subscription-view.sass
index f95fc23c2..875d798c3 100644
--- a/app/styles/account/subscription-view.sass
+++ b/app/styles/account/subscription-view.sass
@@ -2,4 +2,17 @@
   .start-subscription-button, .end-subscription-button
     margin-bottom: 20px
     float: left
-    width: 100%
\ No newline at end of file
+    width: 100%
+
+  .unsubscribe-feedback
+    width: 100%
+
+    h3
+      margin-top: 0
+
+    textarea
+      width: 100%
+
+    button.btn
+      width: 100%
+      margin-top: 12px
diff --git a/app/styles/common/site-chrome.sass b/app/styles/common/site-chrome.sass
index c9b3c5349..d0b1b2380 100644
--- a/app/styles/common/site-chrome.sass
+++ b/app/styles/common/site-chrome.sass
@@ -111,7 +111,7 @@
   
         .user-dropdown-header
           background: #E4CF8C
-          height: 160px
+          height: auto
           padding: 10px
           text-align: center
           color: black
diff --git a/app/templates/account/subscription-view.jade b/app/templates/account/subscription-view.jade
index 48f5873b8..95e3e6952 100644
--- a/app/templates/account/subscription-view.jade
+++ b/app/templates/account/subscription-view.jade
@@ -14,6 +14,20 @@ block content
     .panel-heading
       if subscribed
         button.end-subscription-button.btn.btn-lg.btn-warning(data-i18n="subscribe.unsubscribe") Unsubscribe
+        .unsubscribe-feedback.row.secret
+          .col-lg-7
+            h3
+              if monthsSubscribed > 1
+                span(data-i18n="subscribe.thank_you_months_prefix") Thank you for supporting us these last
+                span.spl.spr= monthsSubscribed
+                span(data-i18n="subscribe.thank_you_months_suffix") months.
+              else
+                span(data-i18n="subscribe.thank_you") Thank you for supporting CodeCombat.
+            div(data-i18n="subscribe.sorry_to_see_you_go") Sorry to see you go! Please let us know what we could have done better.
+            textarea(rows=3, data-i18n="[placeholder]subscribe.unsubscribe_feedback_placeholder")
+          .col-lg-5
+            button.cancel-end-subscription-button.btn.btn-lg.btn-default(data-i18n="subscribe.never_mind") Never Mind, I Still Love You
+            button.confirm-end-subscription-button.btn.btn-lg.btn-warning(data-i18n="subscribe.confirm_unsubscribe") Confirm Unsubscribe
       else if !me.isAnonymous()
         button.start-subscription-button.btn.btn-lg.btn-success(data-i18n="subscribe.subscribe_title") Subscribe
 
diff --git a/app/templates/play/level/level_loading.jade b/app/templates/play/level/level_loading.jade
index 40fb053e1..b7b75e3bd 100644
--- a/app/templates/play/level/level_loading.jade
+++ b/app/templates/play/level/level_loading.jade
@@ -54,6 +54,8 @@
     strong.tip.rare(data-i18n='play_level.tip_brute_force') When in doubt, use brute force. - Ken Thompson
     strong.tip.rare(data-i18n='play_level.tip_extrapolation') There are only two kinds of people: those that can extrapolate from incomplete data...
     strong.tip.rare(data-i18n='play_level.tip_superpower') Coding is the closest thing we have to a superpower
+    strong.tip.rare(data-i18n='play_level.tip_source_code') I want to change the world but they would not give me the source code.
+    strong.tip.rare(data-i18n='play_level.tip_javascript_java') Java is to JavaScript what Car is to Carpet. - Chris Heilmann
     strong.tip.rare
       span(data-i18n='play_level.tip_harry') Yer a Wizard, 
       span= me.get('name', true)
diff --git a/app/views/account/SubscriptionView.coffee b/app/views/account/SubscriptionView.coffee
index 0501f535d..20e683117 100644
--- a/app/views/account/SubscriptionView.coffee
+++ b/app/views/account/SubscriptionView.coffee
@@ -2,6 +2,7 @@ RootView = require 'views/core/RootView'
 template = require 'templates/account/subscription-view'
 CocoCollection = require 'collections/CocoCollection'
 SubscribeModal = require 'views/core/SubscribeModal'
+Payment = require 'models/Payment'
 
 module.exports = class SubscriptionView extends RootView
   id: "subscription-view"
@@ -10,6 +11,8 @@ module.exports = class SubscriptionView extends RootView
   events:
     'click .start-subscription-button': 'onClickStartSubscription'
     'click .end-subscription-button': 'onClickEndSubscription'
+    'click .cancel-end-subscription-button': 'onClickCancelEndSubscription'
+    'click .confirm-end-subscription-button': 'onClickConfirmEndSubscription'
 
   subscriptions:
     'subscribe-modal:subscribed': 'onSubscribed'
@@ -20,6 +23,8 @@ module.exports = class SubscriptionView extends RootView
       options = { url: "/db/user/#{me.id}/stripe" }
       options.success = (@stripeInfo) =>
       @supermodel.addRequestResource('payment_info', options).load()
+      @payments = new CocoCollection([], { url: '/db/payment', model: Payment, comparator:'_id' })
+      @supermodel.loadCollection(@payments, 'payments')
 
   getRenderData: ->
     c = super()
@@ -33,6 +38,10 @@ module.exports = class SubscriptionView extends RootView
           c.cost = "$#{(subscription.plan.amount/100).toFixed(2)}"
       if card = @stripeInfo.cards?.data?[0]
         c.card = "#{card.brand}: x#{card.last4}"
+    if @payments?.loaded
+      c.monthsSubscribed = (x for x in @payments.models when not x.get('productID')).length  # productID is for gem purchases
+    else
+      c.monthsSubscribed = null
 
     c.stripeInfo = @stripeInfo
     c.subscribed = me.get('stripe')?.planID
@@ -47,8 +56,26 @@ module.exports = class SubscriptionView extends RootView
     document.location.reload()
 
   onClickEndSubscription: (e) ->
-    stripe = _.clone(me.get('stripe'))
-    delete stripe.planID
-    me.set('stripe', stripe)
-    me.patch({headers: {'X-Change-Plan': 'true'}})
-    @listenToOnce me, 'sync', -> document.location.reload()
+    window.tracker?.trackEvent 'Unsubscribe Start', {}
+    @$el.find('.end-subscription-button').blur().addClass 'disabled', 250
+    @$el.find('.unsubscribe-feedback').show(500).find('textarea').focus()
+
+  onClickCancelEndSubscription: (e) ->
+    window.tracker?.trackEvent 'Unsubscribe Cancel', {}
+    @$el.find('.unsubscribe-feedback').hide(500).find('textarea').blur()
+    @$el.find('.end-subscription-button').focus().removeClass 'disabled', 250
+
+  onClickConfirmEndSubscription: (e) ->
+    message = @$el.find('.unsubscribe-feedback textarea').val().trim()
+    window.tracker?.trackEvent 'Unsubscribe End', message: message
+    removeStripe = =>
+      stripe = _.clone(me.get('stripe'))
+      delete stripe.planID
+      me.set('stripe', stripe)
+      me.patch({headers: {'X-Change-Plan': 'true'}})
+      @listenToOnce me, 'sync', -> document.location.reload()
+    if message
+      $.post '/contact', message: message, subject: 'Cancellation', (response) ->
+        removeStripe()
+    else
+      removeStripe()
diff --git a/app/views/editor/campaign/CampaignLevelView.coffee b/app/views/editor/campaign/CampaignLevelView.coffee
index 235a7a31e..96358c032 100644
--- a/app/views/editor/campaign/CampaignLevelView.coffee
+++ b/app/views/editor/campaign/CampaignLevelView.coffee
@@ -103,12 +103,22 @@ module.exports = class CampaignLevelView extends CocoView
       description: 'Help video rate (%)'
       color: 'purple'
 
-    # Last day may be missing due to caching, will use this days aggregate to clean up individual graph lines
+    # Use this days aggregate to fill in missing days from the analytics data
     days = {}
-    days[day.created] = true for day in @analytics.levelCompletions.data if @analytics?.levelCompletions?.data?
-    days[day.created.replace(/-/g, '')] = true for day in @analytics.levelPlaytimes.data if @analytics?.levelPlaytimes?.data?
-    days[day.day] = true for day in @analytics.levelHelps.data if @analytics?.levelHelps?.data?
+    days["#{day.created[0..3]}-#{day.created[4..5]}-#{day.created[6..7]}"] = true for day in @analytics.levelCompletions.data if @analytics?.levelCompletions?.data?
+    days[day.created] = true for day in @analytics.levelPlaytimes.data if @analytics?.levelPlaytimes?.data?
+    days["#{day.day[0..3]}-#{day.day[4..5]}-#{day.day[6..7]}"] = true for day in @analytics.levelHelps.data if @analytics?.levelHelps?.data?
     days = Object.keys(days).sort (a, b) -> if a < b then -1 else 1
+    if days.length > 0
+      currentIndex = 0
+      currentDay = days[currentIndex]
+      currentDate = new Date(currentDay + "T00:00:00.000Z")
+      lastDay = days[days.length - 1]
+      while currentDay isnt lastDay
+        days.splice currentIndex, 0, currentDay if days[currentIndex] isnt currentDay
+        currentIndex++
+        currentDate.setUTCDate(currentDate.getUTCDate() + 1)
+        currentDay = currentDate.toISOString().substr(0, 10)
 
     # Update level completion graph data
     dayStartedMap = {}
@@ -126,17 +136,14 @@ module.exports = class CampaignLevelView extends CocoView
           pointID: "#{completionLineID}#{i}"
           values: ["Started: #{day.started}", "Finished: #{day.finished}", "Completion rate: #{rate.toFixed(2)}%"]
       # Ensure points for each day
-      if levelPoints.length < days.length
-        for i in [1..days.length - levelPoints.length]
-          day = days[days.length - i]
-          x = levelPoints[levelPoints.length - 1].x + 1
-          levelPoints.push
-            x: x
+      for day, i in days
+        if levelPoints.length <= i or levelPoints[i].day isnt day
+          levelPoints.splice i, 0,
             y: 0.0
-            started: 0
-            day: "#{day[0..3]}-#{day[4..5]}-#{day[6..7]}"
-            pointID: "#{completionLineID}#{x}"
+            day: day
             values: []
+        levelPoints[i].x = i
+        levelPoints[i].pointID = "#{completionLineID}#{i}"
       @analytics.graphs[0].lines.push
         lineID: completionLineID
         enabled: true
@@ -159,17 +166,14 @@ module.exports = class CampaignLevelView extends CocoView
           pointID: "#{playtimeLineID}#{i}"
           values: ["Average playtime: #{avg.toFixed(2)}s"]
       # Ensure points for each day
-      if playtimePoints.length < days.length
-        for i in [1..days.length - playtimePoints.length]
-          day = days[days.length - i]
-          x = playtimePoints[playtimePoints.length - 1].x + 1
-          playtimePoints.push
-            x: x
+      for day, i in days
+        if playtimePoints.length <= i or playtimePoints[i].day isnt day
+          playtimePoints.splice i, 0,
             y: 0.0
-            started: 0
-            day: "#{day[0..3]}-#{day[4..5]}-#{day[6..7]}"
-            pointID: "#{completionLineID}#{x}"
+            day: day
             values: []
+        playtimePoints[i].x = i
+        playtimePoints[i].pointID = "#{playtimeLineID}#{i}"
       @analytics.graphs[0].lines.push
         lineID: playtimeLineID
         enabled: true
@@ -187,7 +191,7 @@ module.exports = class CampaignLevelView extends CocoView
       for day, i in @analytics.levelHelps.data
         helpCount = day.alertHelps + day.paletteHelps
         started = dayStartedMap[day.day] ? 0
-        clickRate = if started > 0 then helpCount / started * 100 else -1.0
+        clickRate = if started > 0 then helpCount / started * 100 else 0
         videoRate = day.videoStarts / helpCount * 100
         helpPoints.push
           x: i
@@ -202,36 +206,30 @@ module.exports = class CampaignLevelView extends CocoView
           pointID: "#{videosLineID}#{i}"
           values: ["Help videos started: #{day.videoStarts}", "Help videos start rate: #{videoRate.toFixed(2)}%"]
       # Ensure points for each day
-      if helpPoints.length < days.length
-        for i in [1..days.length - helpPoints.length]
-          day = days[days.length - i]
-          x = helpPoints[helpPoints.length - 1].x + 1
-          helpPoints.push
-            x: x
+      for day, i in days
+        if helpPoints.length <= i or helpPoints[i].day isnt day
+          helpPoints.splice i, 0,
             y: 0.0
-            started: 0
-            day: "#{day[0..3]}-#{day[4..5]}-#{day[6..7]}"
-            pointID: "#{helpsLineID}#{x}"
+            day: day
             values: []
-      if videoPoints.length < days.length
-        for i in [1..days.length - videoPoints.length]
-          day = days[days.length - i]
-          x = videoPoints[videoPoints.length - 1].x + 1
-          helpPoints.push
-            x: x
+        helpPoints[i].x = i
+        helpPoints[i].pointID = "#{helpsLineID}#{i}"
+        if videoPoints.length <= i or videoPoints[i].day isnt day
+          videoPoints.splice i, 0,
             y: 0.0
-            started: 0
-            day: "#{day[0..3]}-#{day[4..5]}-#{day[6..7]}"
-            pointID: "#{videosLineID}#{x}"
+            day: day
             values: []
-      @analytics.graphs[0].lines.push
-        lineID: helpsLineID
-        enabled: true
-        points: helpPoints
-        description: lineMetadata[helpsLineID].description
-        lineColor: lineMetadata[helpsLineID].color
-        min: 0
-        max: 100.0
+        videoPoints[i].x = i
+        videoPoints[i].pointID = "#{videosLineID}#{i}"
+      if d3.max(helpPoints, (d) -> d.y) > 0
+        @analytics.graphs[0].lines.push
+          lineID: helpsLineID
+          enabled: true
+          points: helpPoints
+          description: lineMetadata[helpsLineID].description
+          lineColor: lineMetadata[helpsLineID].color
+          min: 0
+          max: 100.0
       if d3.max(videoPoints, (d) -> d.y) > 0
         @analytics.graphs[0].lines.push
           lineID: videosLineID
@@ -336,7 +334,7 @@ module.exports = class CampaignLevelView extends CocoView
           .attr("transform", "translate(" + (margin + yAxisWidth * graphLineCount) + "," + margin + ")")
           .attr("cx", (d) -> xRange(d.x))
           .attr("cy", (d) -> yRange(d.y))
-          .attr("r", (d) -> if d.started then Math.max(3, Math.min(10, Math.log(parseInt(d.started)))) else 4)
+          .attr("r", (d) -> if d.started then Math.max(3, Math.min(10, Math.log(parseInt(d.started)))) + 2 else 6)
           .attr("fill", line.lineColor)
           .attr("stroke-width", 1)
           .attr("class", "graph-point")
@@ -412,7 +410,7 @@ module.exports = class CampaignLevelView extends CocoView
       # console.log 'getLevelCompletions', data
       data.sort (a, b) -> if a.created < b.created then -1 else 1
       mapFn = (item) ->
-        item.rate = item.finished / item.started * 100
+        item.rate = if item.started > 0 then item.finished / item.started * 100 else 0
         item
       @analytics.levelCompletions.data = _.map data, mapFn, @
       doneCallback()
diff --git a/app/views/editor/component/ThangComponentsEditView.coffee b/app/views/editor/component/ThangComponentsEditView.coffee
index 49c8f0f97..630b46e2e 100644
--- a/app/views/editor/component/ThangComponentsEditView.coffee
+++ b/app/views/editor/component/ThangComponentsEditView.coffee
@@ -343,7 +343,7 @@ module.exports = class ThangComponentsEditView extends CocoView
     componentSystems = (c.get('system') for c in componentModels when c)
 
     for system in componentSystems
-      if system not in extantSystems
+      if system isnt 'misc' and system not in extantSystems
         s = "Component requires system <strong>#{system}</strong> which is currently not included in this level."
         noty({
           text: s,
diff --git a/scripts/devSetup/bootstrap.sh b/scripts/devSetup/bootstrap.sh
index 46099635c..6317d861c 100644
--- a/scripts/devSetup/bootstrap.sh
+++ b/scripts/devSetup/bootstrap.sh
@@ -31,7 +31,7 @@ function basicDependenciesErrorHandling {
         exit 1
         ;;
     "git")
-        echo "Please install Git.(If you're running mac, this is included in the XCode command line tools."
+        echo "Please install Git (if you're running mac, this is included in the XCode command line tools)."
     esac
  }
 
diff --git a/scripts/devSetup/configuration.py b/scripts/devSetup/configuration.py
index 2eb0be39c..80ab85198 100644
--- a/scripts/devSetup/configuration.py
+++ b/scripts/devSetup/configuration.py
@@ -14,6 +14,3 @@ class Configuration(object):
     @property
     def mem_width(self):
         return self.system.virtual_memory_address_width
-
-
-
diff --git a/scripts/devSetup/dependency.py b/scripts/devSetup/dependency.py
index 2cc726e86..6ef107dbf 100644
--- a/scripts/devSetup/dependency.py
+++ b/scripts/devSetup/dependency.py
@@ -10,4 +10,3 @@ class Dependency(object):
         raise NotImplementedError
     def install_dependencies(self):
         raise NotImplementedError
-
diff --git a/scripts/devSetup/directoryController.py b/scripts/devSetup/directoryController.py
index 5087db888..bea7cbeea 100644
--- a/scripts/devSetup/directoryController.py
+++ b/scripts/devSetup/directoryController.py
@@ -50,6 +50,3 @@ class DirectoryController(object):
         shutil.rmtree(self.bin_directory + os.sep + "mongo",ignore_errors=True)
     def remove_tmp_directory(self):
         shutil.rmtree(self.tmp_directory)
-
-
-
diff --git a/scripts/devSetup/downloader.py b/scripts/devSetup/downloader.py
index 477af3b44..2fe266489 100644
--- a/scripts/devSetup/downloader.py
+++ b/scripts/devSetup/downloader.py
@@ -38,4 +38,3 @@ class Downloader:
         else:
             stringToDisplay = '\r File size unknown. Read {0} bytes.'.format(amount_of_data_downloaded_so_far)
             print(stringToDisplay,end=' ')
-
diff --git a/scripts/devSetup/factories.py b/scripts/devSetup/factories.py
index c4acfdc59..f76099b6f 100644
--- a/scripts/devSetup/factories.py
+++ b/scripts/devSetup/factories.py
@@ -71,7 +71,7 @@ class SetupFactory(object):
         print("NOTE: brunch may need to be run as sudo if it doesn't work (ulimit needs to be set higher than default)")
         print("")
         print("Before can play any levels you must update the database. See the Setup section here:")
-        print("https://github.com/codecombat/codecombat/wiki/Developer-environment#setup")
+        print("https://github.com/codecombat/codecombat/wiki/Dev-Setup:-Linux#installing-the-database")
         print("")
         print("Go to http://localhost:3000 to see your local CodeCombat in action!")
     def cleanup(self):
@@ -145,7 +145,7 @@ class LinuxSetup(SetupFactory):
                             exit(1)
                     else:
                         print("NodeJS and MongoDB installed successfully. "
-                              "Staring MongoDB.")
+                              "Starting MongoDB.")
                         #try:
                             #subprocess.check_call(["service", "mongod", "start"])
                         #except subprocess.CalledProcessError as err:
@@ -169,4 +169,3 @@ class LinuxSetup(SetupFactory):
                         return()
                     else:
                         exit(1)
-
diff --git a/scripts/devSetup/mongo.py b/scripts/devSetup/mongo.py
index 46814ce8d..957e6cf58 100644
--- a/scripts/devSetup/mongo.py
+++ b/scripts/devSetup/mongo.py
@@ -105,5 +105,3 @@ class MacMongoDBDownloader(MongoDBDownloader):
     @property
     def download_url(self):
         return u"http://fastdl.mongodb.org/osx/mongodb-osx-x86_64-2.6.6.tgz"
-
-
diff --git a/scripts/devSetup/node.py b/scripts/devSetup/node.py
index d6915e8a0..9c8fc574f 100644
--- a/scripts/devSetup/node.py
+++ b/scripts/devSetup/node.py
@@ -60,7 +60,7 @@ class Node(Dependency):
             shutil.copytree(self.findUnzippedNodePath(),install_directory)
         wants_to_upgrade = True
         if self.check_if_executable_installed(u"npm"):
-            warning_string = u"A previous version of npm has been found. \nYou may experience problems if you have a version of npm that's too old.Would you like to upgrade?(y/n) "
+            warning_string = u"A previous version of npm has been found. \nYou may experience problems if you have a version of npm that's too old. Would you like to upgrade?(y/n) "
             from distutils.util import strtobool
             print(warning_string)
             #for bash script, you have to somehow redirect stdin to raw_input()
@@ -158,5 +158,3 @@ class MacNodeDownloader(NodeDownloader):
             return u"http://nodejs.org/dist/v0.10.35/node-v0.10.35-darwin-x64.tar.gz"
         else:
             return u"http://nodejs.org/dist/v0.10.35/node-v0.10.35-darwin-x86.tar.gz"
-
-
diff --git a/scripts/devSetup/repositoryInstaller.py b/scripts/devSetup/repositoryInstaller.py
index 7262466fe..d612eb4b4 100644
--- a/scripts/devSetup/repositoryInstaller.py
+++ b/scripts/devSetup/repositoryInstaller.py
@@ -20,7 +20,7 @@ class RepositoryInstaller():
             #http://stackoverflow.com/questions/9329243/xcode-4-4-and-later-install-command-line-tools
         if not self.checkIfCurlExecutableExists():
             if self.config.system.operating_system == "linux":
-                raise errors.CoCoError("Curl is missing. Please install it(try 'sudo apt-get install curl')\nIf you are not using Ubuntu then please see your Linux Distribution's documentation for help installing curl.")
+                raise errors.CoCoError("Curl is missing. Please install it (try 'sudo apt-get install curl')\nIf you are not using Ubuntu then please see your Linux Distribution's documentation for help installing curl.")
             elif self.config.system.operating_system == "mac":
                 raise errors.CoCoError("Curl is missing. Please install the Xcode command line tools.")
             raise errors.CoCoError(u"Git is missing. Please install git.")
diff --git a/scripts/devSetup/setup.py b/scripts/devSetup/setup.py
index 5c4165bdc..2d2c2ed97 100644
--- a/scripts/devSetup/setup.py
+++ b/scripts/devSetup/setup.py
@@ -40,9 +40,7 @@ def check_if_root():
         raise errors.CoCoError(u"You need to be root. Run as sudo.")
 
 if __name__ == u"__main__":
-    print("Code Combat Development Environment Setup Script")
+    print("CodeCombat Development Environment Setup Script")
     check_if_root()
     setup = factories.constructSetup()
     setup.setup()
-
-
diff --git a/server/achievements/Achievement.coffee b/server/achievements/Achievement.coffee
index 33675e7ee..d3046546e 100644
--- a/server/achievements/Achievement.coffee
+++ b/server/achievements/Achievement.coffee
@@ -15,6 +15,22 @@ AchievementSchema = new mongoose.Schema({
   userField: String
 }, {strict: false})
 
+AchievementSchema.index(
+  {
+    _fts: 'text'
+    _ftsx: 1
+  },
+  {
+    name: 'search index'
+    sparse: true
+    weights: {name: 1}
+    default_language: 'english'
+    'language_override': 'language'
+    'textIndexVersion': 2
+  })
+AchievementSchema.index({i18nCoverage: 1}, {name: 'translation coverage index', sparse: true})
+AchievementSchema.index({slug: 1}, {name: 'slug index', sparse: true, unique: true})
+
 AchievementSchema.methods.objectifyQuery = ->
   try
     @set('query', JSON.parse(@get('query'))) if typeof @get('query') == 'string'
diff --git a/server/analytics/AnalyticsLogEvent.coffee b/server/analytics/AnalyticsLogEvent.coffee
index 18a146346..be9a5b461 100644
--- a/server/analytics/AnalyticsLogEvent.coffee
+++ b/server/analytics/AnalyticsLogEvent.coffee
@@ -11,6 +11,7 @@ AnalyticsLogEventSchema = new mongoose.Schema({
   event: String
   properties: mongoose.Schema.Types.Mixed
 }, {strict: false})
+
 AnalyticsLogEventSchema.index({event: 1, _id: 1})
 
 module.exports = AnalyticsLogEvent = mongoose.model('analytics.log.event', AnalyticsLogEventSchema)
diff --git a/server/analytics/AnalyticsUsersActive.coffee b/server/analytics/AnalyticsUsersActive.coffee
index 95614335d..8182a596d 100644
--- a/server/analytics/AnalyticsUsersActive.coffee
+++ b/server/analytics/AnalyticsUsersActive.coffee
@@ -7,4 +7,7 @@ AnalyticsUsersActiveSchema = new mongoose.Schema({
     'default': Date.now
 }, {strict: false})
 
+AnalyticsUsersActiveSchema.index({created: 1})
+AnalyticsUsersActiveSchema.index({creator: 1})
+
 module.exports = AnalyticsUsersActive = mongoose.model('analytics.users.active', AnalyticsUsersActiveSchema)
diff --git a/server/articles/Article.coffee b/server/articles/Article.coffee
index 1645b15b6..df242e771 100644
--- a/server/articles/Article.coffee
+++ b/server/articles/Article.coffee
@@ -3,6 +3,32 @@ plugins = require '../plugins/plugins'
 
 ArticleSchema = new mongoose.Schema(body: String, {strict: false})
 
+ArticleSchema.index(
+  {
+    index: 1
+    _fts: 'text'
+    _ftsx: 1
+  },
+  {
+    name: 'search index'
+    sparse: true
+    weights: {body: 1, name: 1}
+    default_language: 'english'
+    'language_override': 'searchLanguage'
+    'textIndexVersion': 2
+  })
+ArticleSchema.index(
+  {
+    original: 1
+    'version.major': -1
+    'version.minor': -1
+  },
+  {
+    name: 'version index'
+    unique: true
+  })
+ArticleSchema.index({slug: 1}, {name: 'slug index', sparse: true, unique: true})
+
 ArticleSchema.plugin(plugins.NamedPlugin)
 ArticleSchema.plugin(plugins.VersionedPlugin)
 ArticleSchema.plugin(plugins.SearchablePlugin, {searchable: ['body', 'name']})
diff --git a/server/campaigns/Campaign.coffee b/server/campaigns/Campaign.coffee
index b0fad1371..b32d72cf1 100644
--- a/server/campaigns/Campaign.coffee
+++ b/server/campaigns/Campaign.coffee
@@ -3,6 +3,9 @@ plugins = require '../plugins/plugins'
 
 CampaignSchema = new mongoose.Schema(body: String, {strict: false})
 
+CampaignSchema.index({i18nCoverage: 1}, {name: 'translation coverage index', sparse: true})
+CampaignSchema.index({slug: 1}, {name: 'slug index', sparse: true, unique: true})
+
 CampaignSchema.plugin(plugins.NamedPlugin)
 CampaignSchema.plugin(plugins.TranslationCoveragePlugin)
 
diff --git a/server/levels/Level.coffee b/server/levels/Level.coffee
index 95d2bc4b7..b27264615 100644
--- a/server/levels/Level.coffee
+++ b/server/levels/Level.coffee
@@ -6,6 +6,32 @@ LevelSchema = new mongoose.Schema({
   description: String
 }, {strict: false})
 
+LevelSchema.index(
+  {
+    index: 1
+    _fts: 'text'
+    _ftsx: 1
+  },
+  {
+    name: 'search index'
+    sparse: true
+    weights: {description: 1, name: 1}
+    default_language: 'english'
+    'language_override': 'searchLanguage'
+    'textIndexVersion': 2
+  })
+LevelSchema.index(
+  {
+    original: 1
+    'version.major': -1
+    'version.minor': -1
+  },
+  {
+    name: 'version index'
+    unique: true
+  })
+LevelSchema.index({slug: 1}, {name: 'slug index', sparse: true, unique: true})
+
 LevelSchema.plugin(plugins.NamedPlugin)
 LevelSchema.plugin(plugins.PermissionsPlugin)
 LevelSchema.plugin(plugins.VersionedPlugin)
diff --git a/server/levels/components/LevelComponent.coffee b/server/levels/components/LevelComponent.coffee
index a714129c0..46f36822f 100644
--- a/server/levels/components/LevelComponent.coffee
+++ b/server/levels/components/LevelComponent.coffee
@@ -7,6 +7,32 @@ LevelComponentSchema = new mongoose.Schema {
   system: String
 }, {strict: false}
 
+LevelComponentSchema.index(
+  {
+    index: 1
+    _fts: 'text'
+    _ftsx: 1
+  },
+  {
+    name: 'search index'
+    sparse: true
+    weights: {description: 1, name: 1, searchStrings: 1}
+    default_language: 'english'
+    'language_override': 'searchLanguage'
+    'textIndexVersion': 2
+  })
+LevelComponentSchema.index(
+  {
+    original: 1
+    'version.major': -1
+    'version.minor': -1
+  },
+  {
+    name: 'version index'
+    unique: true
+  })
+LevelComponentSchema.index({slug: 1}, {name: 'slug index', sparse: true, unique: true})
+
 LevelComponentSchema.plugin plugins.NamedPlugin
 LevelComponentSchema.plugin plugins.PermissionsPlugin
 LevelComponentSchema.plugin plugins.VersionedPlugin
diff --git a/server/levels/feedbacks/LevelFeedback.coffee b/server/levels/feedbacks/LevelFeedback.coffee
index 523bf9120..8d004c48b 100644
--- a/server/levels/feedbacks/LevelFeedback.coffee
+++ b/server/levels/feedbacks/LevelFeedback.coffee
@@ -10,4 +10,7 @@ LevelFeedbackSchema = new mongoose.Schema({
     'default': Date.now
 }, {strict: false})
 
+LevelFeedbackSchema.index({created: 1})
+LevelFeedbackSchema.index({creator: 1})
+
 module.exports = LevelFeedback = mongoose.model('level.feedback', LevelFeedbackSchema)
diff --git a/server/levels/level_handler.coffee b/server/levels/level_handler.coffee
index 1831b5b35..aa6adeacb 100644
--- a/server/levels/level_handler.coffee
+++ b/server/levels/level_handler.coffee
@@ -358,6 +358,8 @@ LevelHandler = class LevelHandler extends Handler
     # TODO: An uncached call takes about 5s for dungeons-of-kithgard locally
     # TODO: This is very similar to getLevelCompletionsBySlugs(), time to generalize analytics APIs?
 
+    # TODO: exclude admin data
+
     levelSlugs = req.query.slugs or req.body.slugs
     startDay = req.query.startDay or req.body.startDay
     endDay = req.query.endDay or req.body.endDay
diff --git a/server/levels/sessions/LevelSession.coffee b/server/levels/sessions/LevelSession.coffee
index 46420907a..8285e6790 100644
--- a/server/levels/sessions/LevelSession.coffee
+++ b/server/levels/sessions/LevelSession.coffee
@@ -11,6 +11,20 @@ LevelSessionSchema = new mongoose.Schema({
     type: Date
     'default': Date.now
 }, {strict: false})
+
+LevelSessionSchema.index({creator: 1})
+LevelSessionSchema.index({level: 1})
+LevelSessionSchema.index({levelID: 1})
+LevelSessionSchema.index({'level.majorVersion': 1})
+LevelSessionSchema.index({'level.original': 1}, {name: 'Level Original'})
+LevelSessionSchema.index({'level.original': 1, 'level.majorVersion': 1, 'creator': 1, 'team': 1})
+LevelSessionSchema.index({playtime: 1}, {name: 'Playtime'})
+LevelSessionSchema.index({submitDate: 1})
+LevelSessionSchema.index({submitted: 1}, {sparse: true})
+LevelSessionSchema.index({team: 1}, {sparse: true})
+LevelSessionSchema.index({totalScore: 1}, {sparse: true})
+LevelSessionSchema.index({user: 1, changed: -1}, {name: 'last played index', sparse: true})
+
 LevelSessionSchema.plugin(plugins.PermissionsPlugin)
 LevelSessionSchema.plugin(AchievablePlugin)
 
@@ -23,7 +37,7 @@ LevelSessionSchema.post 'init', (doc) ->
 
 LevelSessionSchema.pre 'save', (next) ->
   User = require '../../users/User'  # Avoid mutual inclusion cycles
-  @set('changed', new Date().toISOString())
+  @set('changed', new Date())
 
   id = @get('id')
   initd = id of previous
diff --git a/server/levels/systems/LevelSystem.coffee b/server/levels/systems/LevelSystem.coffee
index 87c4a2bab..0b0279baa 100644
--- a/server/levels/systems/LevelSystem.coffee
+++ b/server/levels/systems/LevelSystem.coffee
@@ -6,6 +6,32 @@ LevelSystemSchema = new mongoose.Schema {
   description: String
 }, {strict: false}
 
+LevelSystemSchema.index(
+  {
+    index: 1
+    _fts: 'text'
+    _ftsx: 1
+  },
+  {
+    name: 'search index'
+    sparse: true
+    weights: {description: 1, name: 1, name: 1}
+    default_language: 'english'
+    'language_override': 'searchLanguage'
+    'textIndexVersion': 2
+  })
+LevelSystemSchema.index(
+  {
+    original: 1
+    'version.major': -1
+    'version.minor': -1
+  },
+  {
+    name: 'version index'
+    unique: true
+  })
+LevelSystemSchema.index({slug: 1}, {name: 'slug index', sparse: true, unique: true})
+
 LevelSystemSchema.plugin(plugins.NamedPlugin)
 LevelSystemSchema.plugin(plugins.PermissionsPlugin)
 LevelSystemSchema.plugin(plugins.VersionedPlugin)
diff --git a/server/levels/thangs/ThangType.coffee b/server/levels/thangs/ThangType.coffee
index 02259caa3..605cb97a9 100644
--- a/server/levels/thangs/ThangType.coffee
+++ b/server/levels/thangs/ThangType.coffee
@@ -5,6 +5,32 @@ ThangTypeSchema = new mongoose.Schema({
   body: String,
 }, {strict: false})
 
+ThangTypeSchema.index(
+  {
+    index: 1
+    _fts: 'text'
+    _ftsx: 1
+  },
+  {
+    name: 'search index'
+    sparse: true
+    weights: {name: 1}
+    default_language: 'english'
+    'language_override': 'searchLanguage'
+    'textIndexVersion': 2
+  })
+ThangTypeSchema.index(
+  {
+    original: 1
+    'version.major': -1
+    'version.minor': -1
+  },
+  {
+    name: 'version index'
+    unique: true
+  })
+ThangTypeSchema.index({slug: 1}, {name: 'slug index', sparse: true, unique: true})
+
 ThangTypeSchema.plugin plugins.NamedPlugin
 ThangTypeSchema.plugin plugins.VersionedPlugin
 ThangTypeSchema.plugin plugins.SearchablePlugin, {searchable: ['name']}
diff --git a/server/mail/sent/MailSent.coffee b/server/mail/sent/MailSent.coffee
index f8479033a..f87bc6743 100644
--- a/server/mail/sent/MailSent.coffee
+++ b/server/mail/sent/MailSent.coffee
@@ -8,4 +8,6 @@ MailSent = new mongoose.Schema({
     'default': Date.now
 }, {strict: false})
 
+MailSent.index({user: 1}, {name: 'User'})
+
 module.exports = MailSent = mongoose.model('mail.sent', MailSent)
diff --git a/server/queues/task/ScoringTask.coffee b/server/queues/task/ScoringTask.coffee
index b6dcf27d9..e24a56130 100644
--- a/server/queues/task/ScoringTask.coffee
+++ b/server/queues/task/ScoringTask.coffee
@@ -9,4 +9,6 @@ ScoringTaskSchema = new mongoose.Schema(
   sessions: {type: Array, default: []}
 )
 
+ScoringTaskSchema.index({createdAt: 1}, {expireAfterSeconds: 3600})
+
 module.exports = mongoose.model('scoringTask', ScoringTaskSchema)
diff --git a/server/routes/contact.coffee b/server/routes/contact.coffee
index 37d7bfde9..0bc4fd465 100644
--- a/server/routes/contact.coffee
+++ b/server/routes/contact.coffee
@@ -59,8 +59,6 @@ createMailContext = (req, done) ->
     async.waterfall [
       fetchRecentSessions.bind undefined, user, context
       # Can add other data-grabbing stuff here if we want.
-      # TODO: grab platform/browser/browser version/screen size from client
-      # TODO: try automatically including Surface screenshot if opening contact form from level?
     ], (err, results) ->
       console.error "Error getting contact message context for #{sender}: #{err}" if err
       if req.body.screenshotURL
diff --git a/server/users/User.coffee b/server/users/User.coffee
index 3253344d8..61596c6f5 100644
--- a/server/users/User.coffee
+++ b/server/users/User.coffee
@@ -19,6 +19,17 @@ UserSchema = new mongoose.Schema({
     'default': Date.now
 }, {strict: false})
 
+UserSchema.index({'dateCreated': 1})
+UserSchema.index({'emailLower': 1}, {unique: true, sparse: true, name: 'emailLower_1'})
+UserSchema.index({'facebookID': 1}, {sparse: true})
+UserSchema.index({'gplusID': 1}, {sparse: true})
+UserSchema.index({'iosIdentifierForVendor': 1}, {name: 'iOS identifier for vendor', sparse: true, unique: true})
+UserSchema.index({'mailChimp.leid': 1}, {sparse: true})
+UserSchema.index({'nameLower': 1}, {sparse: true, name: 'nameLower_1'})
+UserSchema.index({'simulatedBy': 1})
+UserSchema.index({'slug': 1}, {name: 'slug index', sparse: true, unique: true})
+UserSchema.index({'stripe.subscriptionID': 1}, {unique: true, sparse: true})
+
 UserSchema.post('init', ->
   @set('anonymous', false) if @get('email')
 )
@@ -266,9 +277,6 @@ UserSchema.statics.editableProperties = [
 ]
 
 UserSchema.plugin plugins.NamedPlugin
-UserSchema.index({'stripe.subscriptionID':1}, {unique: true, sparse: true})
-UserSchema.index({'emailLower':1}, {unique: true, sparse: true, name: 'emailLower_1'})
-UserSchema.index({'nameLower':1}, {unique: true, sparse: true, name: 'nameLower_1'})
 
 module.exports = User = mongoose.model('User', UserSchema)
 
diff --git a/server/users/remarks/UserRemark.coffee b/server/users/remarks/UserRemark.coffee
index 445340c0b..15eb63a2b 100644
--- a/server/users/remarks/UserRemark.coffee
+++ b/server/users/remarks/UserRemark.coffee
@@ -8,4 +8,6 @@ UserRemarkSchema = new mongoose.Schema({
     'default': Date.now
 }, {strict: false})
 
+UserRemarkSchema.index({user: 1}, {name: 'User'})
+
 module.exports = UserRemark = mongoose.model('user.remark', UserRemarkSchema)