Refactoring

diff --git a/build.sbt b/build.sbt
index 479e6f1..f45f121 100644
--- a/build.sbt
+++ b/build.sbt
@@ -23,15 +23,14 @@ lazy val server = project.in(file("server"))
 lazy val jsClient = project.in(file("js-client"))
   .settings((commonSettings ++ scalaJSSettings): _*)
   .settings(unmanagedSourceDirectories in Compile += baseDirectory.value / "../shared")
+  .settings(persistLauncher := true)
+  .settings(skip in packageJSDependencies := false)
   .settings(libraryDependencies ++= Seq(
     "org.scala-lang.modules.scalajs" %%% "scalajs-dom" % "0.6",
     "org.scalajs" %%% "transportjavascript" % "0.1-SNAPSHOT",
     "com.lihaoyi" %%% "upickle" % "0.2.5"))
-  .settings(jsDependencies ++= Seq (
-    "org.webjars" % "sockjs-client" % "0.3.4" / "sockjs.min.js",
-    "org.webjars" % "react" % "0.11.1" / "react-with-addons.js" commonJSName "React"))
-  .settings(persistLauncher := true)
-  .settings(skip in packageJSDependencies := false)
+  .settings(jsDependencies +=
+    "org.webjars" % "sockjs-client" % "0.3.4" / "sockjs.min.js")
   .dependsOn(reactUi)

 lazy val jvmClient = project.in(file("jvm-client"))
@@ -45,8 +44,11 @@ lazy val jvmClient = project.in(file("jvm-client"))
 lazy val reactUi = project.in(file("react-ui"))
   .settings((commonSettings ++ scalaJSSettings): _*)
   .settings(unmanagedSourceDirectories in Compile += baseDirectory.value / "../shared")
+  .settings(skip in packageJSDependencies := false)
   .settings(libraryDependencies ++= Seq(
     "org.scalajs" %%% "transportjavascript" % "0.1-SNAPSHOT",
     "org.scala-lang.modules.scalajs" %%% "scalajs-dom" % "0.6",
     "com.github.japgolly.scalajs-react" %%% "core" % "0.5.1",
     "com.lihaoyi" %%% "upickle" % "0.2.5"))
+  .settings(jsDependencies +=
+    "org.webjars" % "react" % "0.11.1" / "react-with-addons.js" commonJSName "React")
diff --git a/js-client/css/survivor.css b/js-client/css/survivor.css
deleted file mode 100644
index b8e1adf..0000000
--- a/js-client/css/survivor.css
+++ /dev/null
@@ -1,1033 +0,0 @@
-/** @license
- *
- * SURVIVOR: A HTML + CSS + JavaScript prototype
- * based on the Commodore 64 version of Survivor from 1983
- *
- * http://schillmania.com/survivor/
- * http://www.flickr.com/photos/schill/sets/72157628885315581/
- * http://github.com/scottschiller/
- *
- * Scott Schiller wrote this beginning in December 2011, while on a plane to Hawaii.
- * Code provided under the Attribution-NonCommercial 3.0 Unported (CC BY-NC 3.0) License:
- * http://creativecommons.org/licenses/by-nc/3.0/
- *
- */
-
-body {
- font: normal 1em "helvetica neue", helvetica, arial, sans-serif;
- color: #ccc;
- /* hide and scroll. */
- overflow: hidden;
- /* grid-tile.png */
- background: #000 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAABlBMVEUAAAD+/v7KB/Q9AAAAAnRSTlMAM8lDrC4AAAAQSURBVAhbY1zFAAMNg5EFALt0CCw/8KEzAAAAAElFTkSuQmCC);
- /* don't allow highlighting / selection, by accidental click + drag etc. */
- -ms-user-select: none;
- -moz-user-select: none;
- -webkit-user-select: none;
- user-select: none;
-}
-
-#c64 h1,
-#c64 h2,
-#c64 h3,
-#c64 p {
- margin: 0.5em 0px;
- padding: 0px;
- font-size: 21px;
- line-height: 30px;
- font-weight: normal;
- color: #a6a6ff;
-}
-
-#c64 h1,
-#c64 h2 {
- text-align: center;
-}
-
-#c64 h3 {
- margin-bottom: 0px;
-}
-
-#c64 p {
- margin: 0px;
- line-height: 22px;
-}
-
-#c64 .loading {
- display: none;
-}
-
-#c64 #go_go_go {
- /* inside joke. */
- display: none;
-}
-
-@font-face {
-    /**
-     * http://style64.org/c64-truetype
-     * see license.txt in font directory for details.
-     */
-    font-family: "C64 User Mono";
-    src: url("../font/C64_User_Mono_v1.0-STYLE.eot");
-}
-
-@font-face {
-    /**
-     * http://style64.org/c64-truetype
-     * see license.txt in font directory for details.
-     */
-    font-family: "C64 User Mono";
-    src: url("../font/C64_User_Mono_v1.0-STYLE.ttf") format("truetype"), url("../font/C64_User_Mono_v1.0-STYLE.woff") format("woff");
-}
-
-.c64 {
- /* generic "use this font" class */
- font-family: "C64 User Mono";
-}
-
-#c64 {
- position: absolute;
- left: 50%;
- top: 50%;
- /* 640x480, before border etc. */
- width: 820px;
- height: 615px;
- margin: -371px 0px 0px -474px;
- background: #4444e7;
- border: 64px solid #a6a6ff;
- padding: 2px;
- font-family: "C64 User Mono";
- color: #fff;
-}
-
-#c64 #cursor {
- width: 20px;
- height: 20px;
- /* a tiny animated .GIF */
- background: transparent url(data:image/gif;base64,R0lGODlhDwAPAPAAAEBA4KCg/yH/C05FVFNDQVBFMi4wAwEAAAAh+QQEKAD/ACwAAAAADwAPAEACDYSPqcvtD6OctNqLZwEAIfkEBSgAAAAsAAAAAA8ADwAAAg2Mj6nL7Q+jnLTai2cBADs=);
- margin: 2px 0px 0px 2px;
-}
-
-#screens {
- position: fixed;
- left: 0px;
- top: 0px;
- width: 100%;
- height: 100%;
- z-index: 1;
-}
-
-#screen-list {
- list-style-type: none;
-}
-
-#screen-list,
-#screen-list li {
- margin: 0px;
- padding: 0px;
-}
-
-#screen-list li {
- position: absolute;
- left: 0px;
- top: 0px;
- width: 100%;
- height: 100%;
- z-index: 3;
- /* by default, hide. */
- display: none;
-}
-
-#screen-list li#boot-screen {
- /* initially, show this one. */
- display: block;
-}
-
-#level-end-sequence {
- background: #000;
-}
-
-#title-screen {
- background: #000;
- text-align: center;
- cursor: pointer;
- display: none;
-}
-
-#title-screen h1,
-#title-screen h2,
-#title-screen h3 {
- font-family: "C64 User Mono";
- font-size: 13px;
- line-height: 20px;
- font-weight: normal;
-}
-
-#title-screen #title-content {
- position: absolute;
- top: 50%;
- left: 50%;
- width: 630px;
- height: 190px;
- margin: -95px 0px 0px -320px;
-}
-
-#title-screen #title-header {
- position: relative;
- width: 609px;
- height: 100px;
- font-size: 0px;
- line-height: 100px;
- margin: 0px auto;
- padding: 0px;
- overflow: hidden;
- /* title-screen-letter-tile.gif */
-  background: #000 url(../image/title-screen-letter-tile.gif);
-}
-
-#title-screen #title-header h1 {
- position: relative;
- width: 609px;
- height: 100px;
- font-size: 0px; /* hack */
- line-height: 100px; /* hack */
- overflow: hidden;
- text-indent: -999em;
- /* title-screen-cutout.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAmEAAABkAgMAAACzyQ9CAAAACVBMVEUAAAAAAAD///+D3c/SAAAAAXRSTlMAQObYZgAAAAFiS0dEAmYLfGQAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAidEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVAgb24gYSBNYWOHqHdDAAADBElEQVRo3u2bTXLkIAyFGxXZs5n7cIRZJKecWcwRfJ9svI+rmGn/DcYWehZQ1VWBRZLqVj8/xIcsnMR8PF5zfNLjVUd31p11Z93ZvWHnr+F39NIPv7zw/L69ub22j7efh/e4OE7r3/j6k+gk2kvOptszmopzMrI6U7Sa423dUOxsYHVC5GzQCutHyOgMu7OgXgz9mDI64+5sKlAuwywDGmnnH6pglgGN1MwMVTDjQSP19McqmPGgkRqZqQpmPGiknn2oghkPGumJGapgxoJGNcp574K6M6g/2/snacR9FjfMx7Eny2mlvVyk3VezO+vOurPurDvrzrqzb92fff56QI3aHtdgJNpU9XzbcjWnl3UWXncH4Odb39CWn50ZHWimoTGz5syrQLONK8bTmVOB5ho6c6szqwKtMWazMxVorTFb9qYGtNaYLc40oLXGbHGmAa01Zoszo0ShJWbrPcDrUGja/1BzaMr8vW1/T5J7LjYn+n37xWTcV82fTl++HZNoV+lpB6AOIjGl3fYZsRHY0iO07W3lc8AElEEkpjRn5vRz2G8dno3Px1xoU0Ga/l9mWFfLZIpyPuasXbqaboNo4KscElPnvOkjZOw6y5Cpi0jMWbs0ZxtEOYSQmDo5c3EBWCHKIoTEnLTVORuPEGURQmJO2sX1bLnSVxYhJKbKatq4bBigZ0NiTtrl9wAP9GxITI2cmUNT7oCeDYlJtctzZoGjARJz8RmuJxOelQ0+XR9/7PGen18fx5krzDL6g1fmzB96LQ8g5GHMdu0KXZADEHIgZoU7YLnOlELkABgdrk3X+TQ3TpdGEQNUOGJEfO50aY9neQ8gxO8ETpuYxLsbp0uniJErHEHXcexpiJuLNF8rapOY9wsUjLz+EiNG1CaEZwPUoLsxYoUjZH9b4UGQAypVGuMkbUJqolSFrCJGrHCE3Eek1t0oYsQqSGyTl+up3Gk6yA3RiDst1iagX5Fvdk4RI1VBAno8Jz50scAN0V5Wb17b9P/Euj26s+6sO+vOurPW4y/KjsjB18CxHAAAAABJRU5ErkJggg==) no-repeat 50% 50%;
-}
-
-#help-screen,
-#game-over-screen,
-#level-passed-screen {
- background: #000;
- cursor: pointer;
- display: block;
-}
-
-#help-screen,
-#game-over-screen,
-#level-passed-screen {
- background-color: rgba(0,0,0,0.85);
-}
-
-#level-passed-screen .bd,
-#game-over-screen .bd,
-#help-screen .bd {
- position: absolute;
- left: 0px;
- top: 50%;
- width: 100%;
- margin-top: 0px; /* set via JS */
- text-align: center;
-}
-
-#help-screen .bd {
- text-align: left;
- font-size: 12px;
- line-height: 16px;
-}
-
-#level-passed-screen .bd .wrapper {
- text-align: left;
-}
-
-#level-passed-screen .fixed,
-#game-over-screen .fixed {
- /* fixed-width items */
- text-align: left;
- max-width: 18em;
- margin-bottom: 0.25em;
-}
-
-#game-over-screen .fixed {
- margin-left: auto;
- margin-right: auto;
-}
-
-#level-passed-screen .fixed .icon,
-#game-over-screen .fixed .icon {
- position: relative;
- display: inline-block;
- vertical-align: middle;
-}
-
-#level-passed-screen .fixed.bad-guy,
-#game-over-screen .fixed.bad-guy {
- /* special display tweak */
- position: relative;
- display: block;
- width: auto;
- height: auto;
- overflow: visible;
-}
-
-#level-passed-screen .fixed.bad-guy .icon,
-#game-over-screen .fixed.bad-guy .icon {
- /* special display tweak */
- margin-right: 8px;
- height: 24px;
- background-position: 0px -51px;
-}
-
-#help-screen .bd .wrapper,
-#level-passed-screen .bd .wrapper {
- position: relative;
- margin: 0px auto;
- padding: 1em;
- max-width: 42em;
-}
-
-#help-screen .bd .wrapper {
- max-width: 60em;
-}
-
-body.show-help #help-screen {
- display: block;
-}
-
-body.show-help #world-container {
- /* a little gratuitous filter nonsense, why not. */
- -webkit-filter: blur(1px);
-}
-
-#world-container {
- position: absolute;
- left: 0px;
- top: 0px;
- width: 100%;
- height: 100%;
- display: none;
-}
-
-#world {
- /* container for everything. */
- position: absolute;
- left: 0px;
- top: 0px;
- /* will be resized via JS ... */
- width: 0px;
- height: 0px;
- _background: #000;
-}
-
-.space {
- /* the final frontier. */
- /*
- background-color: #000;
- */
-}
-
-.stars {
- display: none;
- position:fixed;
- left: 0px;
- top: 0px;
- width: 100%;
- height: 100%;
- /* background image? parallax? */
-}
-
-.ship,
-.ship-gunfire,
-.bad-guy,
-.turret,
-.turret-gunfire,
-.block,
-.wall {
- position: absolute;
- width: 31px;
- height: 31px;
- overflow: hidden;
-}
-
-.transform-sprite {
- position: absolute;
- top: 0px;
- left: 0px;
- width: 32px;
- height: 128px;
- overflow: visible;
-}
-
-/* except turret gunfire, which is relative to container. */
-.turret {
- overflow: visible;
-}
-
-#world.hide-wall .wall,
-#world.hide-ship .ship,
-#world.hide-ship-gunfire .ship-gunfire,
-#world.hide-bad-guy .bad-guy,
-#world.hide-turret .turret,
-#world.hide-turret-gunfire .turret-gunfire,
-#world.hide-block .block,
-#world.hide-spaceball .spaceball {
- /* for performance testing? */
- display: none !important;
-}
-
-.ship {
- position: absolute;
- /* ship.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAABTUlEQVR42tWWsUoEMRRFB8VCxEZEdz/DxsJCLLdwLLe1EUvBynZawcZfyOeILJZ262IhaGOxiAZ24kGyEJKQFxMsvHBgCHlzhkxmXprf5Ppo37g0Nen7flgjon4dtiXJGDR0FaJjeINxSmIcOknk1a/CCO5gASaQMbABczAxmTGmBeWLiILW3uM0Uj+DgS87gK/I5KmxCUQ2zHmAR6/uAy4aG1FmkxRZmYuGG9hpSEqmrUQWhbJXOM/d4pOERJLNYEVQ2BdPSkU2bY5ImUQO99QPQlRsmYxPrSh2T0HkCUL+rah+6f50M8jbuz5t/gdbGGqnOYJNOINnKJEs6STRCF6cggJJQsbgGpzAPSy8gqcMyQS0KGNgCz59AVzB7rLxce0+vdf4ov1Mw1Bq5ZfS70rqZ9K54R1uYZAtCmVzTxImelSSRcEZpCmJLJLzDQ0QSrGhWeNgAAAAAElFTkSuQmCC) no-repeat 50% 50%;
- width: 26px;
- height: 26px;
- padding: 3px;
- border-radius: 32px;
- -moz-transform: rotate(0deg), scale3d(1,1,1);
- -moz-transition: box-shadow 0.2s ease-in-out;
- -moz-transition-property: -moz-transform, box-shadow;
- -ms-transform: rotate(0deg), scale3d(1,1,1);
- -ms-transition: box-shadow 0.2s ease-in-out;
- -ms-transition-property: -ms-transform, box-shadow;
- -webkit-transform: rotate(0deg), scale3d(1,1,1);
- -webkit-transition: box-shadow 0.2s ease-in-out;
- -webkit-transition-property: -webkit-transform, box-shadow;
- -o-transform: rotate(0deg), scale3d(1,1,1);
- -o-transition-property: -o-transform, box-shadow;
-}
-
-.ship.hidden {
- -webkit-transition: none;
- -moz-transition: none;
- -ms-transition: none;
- -o-transition: none;
- -webkit-transform: scale3d(0,0,1) !important;
- -moz-transform: scale3d(0,0,1) !important;
- -ms-transform: scale3d(0,0,1) !important;
- -o-transform: scale3d(0,0,1) !important;
- *display: none; /* IE 8 */
-}
-
-@-moz-keyframes thrustpulse {
-  from {
-    box-shadow: 0px 0px 0px rgba(255,32,32,0);
-  }
-  to {
-    box-shadow: 0px 0px 16px rgba(255,32,32,1);
-  }
-}
-
-@-webkit-keyframes thrustpulse {
-  from {
-    box-shadow: 0px 0px 0px rgba(255,32,32,0);
-  }
-  to {
-    box-shadow: 0px 0px 16px rgba(255,32,32,1);
-  }
-}
-
-.ship.thrusting {
- /* different background image? */
- box-shadow: 0px 0px 8px rgba(255,32,32,1);
- -moz-animation-duration: 0.5s;
- -moz-animation-name: thrustpulse;
- -moz-animation-iteration-count: infinite;
- -moz-animation-direction: alternate;
- -webkit-animation-duration: 0.5s;
- -webkit-animation-name: thrustpulse;
- -webkit-animation-iteration-count: infinite;
- -webkit-animation-direction: alternate;
-}
-
-.ship-thrust-up {
- -moz-transform: rotate(0deg);
- -ms-transform: rotate(0deg);
- -webkit-transform: rotate(0deg);
-}
-
-.ship.thrust-up.thrust-left {
- -moz-transform: rotate(-45deg);
- -ms-transform: rotate(-45deg);
- -webkit-transform: rotate(-45deg);
-}
-
-.ship.thrust-up.thrust-right {
- -moz-transform: rotate(45deg);
- -ms-transform: rotate(45deg);
- -webkit-transform: rotate(45deg);
-}
-
-.ship.thrust-right {
- -moz-transform: rotate(90deg);
- -ms-transform: rotate(90deg);
- -webkit-transform: rotate(90deg);
-}
-
-.ship.thrust-down {
- -moz-transform: rotate(180deg);
- -ms-transform: rotate(180deg);
- -webkit-transform: rotate(180deg);
-}
-
-.ship.thrust-down.thrust-left {
- -moz-transform: rotate(-135deg);
- -ms-transform: rotate(-135deg);
- -webkit-transform: rotate(-135deg);
-}
-
-.ship.thrust-down.thrust-right {
- -moz-transform: rotate(135deg);
- -ms-transform: rotate(135deg);
- -webkit-transform: rotate(135deg);
-}
-
-.ship.thrust-left {
- -moz-transform: rotate(-90deg);
- -ms-transform: rotate(-90deg);
- -webkit-transform: rotate(-90deg);
-}
-
-.ship-gunfire {
- position: absolute;
- width: 6px;
- height: 6px;
- background: #fff;
- border-radius: 100%;
-}
-
-.big-explosion {
- position: absolute;
- width: 96px;
- height: 80px;
- margin-left: -48px;
- margin-top: -40px;
- /* explosion-96.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAFABAMAAACxbWSJAAAAFVBMVEUAAAA+MaJcRwCAgICJQDbQ3HH///+xGu2/AAAAAXRSTlMAQObYZgAAASVJREFUaN7tm9ENwyAMRLNCV+gKXYEVukL3H6HmAwnRAkZKyp1776dKxYvkEoyN0uMQQmwiGZ7v0IWbUa5fBpvQDmhvwCDUg6YBAwtloCtgUCFTgnYnAwmnCxGeJfY1HSG3RtjjItQaQohdncrS0gQTUsXTYBPqgbXIIKQBedv6CB5QKFIb7HACgYRyMQocXfBMnoTfCMkJqtBbNExChHmIJNStfbt4WATt0/sFzQOO0PsBlqp7EGHUNHWPVIkExl6U8VmaboYSLhe+JWEmQVXlfiEtIkGCBAlXC8reOEL0Autu5EIlfzII/9CLMglCCCHOpz4AdL3yCShEOat8GEuVAJgwPb0CFnoHa2xCmTB3sQ4m9ArdfBMmgT0vLf1fAFQQQtDzBklNU5sbQcADAAAAAElFTkSuQmCC) no-repeat 0px -96px;
-}
-
-.bad-guy {
- position: absolute;
- width: 32px;
- height: 32px;
- visibility: hidden;
-}
-
-.bad-guy .icon {
- position: absolute;
- width: 24px;
- height: 24px;
- top: 4px;
- left: 4px;
-}
-
-.bad-guy.x .icon {
- /* badguy-x.png */
- background: transparent url(data:image/png;base64,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) no-repeat 0px 0px;
-}
-
-.bad-guy.smiley .icon {
- /* badguy-smiley.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAABICAYAAADs+TUPAAAApElEQVR42u2YOw6AMAxDuf+JejsQU5ZSQ0KsNrUlT1R+DM1HPSQpX621c2R3qMeJ4eascAx5OHi7E4K/J/x9YYCpc+iNuTeJXmjxViFJG49O+kxOnc1zAtIbXWcuDGexOxwDzJMBsAUoBgC70H+1AK4oEVC/m/I3O62M0u5CRVZ88YqH8/ciHP4dYN4JgL0GwPNWhOUAhOugZ241E5pdQHrtWlsXbCcLmuCbjiAAAAAASUVORK5CYII=) no-repeat 0px 0px;
-}
-
-.bad-guy.bird .icon {
- /* badguy-bird.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAABIAgMAAACRl92cAAAACVBMVEUAAAAAAADZ4YHc4ZZkAAAAAXRSTlMAQObYZgAAAFpJREFUGNPN0SEOw1AMBNGnD32SqKfMOYKMAvaUBd+gRYHtEEtGqxmeKWjrZJ30/hwcqOrGSk64L/DK56n2e2ZEgsp9pVWS9H/u/Da4tY7kUT4Bdo6JM6meeQNeBBzVDccw4gAAAABJRU5ErkJggg==) no-repeat 0px 0px;
-}
-
-.bad-guy.exploding {
- background: transparent url(../image/badguy-boom.png) no-repeat 0px 0px;
-}
-
-.bad-guy.exploding .icon {
- display: none;
-}
-
-.turret-gunfire {
- /* turret-gunfire.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAABACAYAAAB7jnWuAAAAO0lEQVR42u3XsQkAQAgEwe+/ab8EBUWTmVzY7PABmWgScB8AANZQAAAwNcPdewECBAgQIEDAeoAvGaj6ZC38LpiJVU0AAAAASUVORK5CYII=) no-repeat 0px 0px;
- /* initially, hide. */
- visibility: hidden;
-}
-
-.turret-gunfire.up,
-.turret-gunfire.down {
- background-position: 2px -32px;
-}
-
-.turret-gunfire.left,
-.turret-gunfire.right {
- background-position: 0px 0px;
-}
-
-.block.type-0 {
- border: 1px dotted #3399ff;
-}
-
-.block.type-0,
-.block.type-0 .transform-sprite {
- /* block-type-0.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAACAAQMAAABQqPlZAAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAERJREFUKJFjYMAC+P///wAheBgYDGhNIGwjFiB08DEwFEC5DYzUJaDGU+Y+At7n/wAkOATwEWAlNAs/0mKLsQFGUC1+AXEhYCccrnvbAAAAAElFTkSuQmCC) no-repeat 0px 0px;
-}
-
-.block.type-1 {
- border: 1px dotted #ff3333;
-}
-
-.block.type-1,
-.block.type-1 .transform-sprite {
- /* block-type-1.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAACAAgMAAAAXCIOJAAAADFBMVEUAAAAAAABoqUH///+Pb14MAAAAAXRSTlMAQObYZgAAAERJREFUOI3NkLENADAIw/Jkn+TJFFXsyRBVeEDeggw48CEEc7aI8XMKq89ppJAZMba29bGkKiOZf772qUYKkBFjK9LnApuVuQAKuhHCAAAAAElFTkSuQmCC) no-repeat 0px 0px;
-}
-
-.block.type-2 {
- border: 1px dotted #33ff33;
-}
-
-.block.type-2,
-.block.type-2 .transform-sprite {
- /* block-type-2.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAACAAgMAAAAXCIOJAAAADFBMVEUAAABoqUGJQDb///8xngp2AAAAAXRSTlMAQObYZgAAAE9JREFUOI3Nk7EBwDAMwvIkT+pJ+kHRkCFMGm3ZnPOTtm0HAFmQlgUYIBPEzLei/ARYQBsB20+Y8JofM7PaXTg0t3jOj/h540d1UHT5rp8PSTfuIAS+AyMAAAAASUVORK5CYII=) no-repeat 0px 0px;
-}
-
-.block.type-3 {
- border: 1px dotted #ffff33;
-}
-
-.block.type-3,
-.block.type-3 .transform-sprite {
- /* block-type-3.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAACAAgMAAAAXCIOJAAAADFBMVEUAAAAAAACJQDb///+BW6ugAAAAAXRSTlMAQObYZgAAAERJREFUOI3NkLENADAIw/Jkn+TJFFXsyRBVeEDeggw48CEEc7aI8XMKq89ppJAZMba29bGkKiOZf772qUYKkBFjK9LnApuVuQAKuhHCAAAAAElFTkSuQmCC) no-repeat 0px 0px;
-}
-
-#world.phase-1 .block {
- background-position: 0px -32px;
-}
-
-#world.phase-2 .block {
- background-position: 0px -64px;
-}
-
-#world.phase-3 .block {
- background-position: 0px -96px;
-}
-
-#world.phase-4 .block {
- background-position: 0px -128px;
-}
-
-/* translate3d-style GPU acceleration for sprites */
-
-#world.use-experimental-transforms .block {
-  /* no background here - move into an inner element */
-	background: transparent;
-}
-
-/* inner sprite element: this element gets the sprite and will be transformed, sliding within the container. */
-
-#world.use-experimental-transforms .block .transform-sprite {
- -webkit-transform: translate3d(0px, 0px, 0px);
-}
-
-#world.use-experimental-transforms.phase-1 .block .transform-sprite {
- -webkit-transform: translate3d(0px, -32px, 0px);
-}
-
-#world.use-experimental-transforms.phase-2 .block .transform-sprite {
- -webkit-transform: translate3d(0px, -64px, 0px);
-}
-
-#world.use-experimental-transforms.phase-3 .block .transform-sprite {
- -webkit-transform: translate3d(0px, -96px, 0px);
-}
-
-#world.use-experimental-transforms.phase-4 .block .transform-sprite {
- -webkit-transform: translate3d(0px, -128px, 0px);
-}
-
-/* step-based animations, too */
-
-#world.use-experimental-transforms.pulse-interval-0 .block .transform-sprite {
- -webkit-animation: pulse 2s steps(4, end) infinite;
- -moz-animation: pulse 2s steps(4, end) infinite;
- animation: pulse 2s steps(4, end) infinite;
-}
-
-#world.use-experimental-transforms.pulse-interval-1 .block .transform-sprite {
- -webkit-animation: pulse 1.467s steps(4, end) infinite;
- -moz-animation: pulse 1.467s steps(4, end) infinite;
- animation: pulse 1.467s steps(4, end) infinite;
-}
-
-#world.use-experimental-transforms.pulse-interval-2 .block .transform-sprite {
- -webkit-animation: pulse 0.933s steps(4, end) infinite;
- -moz-animation: pulse 0.933s steps(4, end) infinite;
- animation: pulse 0.933s steps(4, end) infinite;
-}
-
-#world.use-experimental-transforms.pulse-interval-3 .block .transform-sprite {
- -webkit-animation: pulse 0.4s steps(4, end) infinite;
- -moz-animation: pulse 0.4s steps(4, end) infinite;
- animation: pulse 0.4s steps(4, end) infinite;
-}
-
-@-webkit-keyframes pulse {
- from { -webkit-transform: translate3d(0px, 0px, 0px); }
- to { -webkit-transform: translate3d(0px, -128px, 0px); }
-}
-
-@-moz-keyframes pulse {
- from { -moz-transform: translate3d(0px, 0px, 0px); }
- to { -moz-transform: translate3d(0px, -128px, 0px); }
-}
-
-@keyframes pulse {
- from { transform: translate3d(0px, 0px, 0px); }
- to { transform: translate3d(0px, 0px, 0px); }
-}
-
-.block.exploding,
-.wall.exploding,
-.turret.exploding {
- /* death sequence */
- /* base-explosion.png */
- /* TODO: move further down so !important isn't needed? */
- background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAADACAMAAABS4JFEAAAAElBMVEVVVVVoqUF6v8d8cNqJQDb///8IAG8eAAABoklEQVR42u2YYYuDMBBEbbX//y/XAQeWB2aWnhcsd/Ml6+ZhZiRW6/LY9dqlcdmlUXK/B0gEt0MZqA0BBhcrAUOTLeDCFNZpCmtyij6g0ZO89BngEh4FqM6AT+kGYwYgpFDdAyjBfYAbZJhCmpTCsKAMbJAnJIE9wKeVNigDmmSzGo3A0GQfwMVBCgATU1gR+FmK//3w9/aDJy1D6y4dZ8CNCqyH1O8Ba5GOK/gZYJMt4PYpNAYAJlXTZAa4WSqgfgY8YYOMmQEXhmg6AkOTPYDbnCYDcPMUVgaqIf5WL1ILkPhG6rkMuGHxNozAL6doAUOTqjNgM2WESQLXp+Cl/QzQ6K3HmBngPxKajsDQZBPgU5cmCUxOoboHSAZpsg88D7HOQG3YqGovlQE2vKT7ERiaFBSBC1NYpymsySl6gAuPERguwe3XA+op6+g6AkOTWqYHPItoMgM85TCFgIkpXGfAPzX8FuYlM2CdvR5koDYIZ4DPTgPoBeBOKSyuH4ELUvC7KB+sGeCLBmNmgN9EaToAwaTrAHCb0ySBL0phZSDf/m+SPju9I9KB0AAAAABJRU5ErkJggg==) !important;
- background-repeat: no-repeat;
- background-position: 0px 0px;
-}
-
-.block-exploding {
- margin: 4px;
- width: 26px;
- height: 26px;
-}
-
-#world.disable-pulse .block {
- /* no pulse effect */
- background-position: 0px -32px !important;
-}
-
-#world.use-experimental-transforms.disable-pulse .block .transform-sprite {
- /* use-transform equivalent */
- -webkit-transform: none !important;
-}
-
-#world.disable-sprites div {
- /* nuke sprites */
- background-image: none !important;
- outline: 1px solid #999;
-}
-
-#world.disable-css3 div {
- border-radius: none !important;
- -moz-transform: none !important;
- -moz-transition: none !important;
- -webkit-transform: none !important;
- -webkit-transition: none !important;
- -webkit-animation: none !important;
- -moz-animation: none !important;
- box-shadow: none !important;
- text-shadow: none !important;
-}
-
-.block {
- border: none !important;
-}
-
-.wall,
-.turret,
-.turret-gunfire {
- /* the stuff which bases are made of. */
- width: 32px;
- height: 32px;
-}
-
-.turret.type-1,
-.wall.type-1 {
- /* base-type-1.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAFAAgMAAACgl5aJAAAADFBMVEUAAABoqUGJQDb///8xngp2AAAAAXRSTlMAQObYZgAAAKNJREFUSMfdlUEOAyEMA/3JfNKfdA+F9lKMV6xWUYOQ5gDBcUAAj4e2IElb+CxegmZeA0igmzfaQOROaNAlo87gq34N2zypP092vZM/6fvq9jLu64QsaISDJM9f359WemrMQ2ARLDqQSlLJQY1wkOkhQdLDGMcQnBVoTmpPPEx6cVvff3x6lEA6eBdDOEjyZJ9wLz0kJHoA51VfA4mau1bQXs8LVoJ9nyMPuW8AAAAASUVORK5CYII=) no-repeat 0px 0px;
-}
-
-.turret.type-2,
-.wall.type-2 {
- /* base-type-2.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAFAAgMAAACgl5aJAAAADFBMVEUAAABoqUGJQDb///8xngp2AAAAAXRSTlMAQObYZgAAAJBJREFUSMfl0zEOgDAMA0B/0p/0J80A2SC1BKoi0S43lDRNAjBwmeYKrMMNHCCJM602XmB3fSbFMc0VtvdsWp2D/+uvyzx3h9/Pz6g4LL6DKIjqYNM23YHX6pDlI0FSj2u/RnBXkHPy9qSGSS8+6zvgGraCbEgdzscIHZI4d7dPz0eCrR5QjfozJLC+esL4fA528+t4JWi/SwAAAABJRU5ErkJggg==) no-repeat 0px 0px;
-}
-
-.turret.type-3,
-.wall.type-3 {
- /* base-type-3.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAFAAgMAAACgl5aJAAAADFBMVEUAAABoqUGJQDb///8xngp2AAAAAXRSTlMAQObYZgAAAItJREFUSMfl00EOgCAMRNG5ZC/5LzkuBFdam6ikiSUmbwFSWpAahm3f4pj8PbrVxjdYXZ9OqNZnac+6ofC+/hoekeH396cVYnwPQSCCDHbYDmeIERlq+YCAHGM8RmGvQs6Vs1dqWOnFa32Xjhc9gS3IsB8GZaj852z37vmAbHKIedWvAYq56grt89kAOmct7wxOsZAAAAAASUVORK5CYII=) no-repeat 0px 0px;
-}
-
-.turret.type-4,
-.wall.type-4 {
- /* base-type-4.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAFAAgMAAACgl5aJAAAADFBMVEUAAABoqUGJQDb///8xngp2AAAAAXRSTlMAQObYZgAAAItJREFUSMfl0zEOgDAMA0B/0p/0J81AywTBElBFIl1ugDZNUqBhkOQtjo+/R7fa8Aar69MJaX2W9qwbgvf11+CICr+fn1bg8fQfQRREVbBpm66QzU+SjwRJNcZ6jOCsIOfk7kkNk1681nfAHgM1IRtShf0yQoVkn7PTu+cjwVYNaI76NSRw/nWF9vlshYmuYE68ZvoAAAAASUVORK5CYII=) no-repeat 0px 0px;
-}
-
-.wall.upRight {
- background-position: 0px 0px;
-}
-
-.wall.rightDown { /* for level editor */
- background-position: 0px -32px;
-}
-
-.wall.downLeft { /* for level editor */
- background-position: 0px -64px;
-}
-
-.wall.downRight { /* for level editor */
- background-position: 0px -96px;
-}
-
-.wall.horizontal {
- background-position: 0px -128px;
-}
-
-.turret.down.dead,
-.turret.up.dead {
- /* dead turrets also revert to walls. */
- /* !important needed to override JS when turret explodes. */
- background-position: 0px -128px !important;
-}
-
-.turret.left.dead,
-.turret.right.dead,
-.wall.vertical {
- /* dead turrets also revert to walls. */
- background-position: 0px -160px;
-}
-
-.turret.up {
- background-position: 0px -192px;
-}
-
-.turret.down {
- background-position: 0px -224px;
-}
-
-.turret.left {
- background-position: 0px -256px;
-}
-
-.turret.right {
- background-position: 0px -288px;
-}
-
-.wall.exploded,
-.turret.exploded {
- /* death sequence complete */
- display: none;
-}
-
-.spaceball {
- position: absolute;
- width: 32px;
- height: 32px;
- /* spaceball.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAcCAYAAAAAwr0iAAAAgElEQVR42u2WQQqAMBAD+zjv4oP8hj/xffVacxkWA6HFQG4hO+1SaPuq89776GZVHoAHqikfB3AMeFml+fUBrmMbLXn2bABsER4gD1AsrA5A4DwAFNqvXJUHkID92VF/HqBYQIVVoAkAyKIqYB7g/w+Q3CtaH4BWEgCIfstZeYAH+iJJMw1O7SUAAAAASUVORK5CYII=) no-repeat 0px 0px;
- visibility: hidden;
-}
-
-#world.use-transform .block,
-#world.use-transform .bad-guy,
-#world.use-transform .ship-gunfire,
-#world.use-transform .turret,
-#world.use-transform .turret-gunfire,
-#world.use-transform .spaceball,
-#world.use-transform .big-explosion,
-#world.use-transform .ship-gunfire {
- /* GPU accelation? Don't mind if I do. */
- -ms-transform: translate3d(0px, 0px, 0px);
- -moz-transform: translate3d(0px, 0px, 0px);
- -webkit-transform: translate3d(0px, 0px, 0px);
-}
-
-#world.use-transform .turret.dead {
- /* no more GPU for you */
- -ms-transform: none;
- -moz-transform: none;
- -webkit-transform: none;
-}
-
-#footer {
- position: fixed;
- left: 0px;
- bottom: 0px;
- width: 100%;
- min-height: 20px;
- padding: 8px 8px 9px 8px;
- font-size: 0.75em;
- color: #999;
- background-color: #000;
- background-color: rgba(0,0,0,0.9);
- text-shadow: 0px 1px 0px rgba(0,0,0,0.5);
- border-top: 1px solid rgba(255,255,255,0.15);
- z-index: 2;
- line-height: 20px;
-}
-
-#footer p {
- margin: 0px;
- padding: 0px;
-}
-
-#footer span.divider {
- padding: 0px 7px;
- color: #444;
-}
-
-#footer a {
- text-decoration: none;
- color: #6699cc;
-}
-
-#footer a:hover {
- color: #fff;
-}
-
-#footer a.cta {
- padding: 0px 5px;
- text-decoration: none;
- color: #6699cc;
- border-color: #114477;
- line-height: 19px;
- font-weight: bold;
-}
-
-#footer a.cta.help {
- border-radius: 20px;
- width: 10px;
- text-align: center;
- font-weight: bold;
- font-size: 14px;
- line-height: 20px;
- vertical-align: bottom;
-}
-
-#footer a.cta:hover {
- color: #fff;
-}
-
-#points,
-#lives,
-#smartbombs,
-#fps {
- font-weight: bold;
-}
-
-#stats {
- position: fixed;
- top: 0px;
- right: 0px;
- float: right;
- padding: 1.5em;
-}
-
-#original {
- display: none;
-}
-
-/* debug bits */
-
-#debug-panel {
- position: fixed;
- bottom: 38px;
- right: 8px;
- background: #000;
- background-color: rgba(0,0,0,0.9);
- font-family: monaco,"Andale Mono","VT-100","Lucida Console","Courier New",monospace,courier,system,sans-serif;
- font-weight: normal;
- font-size: 10px;
- line-height: 10px;
- color: #999;
- border: 1px dotted #999;
- border-color: rgba(255,255,255,0.25);
- padding: 0.5em;
- display: none;
-}
-
-#debug-panel .debug-header {
- font-weight: bold;
- text-align: center;
- border-bottom: 1px dotted #999;
- border-color: rgba(255,255,255,0.2);
- padding-top: 5px;
- padding-bottom: 5px;
-}
-
-#debug-panel .debug-header:first-child {
- padding-top: 0px;
-}
-
-#debug-form,
-#debug-form ul,
-#debug-form ul li {
- margin: 0px;
- padding: 0px;
-}
-
-#debug-form ul {
- list-style-type: none;
- padding: 5px 0px;
-}
-
-#debug-form ul li {
- padding: 2px 0px;
- color: #666;
-}
-
-#debug-form ul.compact li {
- /* make everything tightly spaced. */
- padding: 0px;
- margin-top: -2px;
-}
-
-#debug-form label {
- position: relative;
-}
-
-#debug-form code {
- display: inline-block;
- color: #336699;
-}
-
-#debug-form .count {
- color: #339933;
-}
-
-a.cta {
- display: inline-block;
- padding: 3px 4px;
- background: #001133;
- border: 1px solid #003366;
- border-radius: 3px;
-}
-
-a.cta:hover,
-#footer a.cta:hover {
- background-color: #336699;
- border-color: #6699cc;
- color: #fff;
-}
-
-a.cta:focus {
- outline: none;
-}
-
-#tweeter {
- display: none;
-}
-
-#footer a.tweeter {
- display: inline-block;
- background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAMCAQAAADFGyU3AAAA4ElEQVQYV1WRsQ4BQRCGlyARlRARUSgUOq8gIQpRSSQSBZHQeQAvIFGpFDoVOREnKo3bN5vf7Mxtzs3lv529/7uZ2TtjDDKGg+SugSYdaE8l8x9oY5ba38jiiXUaKiOExQZV2a04/7IsjmlsLg8/WCCHu+QWEWv0Dy1hKRIrUIQbRqwL+tRVhIfGQd92plxudU1D9BJoh5eHYrlqD0x0Ut9ySzau4CtaTMWivABZVp0C8rMockVBoQ7GKDJS4+HfasdHiNBK2gzir5IM7rIzGv5vyEIV2tBbj+0QOtHQey5+lFrhcFxfM3wAAAAASUVORK5CYII=);
- background-repeat: no-repeat;
- background-position: 50% 50%;
- border-radius: 6px;
- width: 22px;
- height: 19px;
- margin-top: -3px;
- overflow: hidden;
- font-size: 18px;
- line-height: 10px;
- font-weight; bold;
- text-indent: -99em;
- vertical-align: middle;
- text-align: center;
-}
diff --git a/js-client/image/badguy-bird.png b/js-client/image/badguy-bird.png
deleted file mode 100644
index 85d15de..0000000
Binary files a/js-client/image/badguy-bird.png and /dev/null differ
diff --git a/js-client/image/badguy-smiley.png b/js-client/image/badguy-smiley.png
deleted file mode 100644
index f1c652b..0000000
Binary files a/js-client/image/badguy-smiley.png and /dev/null differ
diff --git a/js-client/image/badguy-x.png b/js-client/image/badguy-x.png
deleted file mode 100644
index ae8d6e1..0000000
Binary files a/js-client/image/badguy-x.png and /dev/null differ
diff --git a/js-client/image/base-explosion.png b/js-client/image/base-explosion.png
deleted file mode 100644
index 27918ae..0000000
Binary files a/js-client/image/base-explosion.png and /dev/null differ
diff --git a/js-client/image/base-type-1.png b/js-client/image/base-type-1.png
deleted file mode 100644
index d637b63..0000000
Binary files a/js-client/image/base-type-1.png and /dev/null differ
diff --git a/js-client/image/base-type-2.png b/js-client/image/base-type-2.png
deleted file mode 100644
index f624075..0000000
Binary files a/js-client/image/base-type-2.png and /dev/null differ
diff --git a/js-client/image/base-type-3.png b/js-client/image/base-type-3.png
deleted file mode 100644
index aa49f01..0000000
Binary files a/js-client/image/base-type-3.png and /dev/null differ
diff --git a/js-client/image/base-type-4.png b/js-client/image/base-type-4.png
deleted file mode 100644
index 75902d1..0000000
Binary files a/js-client/image/base-type-4.png and /dev/null differ
diff --git a/js-client/image/block-type-0.png b/js-client/image/block-type-0.png
deleted file mode 100644
index d4681aa..0000000
Binary files a/js-client/image/block-type-0.png and /dev/null differ
diff --git a/js-client/image/block-type-1.png b/js-client/image/block-type-1.png
deleted file mode 100644
index 7d56e6d..0000000
Binary files a/js-client/image/block-type-1.png and /dev/null differ
diff --git a/js-client/image/block-type-2.png b/js-client/image/block-type-2.png
deleted file mode 100644
index 87c2ab0..0000000
Binary files a/js-client/image/block-type-2.png and /dev/null differ
diff --git a/js-client/image/block-type-3.png b/js-client/image/block-type-3.png
deleted file mode 100644
index 49392f5..0000000
Binary files a/js-client/image/block-type-3.png and /dev/null differ
diff --git a/js-client/image/cursor.gif b/js-client/image/cursor.gif
deleted file mode 100644
index f784577..0000000
Binary files a/js-client/image/cursor.gif and /dev/null differ
diff --git a/js-client/image/grid-tile.png b/js-client/image/grid-tile.png
deleted file mode 100644
index 00fd95c..0000000
Binary files a/js-client/image/grid-tile.png and /dev/null differ
diff --git a/js-client/image/ship.png b/js-client/image/ship.png
deleted file mode 100644
index 5c9bcab..0000000
Binary files a/js-client/image/ship.png and /dev/null differ
diff --git a/js-client/image/title-screen-cutout.png b/js-client/image/title-screen-cutout.png
deleted file mode 100644
index 5c04f69..0000000
Binary files a/js-client/image/title-screen-cutout.png and /dev/null differ
diff --git a/js-client/image/title-screen-letter-tile.gif b/js-client/image/title-screen-letter-tile.gif
deleted file mode 100644
index 6211be1..0000000
Binary files a/js-client/image/title-screen-letter-tile.gif and /dev/null differ
diff --git a/js-client/image/turret-gunfire.png b/js-client/image/turret-gunfire.png
deleted file mode 100644
index 6b8775c..0000000
Binary files a/js-client/image/turret-gunfire.png and /dev/null differ
diff --git a/js-client/image/turrets.png b/js-client/image/turrets.png
deleted file mode 100644
index 997316d..0000000
Binary files a/js-client/image/turrets.png and /dev/null differ
diff --git a/js-client/index.html b/js-client/index.html
index a27d0cb..5318dc9 100644
--- a/js-client/index.html
+++ b/js-client/index.html
@@ -3,7 +3,7 @@
 <head>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
   <title>SURVIVOR (1982 Commodore 64 game remake)</title>
-  <link rel="stylesheet" href="css/survivor.css" />
+  <link rel="stylesheet" href="../assets/css/survivor.css" />
 </head>

 <body>
diff --git a/jvm-client/src/main/scala/JvmClient.scala b/jvm-client/src/main/scala/JvmClient.scala
index fd6d0dc..717defe 100644
--- a/jvm-client/src/main/scala/JvmClient.scala
+++ b/jvm-client/src/main/scala/JvmClient.scala
@@ -14,25 +14,22 @@ import scala.concurrent.ExecutionContext.Implicits.global
 import scala.io.Source

 object JvmClient extends JFXApp {
-  // new Main(new WebSocketClient())
-

   val webView = new WebView()

   // Firebug:
-  //  |   <script type="text/javascript" src="js-client/target/scala-2.11/survivor-jsdeps.js"></script> -->
-  println()
-
   val fireBug = """<script type="text/javascript">if (!document.getElementById('FirebugLite')){E = document['createElement' + 'NS'] && document.documentElement.namespaceURI;E = E ? document['createElement' + 'NS'](E, 'script') : document['createElement']('script');E['setAttribute']('id', 'FirebugLite');E['setAttribute']('src', 'https://getfirebug.com/' + 'firebug-lite.js' + '#startOpened');E['setAttribute']('FirebugLite', '4');(document['getElementsByTagName']('head')[0] || document['getElementsByTagName']('body')[0]).appendChild(E);E = new Image;E['setAttribute']('src', 'https://getfirebug.com/' + '#startOpened');}
     </script>"""

-  val projectDir = System.getProperty("user.dir")
+  val projectRoot = "file://" + System.getProperty("user.dir")

   webView.engine.loadContent(s"""
     | <!DOCTYPE html>
     | <html>
     | <head>
-    |   <link rel="stylesheet" href="file://$projectDir/../js-client/css/survivor.css" />
+    |   <link rel="stylesheet" href="$projectRoot/assets/css/survivor.css" />
+    |   <script type="text/javascript" src="$projectRoot/react-ui/target/scala-2.11/reactui-fastopt.js"></script>
+    |   <script type="text/javascript" src="$projectRoot/react-ui/target/scala-2.11/reactui-jsdeps.js"></script>
     |   $fireBug
     | </head>
     | <body>
diff --git a/original/README.rdoc b/original/README.rdoc
index 0dc5389..a79dc94 100644
--- a/original/README.rdoc
+++ b/original/README.rdoc
@@ -10,4 +10,4 @@
  * You know what never gets old? ... Nostalgia.
  * This project began in December 2011, whilst on a plane to Hawaii (that is to say, 5 hours without wifi.)
  * Code provided under the Attribution-NonCommercial 3.0 Unported (CC BY-NC 3.0) License.
- * http://creativecommons.org/licenses/by-nc/3.0/
\ No newline at end of file
+ * http://creativecommons.org/licenses/by-nc/3.0/
diff --git a/original/css/survivor.css b/original/css/survivor.css
deleted file mode 100644
index b8e1adf..0000000
--- a/original/css/survivor.css
+++ /dev/null
@@ -1,1033 +0,0 @@
-/** @license
- *
- * SURVIVOR: A HTML + CSS + JavaScript prototype
- * based on the Commodore 64 version of Survivor from 1983
- *
- * http://schillmania.com/survivor/
- * http://www.flickr.com/photos/schill/sets/72157628885315581/
- * http://github.com/scottschiller/
- *
- * Scott Schiller wrote this beginning in December 2011, while on a plane to Hawaii.
- * Code provided under the Attribution-NonCommercial 3.0 Unported (CC BY-NC 3.0) License:
- * http://creativecommons.org/licenses/by-nc/3.0/
- *
- */
-
-body {
- font: normal 1em "helvetica neue", helvetica, arial, sans-serif;
- color: #ccc;
- /* hide and scroll. */
- overflow: hidden;
- /* grid-tile.png */
- background: #000 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAABlBMVEUAAAD+/v7KB/Q9AAAAAnRSTlMAM8lDrC4AAAAQSURBVAhbY1zFAAMNg5EFALt0CCw/8KEzAAAAAElFTkSuQmCC);
- /* don't allow highlighting / selection, by accidental click + drag etc. */
- -ms-user-select: none;
- -moz-user-select: none;
- -webkit-user-select: none;
- user-select: none;
-}
-
-#c64 h1,
-#c64 h2,
-#c64 h3,
-#c64 p {
- margin: 0.5em 0px;
- padding: 0px;
- font-size: 21px;
- line-height: 30px;
- font-weight: normal;
- color: #a6a6ff;
-}
-
-#c64 h1,
-#c64 h2 {
- text-align: center;
-}
-
-#c64 h3 {
- margin-bottom: 0px;
-}
-
-#c64 p {
- margin: 0px;
- line-height: 22px;
-}
-
-#c64 .loading {
- display: none;
-}
-
-#c64 #go_go_go {
- /* inside joke. */
- display: none;
-}
-
-@font-face {
-    /**
-     * http://style64.org/c64-truetype
-     * see license.txt in font directory for details.
-     */
-    font-family: "C64 User Mono";
-    src: url("../font/C64_User_Mono_v1.0-STYLE.eot");
-}
-
-@font-face {
-    /**
-     * http://style64.org/c64-truetype
-     * see license.txt in font directory for details.
-     */
-    font-family: "C64 User Mono";
-    src: url("../font/C64_User_Mono_v1.0-STYLE.ttf") format("truetype"), url("../font/C64_User_Mono_v1.0-STYLE.woff") format("woff");
-}
-
-.c64 {
- /* generic "use this font" class */
- font-family: "C64 User Mono";
-}
-
-#c64 {
- position: absolute;
- left: 50%;
- top: 50%;
- /* 640x480, before border etc. */
- width: 820px;
- height: 615px;
- margin: -371px 0px 0px -474px;
- background: #4444e7;
- border: 64px solid #a6a6ff;
- padding: 2px;
- font-family: "C64 User Mono";
- color: #fff;
-}
-
-#c64 #cursor {
- width: 20px;
- height: 20px;
- /* a tiny animated .GIF */
- background: transparent url(data:image/gif;base64,R0lGODlhDwAPAPAAAEBA4KCg/yH/C05FVFNDQVBFMi4wAwEAAAAh+QQEKAD/ACwAAAAADwAPAEACDYSPqcvtD6OctNqLZwEAIfkEBSgAAAAsAAAAAA8ADwAAAg2Mj6nL7Q+jnLTai2cBADs=);
- margin: 2px 0px 0px 2px;
-}
-
-#screens {
- position: fixed;
- left: 0px;
- top: 0px;
- width: 100%;
- height: 100%;
- z-index: 1;
-}
-
-#screen-list {
- list-style-type: none;
-}
-
-#screen-list,
-#screen-list li {
- margin: 0px;
- padding: 0px;
-}
-
-#screen-list li {
- position: absolute;
- left: 0px;
- top: 0px;
- width: 100%;
- height: 100%;
- z-index: 3;
- /* by default, hide. */
- display: none;
-}
-
-#screen-list li#boot-screen {
- /* initially, show this one. */
- display: block;
-}
-
-#level-end-sequence {
- background: #000;
-}
-
-#title-screen {
- background: #000;
- text-align: center;
- cursor: pointer;
- display: none;
-}
-
-#title-screen h1,
-#title-screen h2,
-#title-screen h3 {
- font-family: "C64 User Mono";
- font-size: 13px;
- line-height: 20px;
- font-weight: normal;
-}
-
-#title-screen #title-content {
- position: absolute;
- top: 50%;
- left: 50%;
- width: 630px;
- height: 190px;
- margin: -95px 0px 0px -320px;
-}
-
-#title-screen #title-header {
- position: relative;
- width: 609px;
- height: 100px;
- font-size: 0px;
- line-height: 100px;
- margin: 0px auto;
- padding: 0px;
- overflow: hidden;
- /* title-screen-letter-tile.gif */
-  background: #000 url(../image/title-screen-letter-tile.gif);
-}
-
-#title-screen #title-header h1 {
- position: relative;
- width: 609px;
- height: 100px;
- font-size: 0px; /* hack */
- line-height: 100px; /* hack */
- overflow: hidden;
- text-indent: -999em;
- /* title-screen-cutout.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAmEAAABkAgMAAACzyQ9CAAAACVBMVEUAAAAAAAD///+D3c/SAAAAAXRSTlMAQObYZgAAAAFiS0dEAmYLfGQAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAidEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVAgb24gYSBNYWOHqHdDAAADBElEQVRo3u2bTXLkIAyFGxXZs5n7cIRZJKecWcwRfJ9svI+rmGn/DcYWehZQ1VWBRZLqVj8/xIcsnMR8PF5zfNLjVUd31p11Z93ZvWHnr+F39NIPv7zw/L69ub22j7efh/e4OE7r3/j6k+gk2kvOptszmopzMrI6U7Sa423dUOxsYHVC5GzQCutHyOgMu7OgXgz9mDI64+5sKlAuwywDGmnnH6pglgGN1MwMVTDjQSP19McqmPGgkRqZqQpmPGiknn2oghkPGumJGapgxoJGNcp574K6M6g/2/snacR9FjfMx7Eny2mlvVyk3VezO+vOurPurDvrzrqzb92fff56QI3aHtdgJNpU9XzbcjWnl3UWXncH4Odb39CWn50ZHWimoTGz5syrQLONK8bTmVOB5ho6c6szqwKtMWazMxVorTFb9qYGtNaYLc40oLXGbHGmAa01Zoszo0ShJWbrPcDrUGja/1BzaMr8vW1/T5J7LjYn+n37xWTcV82fTl++HZNoV+lpB6AOIjGl3fYZsRHY0iO07W3lc8AElEEkpjRn5vRz2G8dno3Px1xoU0Ga/l9mWFfLZIpyPuasXbqaboNo4KscElPnvOkjZOw6y5Cpi0jMWbs0ZxtEOYSQmDo5c3EBWCHKIoTEnLTVORuPEGURQmJO2sX1bLnSVxYhJKbKatq4bBigZ0NiTtrl9wAP9GxITI2cmUNT7oCeDYlJtctzZoGjARJz8RmuJxOelQ0+XR9/7PGen18fx5krzDL6g1fmzB96LQ8g5GHMdu0KXZADEHIgZoU7YLnOlELkABgdrk3X+TQ3TpdGEQNUOGJEfO50aY9neQ8gxO8ETpuYxLsbp0uniJErHEHXcexpiJuLNF8rapOY9wsUjLz+EiNG1CaEZwPUoLsxYoUjZH9b4UGQAypVGuMkbUJqolSFrCJGrHCE3Eek1t0oYsQqSGyTl+up3Gk6yA3RiDst1iagX5Fvdk4RI1VBAno8Jz50scAN0V5Wb17b9P/Euj26s+6sO+vOurPW4y/KjsjB18CxHAAAAABJRU5ErkJggg==) no-repeat 50% 50%;
-}
-
-#help-screen,
-#game-over-screen,
-#level-passed-screen {
- background: #000;
- cursor: pointer;
- display: block;
-}
-
-#help-screen,
-#game-over-screen,
-#level-passed-screen {
- background-color: rgba(0,0,0,0.85);
-}
-
-#level-passed-screen .bd,
-#game-over-screen .bd,
-#help-screen .bd {
- position: absolute;
- left: 0px;
- top: 50%;
- width: 100%;
- margin-top: 0px; /* set via JS */
- text-align: center;
-}
-
-#help-screen .bd {
- text-align: left;
- font-size: 12px;
- line-height: 16px;
-}
-
-#level-passed-screen .bd .wrapper {
- text-align: left;
-}
-
-#level-passed-screen .fixed,
-#game-over-screen .fixed {
- /* fixed-width items */
- text-align: left;
- max-width: 18em;
- margin-bottom: 0.25em;
-}
-
-#game-over-screen .fixed {
- margin-left: auto;
- margin-right: auto;
-}
-
-#level-passed-screen .fixed .icon,
-#game-over-screen .fixed .icon {
- position: relative;
- display: inline-block;
- vertical-align: middle;
-}
-
-#level-passed-screen .fixed.bad-guy,
-#game-over-screen .fixed.bad-guy {
- /* special display tweak */
- position: relative;
- display: block;
- width: auto;
- height: auto;
- overflow: visible;
-}
-
-#level-passed-screen .fixed.bad-guy .icon,
-#game-over-screen .fixed.bad-guy .icon {
- /* special display tweak */
- margin-right: 8px;
- height: 24px;
- background-position: 0px -51px;
-}
-
-#help-screen .bd .wrapper,
-#level-passed-screen .bd .wrapper {
- position: relative;
- margin: 0px auto;
- padding: 1em;
- max-width: 42em;
-}
-
-#help-screen .bd .wrapper {
- max-width: 60em;
-}
-
-body.show-help #help-screen {
- display: block;
-}
-
-body.show-help #world-container {
- /* a little gratuitous filter nonsense, why not. */
- -webkit-filter: blur(1px);
-}
-
-#world-container {
- position: absolute;
- left: 0px;
- top: 0px;
- width: 100%;
- height: 100%;
- display: none;
-}
-
-#world {
- /* container for everything. */
- position: absolute;
- left: 0px;
- top: 0px;
- /* will be resized via JS ... */
- width: 0px;
- height: 0px;
- _background: #000;
-}
-
-.space {
- /* the final frontier. */
- /*
- background-color: #000;
- */
-}
-
-.stars {
- display: none;
- position:fixed;
- left: 0px;
- top: 0px;
- width: 100%;
- height: 100%;
- /* background image? parallax? */
-}
-
-.ship,
-.ship-gunfire,
-.bad-guy,
-.turret,
-.turret-gunfire,
-.block,
-.wall {
- position: absolute;
- width: 31px;
- height: 31px;
- overflow: hidden;
-}
-
-.transform-sprite {
- position: absolute;
- top: 0px;
- left: 0px;
- width: 32px;
- height: 128px;
- overflow: visible;
-}
-
-/* except turret gunfire, which is relative to container. */
-.turret {
- overflow: visible;
-}
-
-#world.hide-wall .wall,
-#world.hide-ship .ship,
-#world.hide-ship-gunfire .ship-gunfire,
-#world.hide-bad-guy .bad-guy,
-#world.hide-turret .turret,
-#world.hide-turret-gunfire .turret-gunfire,
-#world.hide-block .block,
-#world.hide-spaceball .spaceball {
- /* for performance testing? */
- display: none !important;
-}
-
-.ship {
- position: absolute;
- /* ship.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAABTUlEQVR42tWWsUoEMRRFB8VCxEZEdz/DxsJCLLdwLLe1EUvBynZawcZfyOeILJZ262IhaGOxiAZ24kGyEJKQFxMsvHBgCHlzhkxmXprf5Ppo37g0Nen7flgjon4dtiXJGDR0FaJjeINxSmIcOknk1a/CCO5gASaQMbABczAxmTGmBeWLiILW3uM0Uj+DgS87gK/I5KmxCUQ2zHmAR6/uAy4aG1FmkxRZmYuGG9hpSEqmrUQWhbJXOM/d4pOERJLNYEVQ2BdPSkU2bY5ImUQO99QPQlRsmYxPrSh2T0HkCUL+rah+6f50M8jbuz5t/gdbGGqnOYJNOINnKJEs6STRCF6cggJJQsbgGpzAPSy8gqcMyQS0KGNgCz59AVzB7rLxce0+vdf4ov1Mw1Bq5ZfS70rqZ9K54R1uYZAtCmVzTxImelSSRcEZpCmJLJLzDQ0QSrGhWeNgAAAAAElFTkSuQmCC) no-repeat 50% 50%;
- width: 26px;
- height: 26px;
- padding: 3px;
- border-radius: 32px;
- -moz-transform: rotate(0deg), scale3d(1,1,1);
- -moz-transition: box-shadow 0.2s ease-in-out;
- -moz-transition-property: -moz-transform, box-shadow;
- -ms-transform: rotate(0deg), scale3d(1,1,1);
- -ms-transition: box-shadow 0.2s ease-in-out;
- -ms-transition-property: -ms-transform, box-shadow;
- -webkit-transform: rotate(0deg), scale3d(1,1,1);
- -webkit-transition: box-shadow 0.2s ease-in-out;
- -webkit-transition-property: -webkit-transform, box-shadow;
- -o-transform: rotate(0deg), scale3d(1,1,1);
- -o-transition-property: -o-transform, box-shadow;
-}
-
-.ship.hidden {
- -webkit-transition: none;
- -moz-transition: none;
- -ms-transition: none;
- -o-transition: none;
- -webkit-transform: scale3d(0,0,1) !important;
- -moz-transform: scale3d(0,0,1) !important;
- -ms-transform: scale3d(0,0,1) !important;
- -o-transform: scale3d(0,0,1) !important;
- *display: none; /* IE 8 */
-}
-
-@-moz-keyframes thrustpulse {
-  from {
-    box-shadow: 0px 0px 0px rgba(255,32,32,0);
-  }
-  to {
-    box-shadow: 0px 0px 16px rgba(255,32,32,1);
-  }
-}
-
-@-webkit-keyframes thrustpulse {
-  from {
-    box-shadow: 0px 0px 0px rgba(255,32,32,0);
-  }
-  to {
-    box-shadow: 0px 0px 16px rgba(255,32,32,1);
-  }
-}
-
-.ship.thrusting {
- /* different background image? */
- box-shadow: 0px 0px 8px rgba(255,32,32,1);
- -moz-animation-duration: 0.5s;
- -moz-animation-name: thrustpulse;
- -moz-animation-iteration-count: infinite;
- -moz-animation-direction: alternate;
- -webkit-animation-duration: 0.5s;
- -webkit-animation-name: thrustpulse;
- -webkit-animation-iteration-count: infinite;
- -webkit-animation-direction: alternate;
-}
-
-.ship-thrust-up {
- -moz-transform: rotate(0deg);
- -ms-transform: rotate(0deg);
- -webkit-transform: rotate(0deg);
-}
-
-.ship.thrust-up.thrust-left {
- -moz-transform: rotate(-45deg);
- -ms-transform: rotate(-45deg);
- -webkit-transform: rotate(-45deg);
-}
-
-.ship.thrust-up.thrust-right {
- -moz-transform: rotate(45deg);
- -ms-transform: rotate(45deg);
- -webkit-transform: rotate(45deg);
-}
-
-.ship.thrust-right {
- -moz-transform: rotate(90deg);
- -ms-transform: rotate(90deg);
- -webkit-transform: rotate(90deg);
-}
-
-.ship.thrust-down {
- -moz-transform: rotate(180deg);
- -ms-transform: rotate(180deg);
- -webkit-transform: rotate(180deg);
-}
-
-.ship.thrust-down.thrust-left {
- -moz-transform: rotate(-135deg);
- -ms-transform: rotate(-135deg);
- -webkit-transform: rotate(-135deg);
-}
-
-.ship.thrust-down.thrust-right {
- -moz-transform: rotate(135deg);
- -ms-transform: rotate(135deg);
- -webkit-transform: rotate(135deg);
-}
-
-.ship.thrust-left {
- -moz-transform: rotate(-90deg);
- -ms-transform: rotate(-90deg);
- -webkit-transform: rotate(-90deg);
-}
-
-.ship-gunfire {
- position: absolute;
- width: 6px;
- height: 6px;
- background: #fff;
- border-radius: 100%;
-}
-
-.big-explosion {
- position: absolute;
- width: 96px;
- height: 80px;
- margin-left: -48px;
- margin-top: -40px;
- /* explosion-96.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAFABAMAAACxbWSJAAAAFVBMVEUAAAA+MaJcRwCAgICJQDbQ3HH///+xGu2/AAAAAXRSTlMAQObYZgAAASVJREFUaN7tm9ENwyAMRLNCV+gKXYEVukL3H6HmAwnRAkZKyp1776dKxYvkEoyN0uMQQmwiGZ7v0IWbUa5fBpvQDmhvwCDUg6YBAwtloCtgUCFTgnYnAwmnCxGeJfY1HSG3RtjjItQaQohdncrS0gQTUsXTYBPqgbXIIKQBedv6CB5QKFIb7HACgYRyMQocXfBMnoTfCMkJqtBbNExChHmIJNStfbt4WATt0/sFzQOO0PsBlqp7EGHUNHWPVIkExl6U8VmaboYSLhe+JWEmQVXlfiEtIkGCBAlXC8reOEL0Autu5EIlfzII/9CLMglCCCHOpz4AdL3yCShEOat8GEuVAJgwPb0CFnoHa2xCmTB3sQ4m9ArdfBMmgT0vLf1fAFQQQtDzBklNU5sbQcADAAAAAElFTkSuQmCC) no-repeat 0px -96px;
-}
-
-.bad-guy {
- position: absolute;
- width: 32px;
- height: 32px;
- visibility: hidden;
-}
-
-.bad-guy .icon {
- position: absolute;
- width: 24px;
- height: 24px;
- top: 4px;
- left: 4px;
-}
-
-.bad-guy.x .icon {
- /* badguy-x.png */
- background: transparent url(data:image/png;base64,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) no-repeat 0px 0px;
-}
-
-.bad-guy.smiley .icon {
- /* badguy-smiley.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAABICAYAAADs+TUPAAAApElEQVR42u2YOw6AMAxDuf+JejsQU5ZSQ0KsNrUlT1R+DM1HPSQpX621c2R3qMeJ4eascAx5OHi7E4K/J/x9YYCpc+iNuTeJXmjxViFJG49O+kxOnc1zAtIbXWcuDGexOxwDzJMBsAUoBgC70H+1AK4oEVC/m/I3O62M0u5CRVZ88YqH8/ciHP4dYN4JgL0GwPNWhOUAhOugZ241E5pdQHrtWlsXbCcLmuCbjiAAAAAASUVORK5CYII=) no-repeat 0px 0px;
-}
-
-.bad-guy.bird .icon {
- /* badguy-bird.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAABIAgMAAACRl92cAAAACVBMVEUAAAAAAADZ4YHc4ZZkAAAAAXRSTlMAQObYZgAAAFpJREFUGNPN0SEOw1AMBNGnD32SqKfMOYKMAvaUBd+gRYHtEEtGqxmeKWjrZJ30/hwcqOrGSk64L/DK56n2e2ZEgsp9pVWS9H/u/Da4tY7kUT4Bdo6JM6meeQNeBBzVDccw4gAAAABJRU5ErkJggg==) no-repeat 0px 0px;
-}
-
-.bad-guy.exploding {
- background: transparent url(../image/badguy-boom.png) no-repeat 0px 0px;
-}
-
-.bad-guy.exploding .icon {
- display: none;
-}
-
-.turret-gunfire {
- /* turret-gunfire.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAABACAYAAAB7jnWuAAAAO0lEQVR42u3XsQkAQAgEwe+/ab8EBUWTmVzY7PABmWgScB8AANZQAAAwNcPdewECBAgQIEDAeoAvGaj6ZC38LpiJVU0AAAAASUVORK5CYII=) no-repeat 0px 0px;
- /* initially, hide. */
- visibility: hidden;
-}
-
-.turret-gunfire.up,
-.turret-gunfire.down {
- background-position: 2px -32px;
-}
-
-.turret-gunfire.left,
-.turret-gunfire.right {
- background-position: 0px 0px;
-}
-
-.block.type-0 {
- border: 1px dotted #3399ff;
-}
-
-.block.type-0,
-.block.type-0 .transform-sprite {
- /* block-type-0.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAACAAQMAAABQqPlZAAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAERJREFUKJFjYMAC+P///wAheBgYDGhNIGwjFiB08DEwFEC5DYzUJaDGU+Y+At7n/wAkOATwEWAlNAs/0mKLsQFGUC1+AXEhYCccrnvbAAAAAElFTkSuQmCC) no-repeat 0px 0px;
-}
-
-.block.type-1 {
- border: 1px dotted #ff3333;
-}
-
-.block.type-1,
-.block.type-1 .transform-sprite {
- /* block-type-1.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAACAAgMAAAAXCIOJAAAADFBMVEUAAAAAAABoqUH///+Pb14MAAAAAXRSTlMAQObYZgAAAERJREFUOI3NkLENADAIw/Jkn+TJFFXsyRBVeEDeggw48CEEc7aI8XMKq89ppJAZMba29bGkKiOZf772qUYKkBFjK9LnApuVuQAKuhHCAAAAAElFTkSuQmCC) no-repeat 0px 0px;
-}
-
-.block.type-2 {
- border: 1px dotted #33ff33;
-}
-
-.block.type-2,
-.block.type-2 .transform-sprite {
- /* block-type-2.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAACAAgMAAAAXCIOJAAAADFBMVEUAAABoqUGJQDb///8xngp2AAAAAXRSTlMAQObYZgAAAE9JREFUOI3Nk7EBwDAMwvIkT+pJ+kHRkCFMGm3ZnPOTtm0HAFmQlgUYIBPEzLei/ARYQBsB20+Y8JofM7PaXTg0t3jOj/h540d1UHT5rp8PSTfuIAS+AyMAAAAASUVORK5CYII=) no-repeat 0px 0px;
-}
-
-.block.type-3 {
- border: 1px dotted #ffff33;
-}
-
-.block.type-3,
-.block.type-3 .transform-sprite {
- /* block-type-3.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAACAAgMAAAAXCIOJAAAADFBMVEUAAAAAAACJQDb///+BW6ugAAAAAXRSTlMAQObYZgAAAERJREFUOI3NkLENADAIw/Jkn+TJFFXsyRBVeEDeggw48CEEc7aI8XMKq89ppJAZMba29bGkKiOZf772qUYKkBFjK9LnApuVuQAKuhHCAAAAAElFTkSuQmCC) no-repeat 0px 0px;
-}
-
-#world.phase-1 .block {
- background-position: 0px -32px;
-}
-
-#world.phase-2 .block {
- background-position: 0px -64px;
-}
-
-#world.phase-3 .block {
- background-position: 0px -96px;
-}
-
-#world.phase-4 .block {
- background-position: 0px -128px;
-}
-
-/* translate3d-style GPU acceleration for sprites */
-
-#world.use-experimental-transforms .block {
-  /* no background here - move into an inner element */
-	background: transparent;
-}
-
-/* inner sprite element: this element gets the sprite and will be transformed, sliding within the container. */
-
-#world.use-experimental-transforms .block .transform-sprite {
- -webkit-transform: translate3d(0px, 0px, 0px);
-}
-
-#world.use-experimental-transforms.phase-1 .block .transform-sprite {
- -webkit-transform: translate3d(0px, -32px, 0px);
-}
-
-#world.use-experimental-transforms.phase-2 .block .transform-sprite {
- -webkit-transform: translate3d(0px, -64px, 0px);
-}
-
-#world.use-experimental-transforms.phase-3 .block .transform-sprite {
- -webkit-transform: translate3d(0px, -96px, 0px);
-}
-
-#world.use-experimental-transforms.phase-4 .block .transform-sprite {
- -webkit-transform: translate3d(0px, -128px, 0px);
-}
-
-/* step-based animations, too */
-
-#world.use-experimental-transforms.pulse-interval-0 .block .transform-sprite {
- -webkit-animation: pulse 2s steps(4, end) infinite;
- -moz-animation: pulse 2s steps(4, end) infinite;
- animation: pulse 2s steps(4, end) infinite;
-}
-
-#world.use-experimental-transforms.pulse-interval-1 .block .transform-sprite {
- -webkit-animation: pulse 1.467s steps(4, end) infinite;
- -moz-animation: pulse 1.467s steps(4, end) infinite;
- animation: pulse 1.467s steps(4, end) infinite;
-}
-
-#world.use-experimental-transforms.pulse-interval-2 .block .transform-sprite {
- -webkit-animation: pulse 0.933s steps(4, end) infinite;
- -moz-animation: pulse 0.933s steps(4, end) infinite;
- animation: pulse 0.933s steps(4, end) infinite;
-}
-
-#world.use-experimental-transforms.pulse-interval-3 .block .transform-sprite {
- -webkit-animation: pulse 0.4s steps(4, end) infinite;
- -moz-animation: pulse 0.4s steps(4, end) infinite;
- animation: pulse 0.4s steps(4, end) infinite;
-}
-
-@-webkit-keyframes pulse {
- from { -webkit-transform: translate3d(0px, 0px, 0px); }
- to { -webkit-transform: translate3d(0px, -128px, 0px); }
-}
-
-@-moz-keyframes pulse {
- from { -moz-transform: translate3d(0px, 0px, 0px); }
- to { -moz-transform: translate3d(0px, -128px, 0px); }
-}
-
-@keyframes pulse {
- from { transform: translate3d(0px, 0px, 0px); }
- to { transform: translate3d(0px, 0px, 0px); }
-}
-
-.block.exploding,
-.wall.exploding,
-.turret.exploding {
- /* death sequence */
- /* base-explosion.png */
- /* TODO: move further down so !important isn't needed? */
- background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAADACAMAAABS4JFEAAAAElBMVEVVVVVoqUF6v8d8cNqJQDb///8IAG8eAAABoklEQVR42u2YYYuDMBBEbbX//y/XAQeWB2aWnhcsd/Ml6+ZhZiRW6/LY9dqlcdmlUXK/B0gEt0MZqA0BBhcrAUOTLeDCFNZpCmtyij6g0ZO89BngEh4FqM6AT+kGYwYgpFDdAyjBfYAbZJhCmpTCsKAMbJAnJIE9wKeVNigDmmSzGo3A0GQfwMVBCgATU1gR+FmK//3w9/aDJy1D6y4dZ8CNCqyH1O8Ba5GOK/gZYJMt4PYpNAYAJlXTZAa4WSqgfgY8YYOMmQEXhmg6AkOTPYDbnCYDcPMUVgaqIf5WL1ILkPhG6rkMuGHxNozAL6doAUOTqjNgM2WESQLXp+Cl/QzQ6K3HmBngPxKajsDQZBPgU5cmCUxOoboHSAZpsg88D7HOQG3YqGovlQE2vKT7ERiaFBSBC1NYpymsySl6gAuPERguwe3XA+op6+g6AkOTWqYHPItoMgM85TCFgIkpXGfAPzX8FuYlM2CdvR5koDYIZ4DPTgPoBeBOKSyuH4ELUvC7KB+sGeCLBmNmgN9EaToAwaTrAHCb0ySBL0phZSDf/m+SPju9I9KB0AAAAABJRU5ErkJggg==) !important;
- background-repeat: no-repeat;
- background-position: 0px 0px;
-}
-
-.block-exploding {
- margin: 4px;
- width: 26px;
- height: 26px;
-}
-
-#world.disable-pulse .block {
- /* no pulse effect */
- background-position: 0px -32px !important;
-}
-
-#world.use-experimental-transforms.disable-pulse .block .transform-sprite {
- /* use-transform equivalent */
- -webkit-transform: none !important;
-}
-
-#world.disable-sprites div {
- /* nuke sprites */
- background-image: none !important;
- outline: 1px solid #999;
-}
-
-#world.disable-css3 div {
- border-radius: none !important;
- -moz-transform: none !important;
- -moz-transition: none !important;
- -webkit-transform: none !important;
- -webkit-transition: none !important;
- -webkit-animation: none !important;
- -moz-animation: none !important;
- box-shadow: none !important;
- text-shadow: none !important;
-}
-
-.block {
- border: none !important;
-}
-
-.wall,
-.turret,
-.turret-gunfire {
- /* the stuff which bases are made of. */
- width: 32px;
- height: 32px;
-}
-
-.turret.type-1,
-.wall.type-1 {
- /* base-type-1.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAFAAgMAAACgl5aJAAAADFBMVEUAAABoqUGJQDb///8xngp2AAAAAXRSTlMAQObYZgAAAKNJREFUSMfdlUEOAyEMA/3JfNKfdA+F9lKMV6xWUYOQ5gDBcUAAj4e2IElb+CxegmZeA0igmzfaQOROaNAlo87gq34N2zypP092vZM/6fvq9jLu64QsaISDJM9f359WemrMQ2ARLDqQSlLJQY1wkOkhQdLDGMcQnBVoTmpPPEx6cVvff3x6lEA6eBdDOEjyZJ9wLz0kJHoA51VfA4mau1bQXs8LVoJ9nyMPuW8AAAAASUVORK5CYII=) no-repeat 0px 0px;
-}
-
-.turret.type-2,
-.wall.type-2 {
- /* base-type-2.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAFAAgMAAACgl5aJAAAADFBMVEUAAABoqUGJQDb///8xngp2AAAAAXRSTlMAQObYZgAAAJBJREFUSMfl0zEOgDAMA0B/0p/0J80A2SC1BKoi0S43lDRNAjBwmeYKrMMNHCCJM602XmB3fSbFMc0VtvdsWp2D/+uvyzx3h9/Pz6g4LL6DKIjqYNM23YHX6pDlI0FSj2u/RnBXkHPy9qSGSS8+6zvgGraCbEgdzscIHZI4d7dPz0eCrR5QjfozJLC+esL4fA528+t4JWi/SwAAAABJRU5ErkJggg==) no-repeat 0px 0px;
-}
-
-.turret.type-3,
-.wall.type-3 {
- /* base-type-3.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAFAAgMAAACgl5aJAAAADFBMVEUAAABoqUGJQDb///8xngp2AAAAAXRSTlMAQObYZgAAAItJREFUSMfl00EOgCAMRNG5ZC/5LzkuBFdam6ikiSUmbwFSWpAahm3f4pj8PbrVxjdYXZ9OqNZnac+6ofC+/hoekeH396cVYnwPQSCCDHbYDmeIERlq+YCAHGM8RmGvQs6Vs1dqWOnFa32Xjhc9gS3IsB8GZaj852z37vmAbHKIedWvAYq56grt89kAOmct7wxOsZAAAAAASUVORK5CYII=) no-repeat 0px 0px;
-}
-
-.turret.type-4,
-.wall.type-4 {
- /* base-type-4.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAFAAgMAAACgl5aJAAAADFBMVEUAAABoqUGJQDb///8xngp2AAAAAXRSTlMAQObYZgAAAItJREFUSMfl0zEOgDAMA0B/0p/0J81AywTBElBFIl1ugDZNUqBhkOQtjo+/R7fa8Aar69MJaX2W9qwbgvf11+CICr+fn1bg8fQfQRREVbBpm66QzU+SjwRJNcZ6jOCsIOfk7kkNk1681nfAHgM1IRtShf0yQoVkn7PTu+cjwVYNaI76NSRw/nWF9vlshYmuYE68ZvoAAAAASUVORK5CYII=) no-repeat 0px 0px;
-}
-
-.wall.upRight {
- background-position: 0px 0px;
-}
-
-.wall.rightDown { /* for level editor */
- background-position: 0px -32px;
-}
-
-.wall.downLeft { /* for level editor */
- background-position: 0px -64px;
-}
-
-.wall.downRight { /* for level editor */
- background-position: 0px -96px;
-}
-
-.wall.horizontal {
- background-position: 0px -128px;
-}
-
-.turret.down.dead,
-.turret.up.dead {
- /* dead turrets also revert to walls. */
- /* !important needed to override JS when turret explodes. */
- background-position: 0px -128px !important;
-}
-
-.turret.left.dead,
-.turret.right.dead,
-.wall.vertical {
- /* dead turrets also revert to walls. */
- background-position: 0px -160px;
-}
-
-.turret.up {
- background-position: 0px -192px;
-}
-
-.turret.down {
- background-position: 0px -224px;
-}
-
-.turret.left {
- background-position: 0px -256px;
-}
-
-.turret.right {
- background-position: 0px -288px;
-}
-
-.wall.exploded,
-.turret.exploded {
- /* death sequence complete */
- display: none;
-}
-
-.spaceball {
- position: absolute;
- width: 32px;
- height: 32px;
- /* spaceball.png */
- background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAcCAYAAAAAwr0iAAAAgElEQVR42u2WQQqAMBAD+zjv4oP8hj/xffVacxkWA6HFQG4hO+1SaPuq89776GZVHoAHqikfB3AMeFml+fUBrmMbLXn2bABsER4gD1AsrA5A4DwAFNqvXJUHkID92VF/HqBYQIVVoAkAyKIqYB7g/w+Q3CtaH4BWEgCIfstZeYAH+iJJMw1O7SUAAAAASUVORK5CYII=) no-repeat 0px 0px;
- visibility: hidden;
-}
-
-#world.use-transform .block,
-#world.use-transform .bad-guy,
-#world.use-transform .ship-gunfire,
-#world.use-transform .turret,
-#world.use-transform .turret-gunfire,
-#world.use-transform .spaceball,
-#world.use-transform .big-explosion,
-#world.use-transform .ship-gunfire {
- /* GPU accelation? Don't mind if I do. */
- -ms-transform: translate3d(0px, 0px, 0px);
- -moz-transform: translate3d(0px, 0px, 0px);
- -webkit-transform: translate3d(0px, 0px, 0px);
-}
-
-#world.use-transform .turret.dead {
- /* no more GPU for you */
- -ms-transform: none;
- -moz-transform: none;
- -webkit-transform: none;
-}
-
-#footer {
- position: fixed;
- left: 0px;
- bottom: 0px;
- width: 100%;
- min-height: 20px;
- padding: 8px 8px 9px 8px;
- font-size: 0.75em;
- color: #999;
- background-color: #000;
- background-color: rgba(0,0,0,0.9);
- text-shadow: 0px 1px 0px rgba(0,0,0,0.5);
- border-top: 1px solid rgba(255,255,255,0.15);
- z-index: 2;
- line-height: 20px;
-}
-
-#footer p {
- margin: 0px;
- padding: 0px;
-}
-
-#footer span.divider {
- padding: 0px 7px;
- color: #444;
-}
-
-#footer a {
- text-decoration: none;
- color: #6699cc;
-}
-
-#footer a:hover {
- color: #fff;
-}
-
-#footer a.cta {
- padding: 0px 5px;
- text-decoration: none;
- color: #6699cc;
- border-color: #114477;
- line-height: 19px;
- font-weight: bold;
-}
-
-#footer a.cta.help {
- border-radius: 20px;
- width: 10px;
- text-align: center;
- font-weight: bold;
- font-size: 14px;
- line-height: 20px;
- vertical-align: bottom;
-}
-
-#footer a.cta:hover {
- color: #fff;
-}
-
-#points,
-#lives,
-#smartbombs,
-#fps {
- font-weight: bold;
-}
-
-#stats {
- position: fixed;
- top: 0px;
- right: 0px;
- float: right;
- padding: 1.5em;
-}
-
-#original {
- display: none;
-}
-
-/* debug bits */
-
-#debug-panel {
- position: fixed;
- bottom: 38px;
- right: 8px;
- background: #000;
- background-color: rgba(0,0,0,0.9);
- font-family: monaco,"Andale Mono","VT-100","Lucida Console","Courier New",monospace,courier,system,sans-serif;
- font-weight: normal;
- font-size: 10px;
- line-height: 10px;
- color: #999;
- border: 1px dotted #999;
- border-color: rgba(255,255,255,0.25);
- padding: 0.5em;
- display: none;
-}
-
-#debug-panel .debug-header {
- font-weight: bold;
- text-align: center;
- border-bottom: 1px dotted #999;
- border-color: rgba(255,255,255,0.2);
- padding-top: 5px;
- padding-bottom: 5px;
-}
-
-#debug-panel .debug-header:first-child {
- padding-top: 0px;
-}
-
-#debug-form,
-#debug-form ul,
-#debug-form ul li {
- margin: 0px;
- padding: 0px;
-}
-
-#debug-form ul {
- list-style-type: none;
- padding: 5px 0px;
-}
-
-#debug-form ul li {
- padding: 2px 0px;
- color: #666;
-}
-
-#debug-form ul.compact li {
- /* make everything tightly spaced. */
- padding: 0px;
- margin-top: -2px;
-}
-
-#debug-form label {
- position: relative;
-}
-
-#debug-form code {
- display: inline-block;
- color: #336699;
-}
-
-#debug-form .count {
- color: #339933;
-}
-
-a.cta {
- display: inline-block;
- padding: 3px 4px;
- background: #001133;
- border: 1px solid #003366;
- border-radius: 3px;
-}
-
-a.cta:hover,
-#footer a.cta:hover {
- background-color: #336699;
- border-color: #6699cc;
- color: #fff;
-}
-
-a.cta:focus {
- outline: none;
-}
-
-#tweeter {
- display: none;
-}
-
-#footer a.tweeter {
- display: inline-block;
- background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAMCAQAAADFGyU3AAAA4ElEQVQYV1WRsQ4BQRCGlyARlRARUSgUOq8gIQpRSSQSBZHQeQAvIFGpFDoVOREnKo3bN5vf7Mxtzs3lv529/7uZ2TtjDDKGg+SugSYdaE8l8x9oY5ba38jiiXUaKiOExQZV2a04/7IsjmlsLg8/WCCHu+QWEWv0Dy1hKRIrUIQbRqwL+tRVhIfGQd92plxudU1D9BJoh5eHYrlqD0x0Ut9ySzau4CtaTMWivABZVp0C8rMockVBoQ7GKDJS4+HfasdHiNBK2gzir5IM7rIzGv5vyEIV2tBbj+0QOtHQey5+lFrhcFxfM3wAAAAASUVORK5CYII=);
- background-repeat: no-repeat;
- background-position: 50% 50%;
- border-radius: 6px;
- width: 22px;
- height: 19px;
- margin-top: -3px;
- overflow: hidden;
- font-size: 18px;
- line-height: 10px;
- font-weight; bold;
- text-indent: -99em;
- vertical-align: middle;
- text-align: center;
-}
diff --git a/original/font/C64_User_Mono_v1.0-STYLE.eot b/original/font/C64_User_Mono_v1.0-STYLE.eot
deleted file mode 100755
index a1dacd2..0000000
Binary files a/original/font/C64_User_Mono_v1.0-STYLE.eot and /dev/null differ
diff --git a/original/font/C64_User_Mono_v1.0-STYLE.ttf b/original/font/C64_User_Mono_v1.0-STYLE.ttf
deleted file mode 100755
index 137096f..0000000
Binary files a/original/font/C64_User_Mono_v1.0-STYLE.ttf and /dev/null differ
diff --git a/original/font/C64_User_Mono_v1.0-STYLE.woff b/original/font/C64_User_Mono_v1.0-STYLE.woff
deleted file mode 100755
index 0fa58eb..0000000
Binary files a/original/font/C64_User_Mono_v1.0-STYLE.woff and /dev/null differ
diff --git a/original/font/license.txt b/original/font/license.txt
deleted file mode 100755
index acde620..0000000
--- a/original/font/license.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-
-Fonts in this package are (c) 2010 Style.
-
-You MAY NOT: sell this font; include/redistribute this font in any font collection regardless of pricing; provide the font for direct download from any web site. You MAY: link to "http://style64.org/c64-truetype" in order for others to download and install the font; embed this font or its .eot and .woff variants without any modification and using the same filename it was provided with for display on any web site using @font-face rules; use this font in static images and vector art; include this font without any modification and using the same filename it was provided with as part of a software package but ONLY if said software package is freely provided to end users. You may also contact us to negotiate a (possibly commercial) license for your use outside of these guidelines at "http://style64.org/contact-style".
-
-At all times the most recent version of this license can be found at "http://style64.org/c64-truetype/license".
diff --git a/original/image/badguy-bird.png b/original/image/badguy-bird.png
deleted file mode 100644
index 85d15de..0000000
Binary files a/original/image/badguy-bird.png and /dev/null differ
diff --git a/original/image/badguy-smiley.png b/original/image/badguy-smiley.png
deleted file mode 100644
index f1c652b..0000000
Binary files a/original/image/badguy-smiley.png and /dev/null differ
diff --git a/original/image/badguy-x.png b/original/image/badguy-x.png
deleted file mode 100644
index ae8d6e1..0000000
Binary files a/original/image/badguy-x.png and /dev/null differ
diff --git a/original/image/base-explosion.png b/original/image/base-explosion.png
deleted file mode 100644
index 27918ae..0000000
Binary files a/original/image/base-explosion.png and /dev/null differ
diff --git a/original/image/base-type-1.png b/original/image/base-type-1.png
deleted file mode 100644
index d637b63..0000000
Binary files a/original/image/base-type-1.png and /dev/null differ
diff --git a/original/image/base-type-2.png b/original/image/base-type-2.png
deleted file mode 100644
index f624075..0000000
Binary files a/original/image/base-type-2.png and /dev/null differ
diff --git a/original/image/base-type-3.png b/original/image/base-type-3.png
deleted file mode 100644
index aa49f01..0000000
Binary files a/original/image/base-type-3.png and /dev/null differ
diff --git a/original/image/base-type-4.png b/original/image/base-type-4.png
deleted file mode 100644
index 75902d1..0000000
Binary files a/original/image/base-type-4.png and /dev/null differ
diff --git a/original/image/block-type-0.png b/original/image/block-type-0.png
deleted file mode 100644
index d4681aa..0000000
Binary files a/original/image/block-type-0.png and /dev/null differ
diff --git a/original/image/block-type-1.png b/original/image/block-type-1.png
deleted file mode 100644
index 7d56e6d..0000000
Binary files a/original/image/block-type-1.png and /dev/null differ
diff --git a/original/image/block-type-2.png b/original/image/block-type-2.png
deleted file mode 100644
index 87c2ab0..0000000
Binary files a/original/image/block-type-2.png and /dev/null differ
diff --git a/original/image/block-type-3.png b/original/image/block-type-3.png
deleted file mode 100644
index 49392f5..0000000
Binary files a/original/image/block-type-3.png and /dev/null differ
diff --git a/original/image/cursor.gif b/original/image/cursor.gif
deleted file mode 100644
index f784577..0000000
Binary files a/original/image/cursor.gif and /dev/null differ
diff --git a/original/image/grid-tile.png b/original/image/grid-tile.png
deleted file mode 100644
index 00fd95c..0000000
Binary files a/original/image/grid-tile.png and /dev/null differ
diff --git a/original/image/ship.png b/original/image/ship.png
deleted file mode 100644
index 5c9bcab..0000000
Binary files a/original/image/ship.png and /dev/null differ
diff --git a/original/image/title-screen-cutout.png b/original/image/title-screen-cutout.png
deleted file mode 100644
index 5c04f69..0000000
Binary files a/original/image/title-screen-cutout.png and /dev/null differ
diff --git a/original/image/title-screen-letter-tile.gif b/original/image/title-screen-letter-tile.gif
deleted file mode 100644
index 6211be1..0000000
Binary files a/original/image/title-screen-letter-tile.gif and /dev/null differ
diff --git a/original/image/turret-gunfire.png b/original/image/turret-gunfire.png
deleted file mode 100644
index 6b8775c..0000000
Binary files a/original/image/turret-gunfire.png and /dev/null differ
diff --git a/original/image/turrets.png b/original/image/turrets.png
deleted file mode 100644
index 997316d..0000000
Binary files a/original/image/turrets.png and /dev/null differ
diff --git a/original/index.html b/original/index.html
index 9d733e2..27dc3c0 100644
--- a/original/index.html
+++ b/original/index.html
@@ -3,7 +3,7 @@
 <head>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
   <title>SURVIVOR (1982 Commodore 64 game remake)</title>
-  <link rel="stylesheet" href="css/survivor.css" />
+  <link rel="stylesheet" href="../assets/css/survivor.css" />
 </head>

 <body>