diff --git a/bin/steps/django b/bin/steps/django
index 12aadb4fecafe78cf2efd5c975dcf5ddc9652ebe..8178ed68928dc5a581bb151e27d4d37c6869fc7a 100755
--- a/bin/steps/django
+++ b/bin/steps/django
@@ -21,50 +21,14 @@ fi
 echo "-----> Injecting Django settings..."
 
 
-SETTINGS_FILE=$(find . -maxdepth 3 -type f -name 'settings.py' | head -1)
+SETTINGS_FILE=$(find . -maxdepth 2 -type f -name 'settings.py' | head -1)
 PROJECT=$(dirname $SETTINGS_FILE)
 
 echo "Injecting code into $SETTINGS_FILE to read from DATABASE_URL" | indent
 
 cat >>$SETTINGS_FILE <<EOF
 
-import os
-import sys
-import urlparse
-
-# Register database schemes in URLs.
-urlparse.uses_netloc.append('postgres')
-urlparse.uses_netloc.append('mysql')
-
-try:
-
-    # Check to make sure DATABASES is set in settings.py file.
-    # If not default to {}
-
-    if 'DATABASES' not in locals():
-        DATABASES = {}
-
-    if 'DATABASE_URL' in os.environ:
-        url = urlparse.urlparse(os.environ['DATABASE_URL'])
-
-        # Ensure default database exists.
-        DATABASES['default'] = DATABASES.get('default', {})
-
-        # Update with environment configuration.
-        DATABASES['default'].update({
-            'NAME': url.path[1:],
-            'USER': url.username,
-            'PASSWORD': url.password,
-            'HOST': url.hostname,
-            'PORT': url.port,
-        })
-        if url.scheme == 'postgres':
-            DATABASES['default']['ENGINE'] = 'django.db.backends.postgresql_psycopg2'
-
-        if url.scheme == 'mysql':
-            DATABASES['default']['ENGINE'] = 'django.db.backends.mysql'
-except Exception:
-    print 'Unexpected error:', sys.exc_info()
+import dj_database_url
 
 EOF
 
diff --git a/bin/test b/bin/test
index a5f6b1d3841070b11172e5cb04c6f51fc5402700..b3bd83ab59dbc39a47b91ddaf2a980b117e80b4c 100755
--- a/bin/test
+++ b/bin/test
@@ -56,12 +56,6 @@ testDetectNotPython() {
   assertEquals "1" "${RETURN}"
 }
 
-testDetectDjangoWithMultipleRequirements() {
-  detect "multiple-requirements"
-  assertCapturedEquals "Python/Django"
-  assertCapturedSuccess
-}
-
 
 ## utils ########################################
 
diff --git a/test/django-1.4-skeleton/haystack/.DS_Store b/test/django-1.4-skeleton/haystack/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6
Binary files /dev/null and b/test/django-1.4-skeleton/haystack/.DS_Store differ
diff --git a/test/django-1.4-skeleton/haystack/haystack/__init__.py b/test/django-1.4-skeleton/haystack/__init__.py
similarity index 100%
rename from test/django-1.4-skeleton/haystack/haystack/__init__.py
rename to test/django-1.4-skeleton/haystack/__init__.py
diff --git a/test/django-1.4-skeleton/haystack/haystack/settings.py b/test/django-1.4-skeleton/haystack/settings.py
similarity index 100%
rename from test/django-1.4-skeleton/haystack/haystack/settings.py
rename to test/django-1.4-skeleton/haystack/settings.py
diff --git a/test/django-1.4-skeleton/haystack/haystack/urls.py b/test/django-1.4-skeleton/haystack/urls.py
similarity index 100%
rename from test/django-1.4-skeleton/haystack/haystack/urls.py
rename to test/django-1.4-skeleton/haystack/urls.py
diff --git a/test/django-1.4-skeleton/haystack/haystack/wsgi.py b/test/django-1.4-skeleton/haystack/wsgi.py
similarity index 100%
rename from test/django-1.4-skeleton/haystack/haystack/wsgi.py
rename to test/django-1.4-skeleton/haystack/wsgi.py
diff --git a/test/django-1.4-skeleton/haystack/manage.py b/test/django-1.4-skeleton/manage.py
similarity index 100%
rename from test/django-1.4-skeleton/haystack/manage.py
rename to test/django-1.4-skeleton/manage.py
diff --git a/test/multiple-requirements/haystack/haystack/__init__.py b/test/multiple-requirements/haystack/haystack/__init__.py
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/test/multiple-requirements/haystack/haystack/settings.py b/test/multiple-requirements/haystack/haystack/settings.py
deleted file mode 100644
index 5ca2450ed8a3ee0cf030ef9acc99048669a3731f..0000000000000000000000000000000000000000
--- a/test/multiple-requirements/haystack/haystack/settings.py
+++ /dev/null
@@ -1,154 +0,0 @@
-# Django settings for haystack project.
-
-DEBUG = True
-TEMPLATE_DEBUG = DEBUG
-
-ADMINS = (
-    # ('Your Name', 'your_email@example.com'),
-)
-
-MANAGERS = ADMINS
-
-DATABASES = {
-    'default': {
-        'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
-        'NAME': '',                      # Or path to database file if using sqlite3.
-        'USER': '',                      # Not used with sqlite3.
-        'PASSWORD': '',                  # Not used with sqlite3.
-        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
-        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
-    }
-}
-
-# Local time zone for this installation. Choices can be found here:
-# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
-# although not all choices may be available on all operating systems.
-# On Unix systems, a value of None will cause Django to use the same
-# timezone as the operating system.
-# If running in a Windows environment this must be set to the same as your
-# system time zone.
-TIME_ZONE = 'America/Chicago'
-
-# Language code for this installation. All choices can be found here:
-# http://www.i18nguy.com/unicode/language-identifiers.html
-LANGUAGE_CODE = 'en-us'
-
-SITE_ID = 1
-
-# If you set this to False, Django will make some optimizations so as not
-# to load the internationalization machinery.
-USE_I18N = True
-
-# If you set this to False, Django will not format dates, numbers and
-# calendars according to the current locale.
-USE_L10N = True
-
-# If you set this to False, Django will not use timezone-aware datetimes.
-USE_TZ = True
-
-# Absolute filesystem path to the directory that will hold user-uploaded files.
-# Example: "/home/media/media.lawrence.com/media/"
-MEDIA_ROOT = ''
-
-# URL that handles the media served from MEDIA_ROOT. Make sure to use a
-# trailing slash.
-# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
-MEDIA_URL = ''
-
-# Absolute path to the directory static files should be collected to.
-# Don't put anything in this directory yourself; store your static files
-# in apps' "static/" subdirectories and in STATICFILES_DIRS.
-# Example: "/home/media/media.lawrence.com/static/"
-STATIC_ROOT = ''
-
-# URL prefix for static files.
-# Example: "http://media.lawrence.com/static/"
-STATIC_URL = '/static/'
-
-# Additional locations of static files
-STATICFILES_DIRS = (
-    # Put strings here, like "/home/html/static" or "C:/www/django/static".
-    # Always use forward slashes, even on Windows.
-    # Don't forget to use absolute paths, not relative paths.
-)
-
-# List of finder classes that know how to find static files in
-# various locations.
-STATICFILES_FINDERS = (
-    'django.contrib.staticfiles.finders.FileSystemFinder',
-    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
-#    'django.contrib.staticfiles.finders.DefaultStorageFinder',
-)
-
-# Make this unique, and don't share it with anybody.
-SECRET_KEY = '633$+yuh67kvt_v8gpi9zmkvqb*m5nts6&amp;a=q^dwhi+e#^j_ki'
-
-# List of callables that know how to import templates from various sources.
-TEMPLATE_LOADERS = (
-    'django.template.loaders.filesystem.Loader',
-    'django.template.loaders.app_directories.Loader',
-#     'django.template.loaders.eggs.Loader',
-)
-
-MIDDLEWARE_CLASSES = (
-    'django.middleware.common.CommonMiddleware',
-    'django.contrib.sessions.middleware.SessionMiddleware',
-    'django.middleware.csrf.CsrfViewMiddleware',
-    'django.contrib.auth.middleware.AuthenticationMiddleware',
-    'django.contrib.messages.middleware.MessageMiddleware',
-    # Uncomment the next line for simple clickjacking protection:
-    # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
-)
-
-ROOT_URLCONF = 'haystack.urls'
-
-# Python dotted path to the WSGI application used by Django's runserver.
-WSGI_APPLICATION = 'haystack.wsgi.application'
-
-TEMPLATE_DIRS = (
-    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
-    # Always use forward slashes, even on Windows.
-    # Don't forget to use absolute paths, not relative paths.
-)
-
-INSTALLED_APPS = (
-    'django.contrib.auth',
-    'django.contrib.contenttypes',
-    'django.contrib.sessions',
-    'django.contrib.sites',
-    'django.contrib.messages',
-    'django.contrib.staticfiles',
-    # Uncomment the next line to enable the admin:
-    # 'django.contrib.admin',
-    # Uncomment the next line to enable admin documentation:
-    # 'django.contrib.admindocs',
-)
-
-# A sample logging configuration. The only tangible logging
-# performed by this configuration is to send an email to
-# the site admins on every HTTP 500 error when DEBUG=False.
-# See http://docs.djangoproject.com/en/dev/topics/logging for
-# more details on how to customize your logging configuration.
-LOGGING = {
-    'version': 1,
-    'disable_existing_loggers': False,
-    'filters': {
-        'require_debug_false': {
-            '()': 'django.utils.log.RequireDebugFalse'
-        }
-    },
-    'handlers': {
-        'mail_admins': {
-            'level': 'ERROR',
-            'filters': ['require_debug_false'],
-            'class': 'django.utils.log.AdminEmailHandler'
-        }
-    },
-    'loggers': {
-        'django.request': {
-            'handlers': ['mail_admins'],
-            'level': 'ERROR',
-            'propagate': True,
-        },
-    }
-}
diff --git a/test/multiple-requirements/haystack/haystack/urls.py b/test/multiple-requirements/haystack/haystack/urls.py
deleted file mode 100644
index 570343210d044f3d76bc1235537396cc2c6e9e3c..0000000000000000000000000000000000000000
--- a/test/multiple-requirements/haystack/haystack/urls.py
+++ /dev/null
@@ -1,17 +0,0 @@
-from django.conf.urls import patterns, include, url
-
-# Uncomment the next two lines to enable the admin:
-# from django.contrib import admin
-# admin.autodiscover()
-
-urlpatterns = patterns('',
-    # Examples:
-    # url(r'^$', 'haystack.views.home', name='home'),
-    # url(r'^haystack/', include('haystack.foo.urls')),
-
-    # Uncomment the admin/doc line below to enable admin documentation:
-    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
-
-    # Uncomment the next line to enable the admin:
-    # url(r'^admin/', include(admin.site.urls)),
-)
diff --git a/test/multiple-requirements/haystack/haystack/wsgi.py b/test/multiple-requirements/haystack/haystack/wsgi.py
deleted file mode 100644
index e7e1a77f2aef0eaa7212b46ffdc1854bb9bfd143..0000000000000000000000000000000000000000
--- a/test/multiple-requirements/haystack/haystack/wsgi.py
+++ /dev/null
@@ -1,28 +0,0 @@
-"""
-WSGI config for haystack project.
-
-This module contains the WSGI application used by Django's development server
-and any production WSGI deployments. It should expose a module-level variable
-named ``application``. Django's ``runserver`` and ``runfcgi`` commands discover
-this application via the ``WSGI_APPLICATION`` setting.
-
-Usually you will have the standard Django WSGI application here, but it also
-might make sense to replace the whole Django WSGI application with a custom one
-that later delegates to the Django one. For example, you could introduce WSGI
-middleware here, or combine a Django application with an application of another
-framework.
-
-"""
-import os
-
-os.environ.setdefault("DJANGO_SETTINGS_MODULE", "haystack.settings")
-
-# This application object is used by any WSGI server configured to use this
-# file. This includes Django's development server, if the WSGI_APPLICATION
-# setting points here.
-from django.core.wsgi import get_wsgi_application
-application = get_wsgi_application()
-
-# Apply WSGI middleware here.
-# from helloworld.wsgi import HelloWorldApplication
-# application = HelloWorldApplication(application)
diff --git a/test/multiple-requirements/haystack/manage.py b/test/multiple-requirements/haystack/manage.py
deleted file mode 100644
index cf7427b1ba6a9a9aad442ab4d9954ac6c506694d..0000000000000000000000000000000000000000
--- a/test/multiple-requirements/haystack/manage.py
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env python
-import os
-import sys
-
-if __name__ == "__main__":
-    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "haystack.settings")
-
-    from django.core.management import execute_from_command_line
-
-    execute_from_command_line(sys.argv)
diff --git a/test/multiple-requirements/haystack/requirements.txt b/test/multiple-requirements/haystack/requirements.txt
deleted file mode 100644
index 23b57dcf506fc7316cd6b258de42c7d79fc2496b..0000000000000000000000000000000000000000
--- a/test/multiple-requirements/haystack/requirements.txt
+++ /dev/null
@@ -1 +0,0 @@
-Django==1.4
\ No newline at end of file
diff --git a/test/multiple-requirements/requirements.txt b/test/multiple-requirements/requirements.txt
deleted file mode 100644
index 1dac394dd07cc7a4129a897eb1371b99312e29df..0000000000000000000000000000000000000000
--- a/test/multiple-requirements/requirements.txt
+++ /dev/null
@@ -1 +0,0 @@
--r haystack/requirements.txt
\ No newline at end of file