diff --git a/app/assets/images/pages/home/language_logo_javascript.png b/app/assets/images/pages/home/language_logo_javascript.png
new file mode 100644
index 000000000..ec8b134ae
Binary files /dev/null and b/app/assets/images/pages/home/language_logo_javascript.png differ
diff --git a/app/styles/home.sass b/app/styles/home.sass
index 2e0d77fdd..c58133fb8 100644
--- a/app/styles/home.sass
+++ b/app/styles/home.sass
@@ -32,6 +32,7 @@
     img
       display: block
       margin: 0 auto
+      @include transition(box-shadow .50s ease-in-out)
 
     text-shadow: 2px 2px 5px black
     
@@ -58,14 +59,27 @@
       color: $yellow
       font-size: 90px
       font-family: Bangers
-      @include transition(color .10s linear)
+      @include transition(color .25s ease-in-out)
           
-    &:hover div
+    &:hover div, &.hovered div
       color: lighten($yellow, 20%)
-    &:hover img
+    &:hover img, &.hovered img
       filter: brightness(1.2)
       -webkit-filter: brightness(1.2)
-      box-shadow: 0 0 5px black
+      box-shadow: 0 0 15px black
+
+    .code-language-logo
+      background-color: transparent
+      background-repeat: no-repeat
+      position: absolute
+      right: 35px
+      top: 15px
+      width: 50px
+      height: 50px
+
+      &.inverted
+        filter: invert(100%)
+        -webkit-filter: invert(100%)
 
   .code-languages
     margin: 10px 0 30px 0
diff --git a/app/templates/home.jade b/app/templates/home.jade
index d854013fc..217a40df2 100644
--- a/app/templates/home.jade
+++ b/app/templates/home.jade
@@ -74,6 +74,7 @@ block content
         h3(data-i18n="home.campaign") Campaign
         h4(data-i18n="home.for_beginners") For Beginners
       .play-text(data-i18n="home.play") Play
+      .code-language-logo
 
   a#multiplayer(href="/play/ladder")
     div.game-mode-wrapper
@@ -84,5 +85,6 @@ block content
         h3(data-i18n="home.multiplayer") Multiplayer
         h4(data-i18n="home.for_developers") For Developers
       .play-text(data-i18n="home.play") Play
+      .code-language-logo
 
   .clearfix
diff --git a/app/views/home_view.coffee b/app/views/home_view.coffee
index a117d9469..7899d7bf4 100644
--- a/app/views/home_view.coffee
+++ b/app/views/home_view.coffee
@@ -49,6 +49,10 @@ module.exports = class HomeView extends View
 
     codeLanguage = (me.get('aceConfig') ? {}).language or 'javascript'
     @$el.find(".code-language[data-code-language=#{codeLanguage}]").addClass 'selected-language'
+    @updateLanguageLogos codeLanguage
+
+  updateLanguageLogos: (codeLanguage) ->
+    @$el.find('.game-mode-wrapper .code-language-logo').css('background-image', "url(/images/pages/home/language_logo_#{codeLanguage}.png)").toggleClass 'inverted', (codeLanguage in ['io', 'coffeescript'])
 
   onCodeLanguageSelected: (e) ->
     target = $(e.target).closest('.code-language')
@@ -60,3 +64,8 @@ module.exports = class HomeView extends View
     aceConfig.language = codeLanguage
     me.set 'aceConfig', aceConfig
     me.save()  # me.patch() doesn't work if aceConfig previously existed and we switched just once
+
+    firstButton = @$el.find('#beginner-campaign .game-mode-wrapper').delay(500).addClass('hovered', 500).delay(500).removeClass('hovered', 500)
+    lastButton = @$el.find('#multiplayer .game-mode-wrapper').delay(1000).addClass('hovered', 500).delay(500).removeClass('hovered', 500)
+    $('#page-container').animate {scrollTop: firstButton.offset().top - 100, easing: 'easeInOutCubic'}, 500
+    @updateLanguageLogos codeLanguage