(( CURRENT == 2 )) && __vcsh_repositories
 }
 
+function _vcsh-list-untracked () {
+       _nothing
+}
+
+function _vcsh-pull () {
+       _nothing
+}
+
+function _vcsh-push () {
+       _nothing
+}
+
 function _vcsh-rename () {
        (( CURRENT == 2 )) && __vcsh_repositories
        (( CURRENT == 3 )) && _message "new repository name"
        fi
 }
 
-function _vcsh-setup () {
+function _vcsh-status () {
+       (( CURRENT == 2 )) && __vcsh_repositories
+}
+
+function _vcsh-upgrade () {
        (( CURRENT == 2 )) && __vcsh_repositories
 }
 
 
        subcommands=(
                "clone:clone an existing repository"
+               "commit:commit in all repositories"
                "delete:delete an existing repository"
                "enter:enter repository; spawn new <\$SHELL>"
                "help:display help"
                "list:list all local vcsh repositories"
                "list-tracked:list all files tracked by vcsh"
                "list-tracked-by:list files tracked by a repository"
+               "list-untracked:list all files not tracked by vcsh"
+               "pull:pull from all vcsh remotes"
+               "push:push to vcsh remotes"
                "rename:rename a repository"
                "run:run command with <\$GIT_DIR> and <\$GIT_WORK_TREE> set"
-               "setup:set up repository with recommended settings"
+               "status:show statuses of all/one vcsh repositories"
+               "upgrade:upgrade repository to currently recommended settings"
                "version:print version information"
                "which:find <substring> in name of any tracked file"
                "write-gitignore:write .gitignore.d/<repo> via git ls-files"
                        if ! (( ${+functions[_vcsh-$vcshcommand]} )); then
                                # There is no handler function, so this is probably the name
                                # of a repository. Act accordingly.
-                               _message "git sub-command"
-                               #TODO and now we need to complete on git subcommands
+                               _dispatch git git
                        else
                                curcontext="${curcontext%:*:*}:vcsh-${vcshcommand}:"
                                _call_function ret _vcsh-${vcshcommand}