                 n = misc.mswalltime()
                 action(assignment, student_id)
                 store.wait
-                    until : => store.last_copied(step, assignment, student_id) >= n
-                    cb    : (err) =>
+                    timeout : 60*15
+                    until   : => store.last_copied(step, assignment, student_id) >= n
+                    cb      : (err) =>
                         if err
                             errors += "\n #{err}"
                         cb()

                n = misc.mswalltime()
                @return_assignment_to_student(assignment, student_id)
                store.wait
                    until : => store.last_copied('return_graded', assignment, student_id) >= n
                    cb    : (err) =>
                        if err
                            errors += "\n #{err}"
                        cb()

                            cb("store not defined"); return
                        store.wait
                            until   : (store) => store.get_student(student_id)
                            timeout : 60
                            cb      : cb
                    (cb) =>
                        @create_student_project(student_id)
