diff --git a/planetstack/core/xoslib/dashboards/gentle.html b/planetstack/core/xoslib/dashboards/gentle.html
new file mode 100644
index 0000000..707f10e
--- /dev/null
+++ b/planetstack/core/xoslib/dashboards/gentle.html
@@ -0,0 +1,25 @@
+    <div class="navbar navbar-inverse navbar-fixed-top">
+      <div class="navbar-inner">
+        <div class="container">
+          <span class="brand">Contact manager</span>
+        </div>
+      </div>
+    </div>
+
+    <div id="main-region" class="container">
+      <p>Here is static content in the web page. You'll notice that it gets replaced by our app as soon as we start it.</p>
+    </div>
+
+    <script type="text/template" id="contact-list-item">
+      <p><%- firstName %> <%- lastName %></p>
+    </script>
+
+<script src="{{ STATIC_URL }}/js/vendor/underscore-min.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/backbone.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/backbone.wreqr.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/backbone.babysitter.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/backbone.marionette.js"></script>
+<script src="{{ STATIC_URL }}/js/xoslib/xos-backbone.js"></script>
+<script src="{{ STATIC_URL }}/js/gentle.js"></script>
+
+
diff --git a/planetstack/core/xoslib/dashboards/sliverListTest.html b/planetstack/core/xoslib/dashboards/sliverListTest.html
index 61c54cf..255cbad 100644
--- a/planetstack/core/xoslib/dashboards/sliverListTest.html
+++ b/planetstack/core/xoslib/dashboards/sliverListTest.html
@@ -1,11 +1,11 @@
 {% load mustache %}
 {% load straight_include %}
 
-<script src="{{ STATIC_URL }}/js/underscore-min.js"></script>
-<script src="{{ STATIC_URL }}/js/backbone-min.js"></script>
-<script src="{{ STATIC_URL }}/js/ICanHaz.min.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/underscore-min.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/backbone-min.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/ICanHaz.min.js"></script>
 
-<script src="{{ STATIC_URL }}/js/xos-backbone.js"></script>
+<script src="{{ STATIC_URL }}/js/xoslib/xos-backbone.js"></script>
 <script src="{{ STATIC_URL }}/js/sliverListTest.js"></script>
 
 <script type="text/html" id="sliverTemplate">
diff --git a/planetstack/core/xoslib/dashboards/xosDeveloper.html b/planetstack/core/xoslib/dashboards/xosDeveloper.html
index 110f673..c6002d7 100644
--- a/planetstack/core/xoslib/dashboards/xosDeveloper.html
+++ b/planetstack/core/xoslib/dashboards/xosDeveloper.html
@@ -1,10 +1,10 @@
-<script src="{{ STATIC_URL }}/js/underscore-min.js"></script>
-<script src="{{ STATIC_URL }}/js/backbone.js"></script>
-<script src="{{ STATIC_URL }}/js/backbone.wreqr.js"></script>
-<script src="{{ STATIC_URL }}/js/backbone.babysitter.js"></script>
-<script src="{{ STATIC_URL }}/js/backbone.marionette.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/underscore-min.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/backbone.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/backbone.wreqr.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/backbone.babysitter.js"></script>
+<script src="{{ STATIC_URL }}/js/vendor/backbone.marionette.js"></script>
 
-<script src="{{ STATIC_URL }}/js/xos-backbone.js"></script>
+<script src="{{ STATIC_URL }}/js/xoslib/xos-backbone.js"></script>
 <script src="{{ STATIC_URL }}/js/xosDeveloper.js"></script>
 
 <div id="developerView">
diff --git a/planetstack/core/xoslib/dashboards/xsh.html b/planetstack/core/xoslib/dashboards/xsh.html
index 6e5103a..65a44da 100644
--- a/planetstack/core/xoslib/dashboards/xsh.html
+++ b/planetstack/core/xoslib/dashboards/xsh.html
@@ -6,16 +6,16 @@
 
   </div>
   <link rel="stylesheet" type="text/css" href="{% static 'shell/opencloud_shell.css' %}" media="all">
-  <script src="{{ STATIC_URL }}/js/underscore-min.js"></script>
-  <script src="{{ STATIC_URL }}/js/backbone-min.js"></script>
-  <script src="{{ STATIC_URL }}/js/ICanHaz.min.js"></script>
-  <script src="{{ STATIC_URL }}/js/xos-backbone.js"></script>
-  <script src="{% static 'xsh/xsh.js' %}"></script>
-  <script src="{% static 'xsh/object_id.js' %}"></script>
-  <script src="{% static 'xsh/constants.js' %}"></script>
-  <script src="{% static 'xsh/utils.js' %}"></script>
-  <script src="{% static 'xsh/shell_utils.js' %}"></script>
-  <script src="{% static 'xsh/tokens.js' %}"></script>
+  <script src="{{ STATIC_URL }}/js/vendor/underscore-min.js"></script>
+  <script src="{{ STATIC_URL }}/js/vendor/backbone-min.js"></script>
+  <script src="{{ STATIC_URL }}/js/vendor/ICanHaz.min.js"></script>
+  <script src="{{ STATIC_URL }}/js/xoslib/xos-backbone.js"></script>
+  <script src="{% static 'js/xsh/xsh.js' %}"></script>
+  <script src="{% static 'js/xsh/object_id.js' %}"></script>
+  <script src="{% static 'js/xsh/constants.js' %}"></script>
+  <script src="{% static 'js/xsh/utils.js' %}"></script>
+  <script src="{% static 'js/xsh/shell_utils.js' %}"></script>
+  <script src="{% static 'js/xsh/tokens.js' %}"></script>
 
 
 
diff --git a/planetstack/core/xoslib/static/js/angrycats.js b/planetstack/core/xoslib/static/js/angrycats.js
deleted file mode 100644
index a599a83..0000000
--- a/planetstack/core/xoslib/static/js/angrycats.js
+++ /dev/null
@@ -1,170 +0,0 @@
-MyApp = new Backbone.Marionette.Application();
-
-MyApp.addRegions({
-    mainRegion: "#content"
-});
-
-AngryCat = Backbone.Model.extend({
-    defaults: {
-	votes: 0
-    },
-  
-    addVote: function(){
-	this.set('votes', this.get('votes') + 1);
-    },
-  
-    rankUp: function() {
-	this.set({rank: this.get('rank') - 1});
-    },
-  
-    rankDown: function() {
-	this.set({rank: this.get('rank') + 1});
-    }
-});
-
-AngryCats = Backbone.Collection.extend({
-    model: AngryCat,
-  
-    initialize: function(cats){
-	var rank = 1;
-	_.each(cats, function(cat) {
-	    cat.set('rank', rank);
-	    ++rank;
-	});
-    
-	this.on('add', function(cat){
-	    if( ! cat.get('rank') ){
-		var error = Error("Cat must have a rank defined before being added to the collection");
-		error.name = "NoRankError";
-		throw error;
-	    }
-	});
-    
-	var self = this;
-
-	MyApp.on("rank:up", function(cat){
-	    if (cat.get('rank') === 1) {
-        // can't increase rank of top-ranked cat
-		return true;
-	    }
-	    self.rankUp(cat);
-	    self.sort();
-	    self.trigger("reset");
-	});
-
-	MyApp.on("rank:down", function(cat){
-	    if (cat.get('rank') === self.size()) {
-        // can't decrease rank of lowest ranked cat
-		return true;
-	    }
-	    self.rankDown(cat);
-	    self.sort();
-	    self.trigger("reset");
-	});
-    
-	MyApp.on("cat:disqualify", function(cat){
-	    var disqualifiedRank = cat.get('rank');
-	    var catsToUprank = self.filter(
-		function(cat){ return cat.get('rank') > disqualifiedRank; }
-	    );
-	    catsToUprank.forEach(function(cat){
-		cat.rankUp();
-	    });
-	    self.trigger('reset');
-	});
-    },
-
-    comparator: function(cat) {
-	return cat.get('rank');
-    },
-  
-    rankUp: function(cat) {
-    // find the cat we're going to swap ranks with
-	var rankToSwap = cat.get('rank') - 1;
-	var otherCat = this.at(rankToSwap - 1);
-    
-    // swap ranks
-	cat.rankUp();
-	otherCat.rankDown();
-    },
-  
-    rankDown: function(cat) {
-    // find the cat we're going to swap ranks with
-	var rankToSwap = cat.get('rank') + 1;
-	var otherCat = this.at(rankToSwap - 1);
-    
-    // swap ranks
-	cat.rankDown();
-	otherCat.rankUp();
-    }
-});
-
-AngryCatView = Backbone.Marionette.ItemView.extend({
-    template: "#angry_cat-template",
-    tagName: 'tr',
-    className: 'angry_cat',
-  
-    events: {
-	'click .rank_up img': 'rankUp',
-	'click .rank_down img': 'rankDown',
-	'click a.disqualify': 'disqualify'
-    },
-  
-    initialize: function(){
-	this.listenTo(this.model, "change:votes", this.render);
-    },
-  
-    rankUp: function(){
-	this.model.addVote();
-	MyApp.trigger("rank:up", this.model);
-    },
-  
-    rankDown: function(){
-	this.model.addVote();
-	MyApp.trigger("rank:down", this.model);
-    },
-  
-    disqualify: function(){
-	MyApp.trigger("cat:disqualify", this.model);
-	this.model.destroy();
-    }
-});
-
-AngryCatsView = Backbone.Marionette.CompositeView.extend({
-    tagName: "table",
-    id: "angry_cats",
-    className: "table-striped table-bordered",
-    template: "#angry_cats-template",
-    itemView: AngryCatView,
-  
-    initialize: function(){
-	this.listenTo(this.collection, "sort", this.renderCollection);
-    },
-  
-    appendHtml: function(collectionView, itemView){
-	collectionView.$("tbody").append(itemView.el);
-    }
-});
-
-MyApp.addInitializer(function(options){
-    var angryCatsView = new AngryCatsView({
-	collection: options.cats
-    });
-    MyApp.mainRegion.show(angryCatsView);
-});
-
-$(document).ready(function(){
-    var cats = new AngryCats([
-	new AngryCat({ name: 'Wet Cat', image_path: 'assets/images/cat2.jpg' }),
-	new AngryCat({ name: 'Bitey Cat', image_path: 'assets/images/cat1.jpg' }),
-	new AngryCat({ name: 'Surprised Cat', image_path: 'assets/images/cat3.jpg' })
-    ]);
-
-    MyApp.start({cats: cats});
-  
-    cats.add(new AngryCat({
-	name: 'Cranky Cat',
-	image_path: 'assets/images/cat4.jpg',
-	rank: cats.size() + 1
-    }));
-});
diff --git a/planetstack/core/xoslib/static/js/gentle2.js b/planetstack/core/xoslib/static/js/gentle2.js
deleted file mode 100644
index fde3daf..0000000
--- a/planetstack/core/xoslib/static/js/gentle2.js
+++ /dev/null
@@ -1,34 +0,0 @@
-DeveloperApp = new Marionette.Application();
-
-DeveloperApp.addRegions({
-  mainRegion: "#developerView"
-});
-
-DeveloperApp.SlioeDetailView = Marionette.ItemView.extend({
-  template: "#developer-slicedetail-template",
-  tagName: 'tr',
-  className: 'developer_slicedetail'
-});
-
-DeveloperApp.ContactsView = Marionette.CollectionView.extend({
-    tagName: "table",
-    childView: DeveloperApp.ContactItemView
-});
-
-DeveloperApp.on("start", function(){
-    xos.slices.add(        {
-            firstName: "Bob",
-            lastName: "Brigham",
-            phoneNumber: "555-0163"
-        });
-
-    var contactsView = new DeveloperApp.ContactsView({
-        collection: xos.slices
-    });
-
-    DeveloperApp.mainRegion.show(contactsView);
-});
-
-$(document).ready(function(){
-   DeveloperApp.start();
-});
diff --git a/planetstack/core/xoslib/static/js/ICanHaz.min.js b/planetstack/core/xoslib/static/js/vendor/ICanHaz.min.js
similarity index 100%
rename from planetstack/core/xoslib/static/js/ICanHaz.min.js
rename to planetstack/core/xoslib/static/js/vendor/ICanHaz.min.js
diff --git a/planetstack/core/xoslib/static/js/backbone-min.js b/planetstack/core/xoslib/static/js/vendor/backbone-min.js
similarity index 100%
rename from planetstack/core/xoslib/static/js/backbone-min.js
rename to planetstack/core/xoslib/static/js/vendor/backbone-min.js
diff --git a/planetstack/core/xoslib/static/js/backbone-tastypie.js b/planetstack/core/xoslib/static/js/vendor/backbone-tastypie.js
similarity index 100%
rename from planetstack/core/xoslib/static/js/backbone-tastypie.js
rename to planetstack/core/xoslib/static/js/vendor/backbone-tastypie.js
diff --git a/planetstack/core/xoslib/static/js/backbone.babysitter.js b/planetstack/core/xoslib/static/js/vendor/backbone.babysitter.js
similarity index 100%
rename from planetstack/core/xoslib/static/js/backbone.babysitter.js
rename to planetstack/core/xoslib/static/js/vendor/backbone.babysitter.js
diff --git a/planetstack/core/xoslib/static/js/backbone.js b/planetstack/core/xoslib/static/js/vendor/backbone.js
similarity index 100%
rename from planetstack/core/xoslib/static/js/backbone.js
rename to planetstack/core/xoslib/static/js/vendor/backbone.js
diff --git a/planetstack/core/xoslib/static/js/backbone.marionette.js b/planetstack/core/xoslib/static/js/vendor/backbone.marionette.js
similarity index 100%
rename from planetstack/core/xoslib/static/js/backbone.marionette.js
rename to planetstack/core/xoslib/static/js/vendor/backbone.marionette.js
diff --git a/planetstack/core/xoslib/static/js/backbone.marionette.min.js b/planetstack/core/xoslib/static/js/vendor/backbone.marionette.min.js
similarity index 100%
rename from planetstack/core/xoslib/static/js/backbone.marionette.min.js
rename to planetstack/core/xoslib/static/js/vendor/backbone.marionette.min.js
diff --git a/planetstack/core/xoslib/static/js/backbone.wreqr.js b/planetstack/core/xoslib/static/js/vendor/backbone.wreqr.js
similarity index 100%
rename from planetstack/core/xoslib/static/js/backbone.wreqr.js
rename to planetstack/core/xoslib/static/js/vendor/backbone.wreqr.js
diff --git a/planetstack/core/xoslib/static/js/underscore-min.js b/planetstack/core/xoslib/static/js/vendor/underscore-min.js
similarity index 100%
rename from planetstack/core/xoslib/static/js/underscore-min.js
rename to planetstack/core/xoslib/static/js/vendor/underscore-min.js
diff --git a/planetstack/core/xoslib/static/js/xos-backbone.js b/planetstack/core/xoslib/static/js/xoslib/xos-backbone.js
similarity index 100%
rename from planetstack/core/xoslib/static/js/xos-backbone.js
rename to planetstack/core/xoslib/static/js/xoslib/xos-backbone.js
diff --git a/planetstack/core/xoslib/static/xsh/constants.js b/planetstack/core/xoslib/static/js/xsh/constants.js
similarity index 100%
rename from planetstack/core/xoslib/static/xsh/constants.js
rename to planetstack/core/xoslib/static/js/xsh/constants.js
diff --git a/planetstack/core/xoslib/static/xsh/object_id.js b/planetstack/core/xoslib/static/js/xsh/object_id.js
similarity index 100%
rename from planetstack/core/xoslib/static/xsh/object_id.js
rename to planetstack/core/xoslib/static/js/xsh/object_id.js
diff --git a/planetstack/core/xoslib/static/xsh/shell_utils.js b/planetstack/core/xoslib/static/js/xsh/shell_utils.js
similarity index 100%
rename from planetstack/core/xoslib/static/xsh/shell_utils.js
rename to planetstack/core/xoslib/static/js/xsh/shell_utils.js
diff --git a/planetstack/core/xoslib/static/xsh/tokens.js b/planetstack/core/xoslib/static/js/xsh/tokens.js
similarity index 100%
rename from planetstack/core/xoslib/static/xsh/tokens.js
rename to planetstack/core/xoslib/static/js/xsh/tokens.js
diff --git a/planetstack/core/xoslib/static/xsh/utils.js b/planetstack/core/xoslib/static/js/xsh/utils.js
similarity index 100%
rename from planetstack/core/xoslib/static/xsh/utils.js
rename to planetstack/core/xoslib/static/js/xsh/utils.js
diff --git a/planetstack/core/xoslib/static/xsh/xsh.js b/planetstack/core/xoslib/static/js/xsh/xsh.js
similarity index 100%
rename from planetstack/core/xoslib/static/xsh/xsh.js
rename to planetstack/core/xoslib/static/js/xsh/xsh.js
