         do {
             // change behavior if modifier key is pressed
             switch NSEvent.modifierFlags {
-                case [.option]:
-                    try self.editScript(at: script.url)
-                
-                case [.option, .shift]:
-                    try self.revealScript(at: script.url)
-                
-                default:
+                case [.option]:  // open
+                    guard NSWorkspace.shared.open(script.url) else {
+                        throw ScriptFileError(kind: .open, url: script.url)
+                    }
+                
+                case [.option, .shift]:  // reveal
+                    guard script.url.isReachable else {
+                        throw ScriptFileError(kind: .existance, url: script.url)
+                    }
+                    NSWorkspace.shared.activateFileViewerSelecting([script.url])
+                
+                default:  // execute
                     self.currentScriptName = script.name
                     try script.run { [weak self] (error) in
                         if let error = error {

            }
        }
        
        super.init()
        
        // observe script folder change

        }
    }
    
}
