diff --git a/app/core/Router.coffee b/app/core/Router.coffee
index 28ca9854a..462809e9a 100644
--- a/app/core/Router.coffee
+++ b/app/core/Router.coffee
@@ -65,7 +65,7 @@ module.exports = class CocoRouter extends Backbone.Router
     'courses/mock1/:courseID': go('courses/mock1/CourseDetailsView')
     'courses': go('courses/CoursesView')
     'courses/enroll(/:courseID)': go('courses/CourseEnrollView')
-    'courses/:courseID': go('courses/CourseDetailsView')
+    'courses/:courseID(/:courseInstanceID)': go('courses/CourseDetailsView')
 
     'db/*path': 'routeToServer'
     'demo(/*subpath)': go('DemoView')
diff --git a/app/templates/courses/courses.jade b/app/templates/courses/courses.jade
index e9f62e2f6..29536fc58 100644
--- a/app/templates/courses/courses.jade
+++ b/app/templates/courses/courses.jade
@@ -92,12 +92,13 @@ mixin teacher-dialog(course)
                   .container-fluid
                     .row
                       .col-md-8
-                        select.form-control.select-session
+                        select.form-control.select-session(data-course-id="#{course.id}")
                           each inst in instances
-                            if inst.get('name')
-                              option(value="#{inst.id}")= inst.get('name')
-                            else
-                              option(value="#{inst.id}") *unnamed*
+                            if inst.get('courseID') == course.id
+                              if inst.get('name')
+                                option(value="#{inst.id}")= inst.get('name')
+                              else
+                                option(value="#{inst.id}") *unnamed*
                       .col-md-4
                         button.btn.btn-success.btn-enter(data-course-id="#{course.id}") Enter
             .row.button-row.center.row-pick-class
diff --git a/app/views/courses/CourseDetailsView.coffee b/app/views/courses/CourseDetailsView.coffee
index f4eac6223..ceb19dff9 100644
--- a/app/views/courses/CourseDetailsView.coffee
+++ b/app/views/courses/CourseDetailsView.coffee
@@ -25,7 +25,8 @@ module.exports = class CourseDetailsView extends RootView
 
   constructor: (options, @courseID, @courseInstanceID) ->
     super options
-    @courseInstanceID ?= utils.getQueryVariable('ciid', false) or options.courseInstanceID
+    @courseID ?= options.courseID
+    @courseInstanceID ?= options.courseInstanceID
     @adminMode = me.isAdmin()
     @memberSort = 'nameAsc'
     @course = @supermodel.getModel(Course, @courseID) or new Course _id: @courseID
diff --git a/app/views/courses/CoursesView.coffee b/app/views/courses/CoursesView.coffee
index fd8cc45a8..84a0942c3 100644
--- a/app/views/courses/CoursesView.coffee
+++ b/app/views/courses/CoursesView.coffee
@@ -74,10 +74,11 @@ module.exports = class CoursesView extends RootView
   onClickEnter: (e) ->
     $('.continue-dialog').modal('hide')
     courseID = $(e.target).data('course-id')
-    courseInstanceID = $('.select-session').val()
+    courseInstanceID = $(".select-session[data-course-id=#{courseID}]").val()
+    route = "/courses/#{courseID}/#{courseInstanceID}"
     viewClass = require 'views/courses/CourseDetailsView'
-    viewArgs = [{courseInstanceID:courseInstanceID}, courseID]
-    navigationEvent = route: "/courses/#{courseID}", viewClass: viewClass, viewArgs: viewArgs
+    viewArgs = [{}, courseID, courseInstanceID]
+    navigationEvent = route: route, viewClass: viewClass, viewArgs: viewArgs
     Backbone.Mediator.publish 'router:navigate', navigationEvent
 
   onClickStudent: (e) ->
diff --git a/app/views/play/level/ControlBarView.coffee b/app/views/play/level/ControlBarView.coffee
index a8784fcd6..418c1dcc8 100644
--- a/app/views/play/level/ControlBarView.coffee
+++ b/app/views/play/level/ControlBarView.coffee
@@ -98,7 +98,7 @@ module.exports = class ControlBarView extends CocoView
         @homeViewArgs.push @courseID
         @homeViewClass = 'views/courses/CourseDetailsView'
         if @courseInstanceID
-          @homeLink += "?ciid=#{@courseInstanceID}"
+          @homeLink += "/#{@courseInstanceID}"
           @homeViewArgs.push @courseInstanceID
     else
       @homeLink = '/'
diff --git a/app/views/play/level/modal/HeroVictoryModal.coffee b/app/views/play/level/modal/HeroVictoryModal.coffee
index 74fb9cb00..bf41620ab 100644
--- a/app/views/play/level/modal/HeroVictoryModal.coffee
+++ b/app/views/play/level/modal/HeroVictoryModal.coffee
@@ -408,7 +408,7 @@ module.exports = class HeroVictoryModal extends ModalView
       if @courseID
         link += "/#{@courseID}"
         if @courseInstanceID
-          link += "?ciid=#{@courseInstanceID}"
+          link += "/#{@courseInstanceID}"
     else
       link = '/play'
       nextCampaign = @getNextLevelCampaign()
@@ -436,10 +436,8 @@ module.exports = class HeroVictoryModal extends ModalView
       viewArgs = [options]
       if @courseID
         viewClass = require 'views/courses/CourseDetailsView'
-        options.courseID = @courseID
         viewArgs.push @courseID
         if @courseInstanceID
-          options.courseInstanceID = @courseInstanceID
           viewArgs.push @courseInstanceID
     else
       viewClass = require 'views/play/CampaignView'