diff --git a/MANIFEST.in b/MANIFEST.in
index 858ab9d5e..9561fb106 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,5 +1 @@
-include bin/disk-image-create
-include bin/ramdisk-image-create
-graft lib
-graft elements
 include README.rst
diff --git a/bin/diskimage_builder b/bin/diskimage_builder
deleted file mode 120000
index ac949dc60..000000000
--- a/bin/diskimage_builder
+++ /dev/null
@@ -1 +0,0 @@
-../diskimage_builder
\ No newline at end of file
diff --git a/diskimage_builder/disk_image_create.py b/diskimage_builder/disk_image_create.py
new file mode 100644
index 000000000..1727c8c43
--- /dev/null
+++ b/diskimage_builder/disk_image_create.py
@@ -0,0 +1,46 @@
+# Copyright 2016 Ian Wienand (iwienand@redhat.com)
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+# Python Logging Configuration for DIB
+# Usage:
+# In the main (application) file, do an
+#   import logging_config
+#   ...
+#   logging_config.setup()
+# It is then possible to use the normal python logging interface, like
+#   logger = logging.getLogger(__name__)
+#   logger.info("Info Message")
+
+import os
+import os.path
+import sys
+
+import diskimage_builder.paths
+
+
+def main():
+    environ = os.environ
+
+    # pre-seed some paths for the shell script
+    environ['_LIB'] = diskimage_builder.paths.get_path('lib')
+
+    # we have to handle being called as "disk-image-create" or
+    # "ramdisk-image-create".  ramdisk-iamge-create is just a symlink
+    # to disk-image-create
+    # XXX: we could simplify things by removing the symlink, and
+    # just setting IS_RAMDISK in environ here depending on sys.argv[1]
+    script = "%s/%s" % (diskimage_builder.paths.get_path('lib'),
+                        os.path.basename(sys.argv[0]))
+
+    os.execve("/bin/bash", ['bash', script] + sys.argv[1:], environ)
diff --git a/bin/disk-image-create b/diskimage_builder/lib/disk-image-create
similarity index 99%
rename from bin/disk-image-create
rename to diskimage_builder/lib/disk-image-create
index 086c04242..816858b3f 100755
--- a/bin/disk-image-create
+++ b/diskimage_builder/lib/disk-image-create
@@ -26,13 +26,14 @@ export DIB_ENV=$(export | grep ' DIB_.*=')
 
 SCRIPTNAME=$(basename $0)
 
-export _LIB=$(python -c '
-import diskimage_builder.paths
-diskimage_builder.paths.get_path("lib")')
+if [ -z "$_LIB" ]; then
+    echo "_LIB not set!"
+    exit 1
+fi
 
 _BASE_ELEMENT_DIR=$(python -c '
 import diskimage_builder.paths
-diskimage_builder.paths.get_path("elements")')
+diskimage_builder.paths.show_path("elements")')
 
 source $_LIB/die
 
diff --git a/bin/ramdisk-image-create b/diskimage_builder/lib/ramdisk-image-create
similarity index 100%
rename from bin/ramdisk-image-create
rename to diskimage_builder/lib/ramdisk-image-create
diff --git a/diskimage_builder/paths.py b/diskimage_builder/paths.py
index 18f2028ea..857bad400 100644
--- a/diskimage_builder/paths.py
+++ b/diskimage_builder/paths.py
@@ -21,11 +21,15 @@ import sys
 
 def get_path(var):
     if var == "lib":
-        print(os.path.abspath(
-            pkg_resources.resource_filename(__name__, "lib")))
+        return os.path.abspath(
+            pkg_resources.resource_filename(__name__, "lib"))
     elif var == "elements":
-        print(os.path.abspath(
-            pkg_resources.resource_filename(__name__, "elements")))
+        return os.path.abspath(
+            pkg_resources.resource_filename(__name__, "elements"))
     else:
         print("Unknown path request!")
         sys.exit(1)
+
+
+def show_path(var):
+    print(get_path(var))
diff --git a/setup.cfg b/setup.cfg
index 2fdb2b220..4c5e9357f 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -27,8 +27,6 @@ packages =
 # real file on install; see lp bug #1212482
 scripts =
     bin/dib-lint
-    bin/disk-image-create
-    bin/ramdisk-image-create
 data_files =
     share/diskimage-builder/scripts = scripts/*
 
@@ -56,3 +54,5 @@ universal = 1
 console_scripts =
     element-info = diskimage_builder.element_dependencies:main
     dib-block-device = diskimage_builder.block_device:main
+    disk-image-create = diskimage_builder.disk_image_create:main
+    ramdisk-image-create = diskimage_builder.disk_image_create:main
diff --git a/tests/run_functests.sh b/tests/run_functests.sh
index 75093c54e..c04d551ef 100755
--- a/tests/run_functests.sh
+++ b/tests/run_functests.sh
@@ -4,11 +4,10 @@ set -eu
 set -o pipefail
 
 BASE_DIR=$(cd $(dirname "$0")/.. && pwd)
-export DIB_CMD=$BASE_DIR/bin/disk-image-create
+export DIB_CMD=disk-image-create
 export DIB_ELEMENTS=$(python -c '
 import diskimage_builder.paths
-diskimage_builder.paths.get_path("elements")')
-
+diskimage_builder.paths.show_path("elements")')
 
 #
 # Default skip tests