diff --git a/bin/cdist b/bin/cdist
index 0a7011b4..ad87b38c 100755
--- a/bin/cdist
+++ b/bin/cdist
@@ -28,6 +28,21 @@ import shutil
 import sys
 import tempfile
 
+BANNER = """
+             ..          .       .x+=:.        s
+           dF           @88>    z`    ^%      :8
+          '88bu.        %8P        .   <k    .88
+      .   '*88888bu      .       .@8Ned8"   :888ooo
+ .udR88N    ^"*8888N   .@88u   .@^%8888"  -*8888888
+<888'888k  beWE "888L ''888E` x88:  `)8b.   8888
+9888 'Y"   888E  888E   888E  8888N=*8888   8888
+9888       888E  888E   888E   %8"    R88   8888
+9888       888E  888F   888E    @8Wou 9%   .8888Lu=
+?8888u../ .888N..888    888&  .888888P`    ^%888*
+ "8888P'   `"888*""     R888" `   ^"F        'Y"
+   "P'        ""         ""
+"""
+
 # Given paths from installation
 BASE_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir))
 CONF_DIR                   = os.path.join(BASE_DIR, "conf")
@@ -72,6 +87,12 @@ log = logging.getLogger()
 def list_types():
    return os.listdir(TYPE_DIR)
 
+def banner():
+   """Guess what :-)"""
+   print(BANNER)
+
+
+
 class Cdist:
    """Cdist main class to hold arbitrary data"""
 
@@ -166,6 +187,10 @@ class Cdist:
       """Return list of available explorers"""
       return os.listdir(GLOBAL_EXPLORER_DIR)
 
+   def list_type_explorers(self, type):
+      """Return list of available explorers for a specific type"""
+      return os.listdir(type_explorer_dir(type))
+
    def list_object_paths(self, starting_point = False):
       """Return list of paths of existing objects"""
       object_paths = []
@@ -199,27 +224,35 @@ class Cdist:
       object_paths = self.list_object_paths(starting_point)
       objects = []
       log.debug("Paths recieved: %s", object_paths)
-      log.debug("And te starting point: %s", starting_point)
 
       for path in object_paths:
          objects.append(os.path.relpath(path, starting_point))
 
       return objects
 
+   def type_explorer_dir(self, type):
+      """Return directory that holds the explorers of a type"""
+      return os.path.join(TYPE_DIR, type, "explorer")
+
+   def remote_type_explorer_dir(type):
+      """Return remote directory that holds the explorers of a type"""
+      return os.path.join(REMOTE_TYPE_DIR, type, "explorer")
+
    def transfer_global_explorers(self):
       self.transfer_dir(GLOBAL_EXPLORER_DIR, REMOTE_GLOBAL_EXPLORER_DIR)
 
    def transfer_type_explorers(self, type):
       """Transfer explorers of a type, but only once"""
       if type in self.type_explorers_transferred:
+         log.debug("Skipping retransfer for %s", type)
          return
 
-      src = os.path.join(TYPE_DIR, type)
-      base = os.path.join(REMOTE_TYPE_DIR, type)
-      dst = os.path.join(base, "explorer")
+      src = self.type_explorer_dir(type)
+      remote_base = os.path.join(REMOTE_TYPE_DIR, type)
+      dst = self.type_explorer_dir(type)
 
       # Ensure the path path exists
-      self.remote_run_or_fail(["mkdir", "-p", base])
+      self.remote_run_or_fail(["mkdir", "-p", remote_base])
       self.transfer_dir(src, dst)
 
       # Do not retransfer
@@ -258,6 +291,17 @@ class Cdist:
       type = self.get_type_from_object(cdist_object)
       self.transfer_type_explorers(type)
 
+      cmd = []
+      cmd.append("__explorer=" + REMOTE_GLOBAL_EXPLORER_DIR)
+      cmd.append("__type_explorer=" + remote_type_explorer_dir(type))
+
+      explorers = list_type_explorers(type)
+      for explorer in explorers:
+         remote_cmd = cmd
+         remote_cmd.append(os.path.join(remote_type_explorer_dir(type), explorer))
+
+         self.remote_run_or_fail(remote_cmd)
+
    def init_deploy(self):
       log.info("Creating clean directory structure")
 
@@ -306,6 +350,9 @@ class Cdist:
 if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='cdist ' + VERSION)
    parser.add_argument('host', nargs='+', help='one or more hosts to operate on')
+   parser.add_argument('-b', '--banner',
+       help='Show cdist banner',
+       action='store_true', dest='banner')
    parser.add_argument('-d', '--debug', help='set log level to debug',
        action='store_true')
    parser.add_argument('-i', '--initial-manifest', 
@@ -321,6 +368,10 @@ if __name__ == "__main__":
    args = parser.parse_args(sys.argv[1:])
    if args.debug:
        logging.root.setLevel(logging.DEBUG)
+
+   if args.banner:
+      banner()
+      sys.exit(0)
    
    try:
       log.debug(args)
diff --git a/conf/type/__directory/explorer/exists b/conf/type/__directory/explorer/exists
deleted file mode 100755
index f8b85671..00000000
--- a/conf/type/__directory/explorer/exists
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/sh
-#
-# 2011 Nico Schottelius (nico-cdist at schottelius.org)
-#
-# This file is part of cdist.
-#
-# cdist is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# cdist is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with cdist. If not, see <http://www.gnu.org/licenses/>.
-#
-#
-# Check whether file exists or not
-#
-
-destination="/$__object_id"
-
-if [ -e "$destination" ]; then
-   echo yes
-else
-   echo no
-fi