diff --git a/plugins/osx/osx.plugin.zsh b/plugins/osx/osx.plugin.zsh
index a65ca642a..682bb2667 100644
--- a/plugins/osx/osx.plugin.zsh
+++ b/plugins/osx/osx.plugin.zsh
@@ -1,63 +1,99 @@
-alias showfiles='defaults write com.apple.finder AppleShowAllFiles TRUE; killall Finder'
-alias hidefiles='defaults write com.apple.finder AppleShowAllFiles FALSE; killall Finder'
+# ------------------------------------------------------------------------------
+#          FILE:  osx.plugin.zsh
+#   DESCRIPTION:  oh-my-zsh plugin file.
+#        AUTHOR:  Sorin Ionescu (sorin.ionescu@gmail.com)
+#       VERSION:  1.0.1
+# ------------------------------------------------------------------------------
 
-# Recursively delete .DS_Store files
-alias rm-dsstore="find . -name '*.DS_Store' -type f -delete"
-
-function savepath() {
-  pwd > ~/.current_path~
-}
 
 function tab() {
-savepath
-osascript >/dev/null <<EOF
-on do_submenu(app_name, menu_name, menu_item, submenu_item)
-    -- bring the target application to the front
-    tell application app_name
-      activate
-    end tell
-    tell application "System Events"
-      tell process app_name
-        tell menu bar 1
-          tell menu bar item menu_name
-            tell menu menu_name
-              tell menu item menu_item
-                tell menu menu_item
-                  click menu item submenu_item
-                end tell
-              end tell
-            end tell
+  local command="cd \\\"$PWD\\\""
+  (( $# > 0 )) && command="${command}; $*"
+
+  the_app=$(
+    osascript 2>/dev/null <<EOF
+      tell application "System Events"
+        name of first item of (every process whose frontmost is true)
+      end tell
+EOF
+  )
+
+  [[ "$the_app" == 'Terminal' ]] && {
+    osascript 2>/dev/null <<EOF
+      tell application "System Events"
+        tell process "Terminal" to keystroke "t" using command down
+        tell application "Terminal" to do script "${command}" in front window
+      end tell
+EOF
+  }
+
+  [[ "$the_app" == 'iTerm' ]] && {
+    osascript 2>/dev/null <<EOF
+      tell application "iTerm"
+        set current_terminal to current terminal
+        tell current_terminal
+          launch session "Default Session"
+          set current_session to current session
+          tell current_session
+            write text "${command}"
           end tell
         end tell
       end tell
-    end tell
-end do_submenu
+EOF
+  }
+}
 
-do_submenu("Terminal", "Shell", "New Tab", 1)
+function pfd() {
+  osascript 2>/dev/null <<EOF
+    tell application "Finder"
+      return POSIX path of (target of window 1 as alias)
+    end tell
 EOF
 }
 
-function itab() {
-savepath
-osascript >/dev/null <<EOF
-on do_submenu(app_name, menu_name, menu_item)
-    -- bring the target application to the front
-    tell application app_name
-      activate
-    end tell
-    tell application "System Events"
-      tell process app_name
-        tell menu bar 1
-          tell menu bar item menu_name
-            tell menu menu_name
-              click menu item menu_item
-            end tell
-          end tell
-        end tell
-      end tell
-    end tell
-end do_submenu
-
-do_submenu("iTerm", "Shell", "New Tab")
+function pfs() {
+  osascript 2>/dev/null <<EOF
+    set output to ""
+    tell application "Finder" to set the_selection to selection
+    set item_count to count the_selection
+    repeat with item_index from 1 to count the_selection
+      if item_index is less than item_count then set the_delimiter to "\n"
+      if item_index is item_count then set the_delimiter to ""
+      set output to output & ((item item_index of the_selection as alias)'s POSIX path) & the_delimiter
+    end repeat
 EOF
 }
+
+function cdf() {
+  cd "$(pfd)"
+}
+
+function pushdf() {
+  pushd "$(pfd)"
+}
+
+function quick-look() {
+  (( $# > 0 )) && qlmanage -p $* &>/dev/null &
+}
+
+function man-preview() {
+  man -t "$@" | open -f -a Preview
+}
+
+function trash() {
+  local trash_dir="${HOME}/.Trash"
+  local temp_ifs=$IFS
+  IFS=$'\n'
+  for item in "$@"; do
+    if [[ -e "$item" ]]; then
+      item_name="$(basename $item)"
+      if [[ -e "${trash_dir}/${item_name}" ]]; then
+        mv -f "$item" "${trash_dir}/${item_name} $(date "+%H-%M-%S")"
+      else
+        mv -f "$item" "${trash_dir}/"
+      fi
+    fi
+  done
+  IFS=$temp_ifs
+}
+