         # get_my_group is defined.
         id = misc.uuid()
         @set_activity(id:id, status:"getting file listing for #{misc.trunc_middle(path,30)}...")
-        group   = undefined
-        listing = undefined
-        async.series([
+        async.waterfall([
             (cb) =>
                 # make sure that our relationship to this project is known.
                 @redux.getStore('projects').wait
                     until   : (s) => s.get_my_group(@project_id)
                     timeout : 30
-                    cb      : (err, x) =>
-                        group = x; cb(err)
-            (cb) =>
+                    cb      : cb
+            (group, cb) =>
                 store = @get_store()
                 if not store?
                     cb("store no longer defined"); return

                if target[target.length-1] == '/' or full_path == ''
                    @open_directory(parent_path)
                else
                    @fetch_directory_listing(parent_path, true, true)
                    @get_store().wait
                        until   : (s) =>

                        timeout : 30
                        cb      : (err, item) =>
                            if err
                                console.log "ERR", err
                                @open_file
                                    path       : full_path
                                    foreground : foreground
                                    foreground_project : foreground
                                alert_message(type:'error', message:"There was an error related to opening the link: #{err}")
                                @open_directory(parent_path)
                            else
