             redux.getActions('projects').set_project_title(student_project_id, title)
 
         # start projects of all (non-deleted) students running
-        start_all_student_projects: () =>
+        action_all_student_projects: (action) =>
+            if action not in ['start', 'stop', 'restart']
+                throw Error("action must be start, stop or restart")
             get_store()?.get_students().map (student, student_id) =>
                 if not student.get('deleted')
                     # really only start non-deleted students' projects
                     student_project_id = student.get('project_id')
                     if student_project_id?
-                        redux.getActions('projects').start_project(student_project_id)
-            @start_shared_project()
+                        redux.getActions('projects')[action+"_project"](student_project_id)
+            @action_shared_project(action)
 
         set_all_student_project_titles: (title) =>
             actions = redux.getActions('projects')

        show_students_pay_dialog        : false
        students_pay_when               : @props.settings.get('pay')
        students_pay                    : !!@props.settings.get('pay')

    ###
    # Editing title/description

                changed = true
        return changed

    action_all_student_projects: (action) ->
        @props.redux.getActions(@props.name).action_all_student_projects(action)

    render_upgrade_heading: (num_projects) ->
        <Row key="heading">
