diff --git a/test/functional/apps/dashboard/_dashboard.js b/test/functional/apps/dashboard/_dashboard.js
index 8eda2713370c5..b2bf2b1466440 100644
--- a/test/functional/apps/dashboard/_dashboard.js
+++ b/test/functional/apps/dashboard/_dashboard.js
@@ -18,12 +18,8 @@ import {
 
         common.debug('Starting dashboard before method');
         var logstash = scenarioManager.loadIfEmpty('logstashFunctional');
-        return esClient.delete('.kibana')
-        .then(function () {
-          return common.try(function () {
-            return esClient.updateConfigDoc({'dateFormat:tz':'UTC', 'defaultIndex':'logstash-*'});
-          });
-        })
+        // delete .kibana index and update configDoc
+        return esClient.deleteAndUpdateConfigDoc({'dateFormat:tz':'UTC', 'defaultIndex':'logstash-*'})
         // and load a set of makelogs data
         .then(function loadkibanaVisualizations() {
           common.debug('load kibana index with visualizations');
diff --git a/test/functional/apps/discover/_collapse_expand.js b/test/functional/apps/discover/_collapse_expand.js
index 9630f924467d8..864b308cddeeb 100644
--- a/test/functional/apps/discover/_collapse_expand.js
+++ b/test/functional/apps/discover/_collapse_expand.js
@@ -5,6 +5,8 @@ import {
   headerPage,
   scenarioManager,
   settingsPage,
+  esClient,
+  elasticDump
 } from '../../../support';
 
 (function () {
@@ -18,20 +20,16 @@ import {
         var fromTime = '2015-09-19 06:31:44.000';
         var toTime = '2015-09-23 18:31:44.000';
 
-        // start each test with an empty kibana index
-        return scenarioManager.reload('emptyKibana')
+        // delete .kibana index and update configDoc
+        return esClient.deleteAndUpdateConfigDoc({'dateFormat:tz':'UTC', 'defaultIndex':'logstash-*'})
+        .then(function loadkibanaIndexPattern() {
+          common.debug('load kibana index with default index pattern');
+          return elasticDump.elasticLoad('visualize','.kibana');
+        })
         // and load a set of makelogs data
         .then(function loadIfEmptyMakelogs() {
           return scenarioManager.loadIfEmpty('logstashFunctional');
         })
-        .then(function () {
-          common.debug('navigateTo');
-          return settingsPage.navigateTo();
-        })
-        .then(function () {
-          common.debug('createIndexPattern');
-          return settingsPage.createIndexPattern();
-        })
         .then(function () {
           common.debug('discover');
           return common.navigateToApp('discover');
diff --git a/test/functional/apps/discover/_discover.js b/test/functional/apps/discover/_discover.js
index ec7986257ee1b..9227e04142148 100644
--- a/test/functional/apps/discover/_discover.js
+++ b/test/functional/apps/discover/_discover.js
@@ -5,6 +5,8 @@ import {
   discoverPage,
   settingsPage,
   headerPage,
+  esClient,
+  elasticDump
 } from '../../../support';
 
 (function () {
@@ -16,20 +18,16 @@ import {
         var fromTime = '2015-09-19 06:31:44.000';
         var toTime = '2015-09-23 18:31:44.000';
 
-        // start each test with an empty kibana index
-        return scenarioManager.reload('emptyKibana')
+        // delete .kibana index and update configDoc
+        return esClient.deleteAndUpdateConfigDoc({'dateFormat:tz':'UTC', 'defaultIndex':'logstash-*'})
+        .then(function loadkibanaIndexPattern() {
+          common.debug('load kibana index with default index pattern');
+          return elasticDump.elasticLoad('visualize','.kibana');
+        })
         // and load a set of makelogs data
         .then(function loadIfEmptyMakelogs() {
           return scenarioManager.loadIfEmpty('logstashFunctional');
         })
-        .then(function (navigateTo) {
-          common.debug('navigateTo');
-          return settingsPage.navigateTo();
-        })
-        .then(function () {
-          common.debug('createIndexPattern');
-          return settingsPage.createIndexPattern();
-        })
         .then(function () {
           common.debug('discover');
           return common.navigateToApp('discover');
diff --git a/test/functional/apps/discover/_field_data.js b/test/functional/apps/discover/_field_data.js
index 2fe40577106f1..9dd8993d6daa4 100644
--- a/test/functional/apps/discover/_field_data.js
+++ b/test/functional/apps/discover/_field_data.js
@@ -4,7 +4,9 @@ import {
   discoverPage,
   headerPage,
   scenarioManager,
-  settingsPage
+  settingsPage,
+  esClient,
+  elasticDump
 } from '../../../support';
 
 (function () {
@@ -16,20 +18,16 @@ import {
         var fromTime = '2015-09-19 06:31:44.000';
         var toTime = '2015-09-23 18:31:44.000';
 
-        // start each test with an empty kibana index
-        return scenarioManager.reload('emptyKibana')
+        // delete .kibana index and update configDoc
+        return esClient.deleteAndUpdateConfigDoc({'dateFormat:tz':'UTC', 'defaultIndex':'logstash-*'})
+        .then(function loadkibanaIndexPattern() {
+          common.debug('load kibana index with default index pattern');
+          return elasticDump.elasticLoad('visualize','.kibana');
+        })
         // and load a set of makelogs data
         .then(function loadIfEmptyMakelogs() {
           return scenarioManager.loadIfEmpty('logstashFunctional');
         })
-        .then(function (navigateTo) {
-          common.debug('navigateTo');
-          return settingsPage.navigateTo();
-        })
-        .then(function () {
-          common.debug('createIndexPattern');
-          return settingsPage.createIndexPattern();
-        })
         .then(function () {
           common.debug('discover');
           return common.navigateToApp('discover');
diff --git a/test/functional/apps/discover/_shared_links.js b/test/functional/apps/discover/_shared_links.js
index b9f73003f042c..5607253511943 100644
--- a/test/functional/apps/discover/_shared_links.js
+++ b/test/functional/apps/discover/_shared_links.js
@@ -1,4 +1,13 @@
-import { bdd, common, discoverPage, headerPage, settingsPage, scenarioManager } from '../../../support';
+import {
+  bdd,
+  common,
+  discoverPage,
+  headerPage,
+  settingsPage,
+  scenarioManager,
+  esClient,
+  elasticDump
+} from '../../../support';
 
 (function () {
   var expect = require('expect.js');
@@ -18,20 +27,16 @@ import { bdd, common, discoverPage, headerPage, settingsPage, scenarioManager }
         var fromTime = '2015-09-19 06:31:44.000';
         var toTime = '2015-09-23 18:31:44.000';
 
-        // start each test with an empty kibana index
-        return scenarioManager.reload('emptyKibana')
+        // delete .kibana index and update configDoc
+        return esClient.deleteAndUpdateConfigDoc({'dateFormat:tz':'UTC', 'defaultIndex':'logstash-*'})
+        .then(function loadkibanaIndexPattern() {
+          common.debug('load kibana index with default index pattern');
+          return elasticDump.elasticLoad('visualize','.kibana');
+        })
         // and load a set of makelogs data
         .then(function loadIfEmptyMakelogs() {
           return scenarioManager.loadIfEmpty('logstashFunctional');
         })
-        .then(function (navigateTo) {
-          common.debug('navigateTo');
-          return settingsPage.navigateTo();
-        })
-        .then(function () {
-          common.debug('createIndexPattern');
-          return settingsPage.createIndexPattern();
-        })
         .then(function () {
           common.debug('discover');
           return common.navigateToApp('discover');
diff --git a/test/functional/apps/settings/_advanced_settings.js b/test/functional/apps/settings/_advanced_settings.js
index e04b9f4f5f360..3cef8d61b37e1 100644
--- a/test/functional/apps/settings/_advanced_settings.js
+++ b/test/functional/apps/settings/_advanced_settings.js
@@ -2,7 +2,8 @@ import {
   bdd,
   common,
   settingsPage,
-  scenarioManager
+  scenarioManager,
+  esClient
 } from '../../../support';
 
 (function () {
@@ -11,7 +12,8 @@ import {
   (function () {
     bdd.describe('creating and deleting default index', function describeIndexTests() {
       bdd.before(function () {
-        return scenarioManager.reload('emptyKibana')
+        // delete .kibana index and then wait for Kibana to re-create it
+        return esClient.deleteAndUpdateConfigDoc()
         .then(function () {
           return settingsPage.navigateTo();
         });
@@ -25,7 +27,7 @@ import {
         bdd.it('should allow setting advanced settings', function () {
           return settingsPage.clickAdvancedTab()
           .then(function TestCallSetAdvancedSettingsForTimezone() {
-            common.log('calling setAdvancedSetting');
+            common.debug('calling setAdvancedSetting');
             return settingsPage.setAdvancedSettings('dateFormat:tz', 'America/Phoenix');
           })
           .then(function GetAdvancedSetting() {
diff --git a/test/functional/apps/settings/_creation_form_changes.js b/test/functional/apps/settings/_creation_form_changes.js
index c7cb2c939b8a6..ffbe9db41472b 100644
--- a/test/functional/apps/settings/_creation_form_changes.js
+++ b/test/functional/apps/settings/_creation_form_changes.js
@@ -3,6 +3,7 @@ import {
   common,
   settingsPage,
   scenarioManager,
+  esClient
 } from '../../../support';
 
 (function () {
@@ -11,7 +12,8 @@ import {
   (function () {
     bdd.describe('user input reactions', function () {
       bdd.beforeEach(function () {
-        return scenarioManager.reload('emptyKibana')
+        // delete .kibana index and then wait for Kibana to re-create it
+        return esClient.deleteAndUpdateConfigDoc()
         .then(function () {
           return settingsPage.navigateTo();
         });
diff --git a/test/functional/apps/settings/_index_pattern_create_delete.js b/test/functional/apps/settings/_index_pattern_create_delete.js
index 3c18fd37222f2..d6050fea15f62 100644
--- a/test/functional/apps/settings/_index_pattern_create_delete.js
+++ b/test/functional/apps/settings/_index_pattern_create_delete.js
@@ -3,7 +3,8 @@ import {
   common,
   remote,
   scenarioManager,
-  settingsPage
+  settingsPage,
+  esClient
 } from '../../../support';
 
 (function () {
@@ -12,7 +13,8 @@ import {
   (function () {
     bdd.describe('creating and deleting default index', function describeIndexTests() {
       bdd.before(function () {
-        return scenarioManager.reload('emptyKibana')
+        // delete .kibana index and then wait for Kibana to re-create it
+        return esClient.deleteAndUpdateConfigDoc()
         .then(function () {
           return settingsPage.navigateTo();
         });
diff --git a/test/functional/apps/settings/_index_pattern_popularity.js b/test/functional/apps/settings/_index_pattern_popularity.js
index 2d26a5641e309..3da9830c8a5e2 100644
--- a/test/functional/apps/settings/_index_pattern_popularity.js
+++ b/test/functional/apps/settings/_index_pattern_popularity.js
@@ -2,7 +2,8 @@ import {
   bdd,
   common,
   scenarioManager,
-  settingsPage
+  settingsPage,
+  esClient
 } from '../../../support';
 
 (function () {
@@ -11,7 +12,8 @@ import {
   (function () {
     bdd.describe('index result popularity', function describeIndexTests() {
       bdd.before(function () {
-        return scenarioManager.reload('emptyKibana')
+        // delete .kibana index and then wait for Kibana to re-create it
+        return esClient.deleteAndUpdateConfigDoc()
         .then(function () {
           return settingsPage.navigateTo();
         });
diff --git a/test/functional/apps/settings/_index_pattern_results_sort.js b/test/functional/apps/settings/_index_pattern_results_sort.js
index 7c75ca8bfd9ba..bd69ffa0a44f8 100644
--- a/test/functional/apps/settings/_index_pattern_results_sort.js
+++ b/test/functional/apps/settings/_index_pattern_results_sort.js
@@ -4,6 +4,7 @@ import {
   defaultTimeout,
   settingsPage,
   scenarioManager,
+  esClient
 } from '../../../support';
 
 (function () {
@@ -12,7 +13,8 @@ import {
   (function () {
     bdd.describe('index result field sort', function describeIndexTests() {
       bdd.before(function () {
-        return scenarioManager.reload('emptyKibana');
+        // delete .kibana index and then wait for Kibana to re-create it
+        return esClient.deleteAndUpdateConfigDoc();
       });
 
       var columns = [{
diff --git a/test/functional/apps/settings/_initial_state.js b/test/functional/apps/settings/_initial_state.js
index 2456ca9f87a43..674bf60813b92 100644
--- a/test/functional/apps/settings/_initial_state.js
+++ b/test/functional/apps/settings/_initial_state.js
@@ -2,7 +2,8 @@ import {
   bdd,
   common,
   scenarioManager,
-  settingsPage
+  settingsPage,
+  esClient
 } from '../../../support';
 
 (function () {
@@ -11,7 +12,8 @@ import {
   (function () {
     bdd.describe('initial state', function () {
       bdd.before(function () {
-        return scenarioManager.reload('emptyKibana')
+        // delete .kibana index and then wait for Kibana to re-create it
+        return esClient.deleteAndUpdateConfigDoc()
         .then(function () {
           return settingsPage.navigateTo();
         });
diff --git a/test/functional/apps/settings/index.js b/test/functional/apps/settings/index.js
index c8b0c8c2ca77b..ad2a22785cbc3 100644
--- a/test/functional/apps/settings/index.js
+++ b/test/functional/apps/settings/index.js
@@ -1,4 +1,4 @@
-import { bdd, defaultTimeout, scenarioManager } from '../../../support';
+import { bdd, defaultTimeout, scenarioManager, esClient, common } from '../../../support';
 
 (function () {
   bdd.describe('settings app', function () {
@@ -7,16 +7,13 @@ import { bdd, defaultTimeout, scenarioManager } from '../../../support';
     // on setup, we create an settingsPage instance
     // that we will use for all the tests
     bdd.before(function () {
-      return scenarioManager.reload('emptyKibana')
-      .then(function () {
-        return scenarioManager.loadIfEmpty('makelogs');
-      });
+      return scenarioManager.loadIfEmpty('makelogs');
     });
 
     bdd.after(function () {
       return scenarioManager.unload('makelogs')
       .then(function () {
-        scenarioManager.unload('emptyKibana');
+        return esClient.delete('.kibana');
       });
     });
 
diff --git a/test/functional/apps/visualize/index.js b/test/functional/apps/visualize/index.js
index e652161b8b13c..e02ce4c51f01d 100644
--- a/test/functional/apps/visualize/index.js
+++ b/test/functional/apps/visualize/index.js
@@ -18,12 +18,8 @@ import {
 
       common.debug('Starting visualize before method');
       var logstash = scenarioManager.loadIfEmpty('logstashFunctional');
-      return esClient.delete('.kibana')
-      .then(function () {
-        return common.try(function () {
-          return esClient.updateConfigDoc({'dateFormat:tz':'UTC', 'defaultIndex':'logstash-*'});
-        });
-      })
+      // delete .kibana index and update configDoc
+      return esClient.deleteAndUpdateConfigDoc({'dateFormat:tz':'UTC', 'defaultIndex':'logstash-*'})
       .then(function loadkibanaIndexPattern() {
         common.debug('load kibana index with default index pattern');
         return elasticDump.elasticLoad('visualize','.kibana');
diff --git a/test/support/es_client.js b/test/support/es_client.js
index 76f486b468437..8a3761c8e3ebc 100644
--- a/test/support/es_client.js
+++ b/test/support/es_client.js
@@ -42,16 +42,12 @@ export default (function () {
       });
     },
 
-
-    /**
-    * Add fields to the config doc (like setting timezone and defaultIndex)
-    * @return {Promise} A promise that is resolved when elasticsearch has a response
+    /*
+    ** Gets configId which is needed when we're going to update the config doc.
+    ** Also used after deleting .kibana index to know Kibana has recreated it.
     */
-    updateConfigDoc: function (docMap) {
-      // first we need to get the config doc's id so we can use it in our _update call
-      var self = this;
+    getConfigId: function () {
       var configId;
-      var docMapString = JSON.stringify(docMap);
 
       return this.client.search({
         index: '.kibana',
@@ -70,11 +66,25 @@ export default (function () {
         } else {
           configId = response.hits.hits[0]._id;
           common.debug('config._id =' + configId);
+          return configId;
         }
-      })
+      });
+    },
+
+
+    /**
+    * Add fields to the config doc (like setting timezone and defaultIndex)
+    * @return {Promise} A promise that is resolved when elasticsearch has a response
+    */
+    updateConfigDoc: function (docMap) {
+      // first we need to get the config doc's id so we can use it in our _update call
+      var self = this;
+      var configId;
+      var docMapString = JSON.stringify(docMap);
+
+      return this.getConfigId()
       // now that we have the id, we can update
-      // return scenarioManager.updateConfigDoc({'dateFormat:tz':'UTC', 'defaultIndex':'logstash-*'});
-      .then(function (response) {
+      .then(function (configId) {
         common.debug('updating config with ' + docMapString);
         return self.client.update({
           index: '.kibana',
@@ -89,7 +99,35 @@ export default (function () {
       .catch(function (err) {
         throw err;
       });
+    },
+
+    /**
+    * Wrap the common 'delete index', 'updateConfigDoc' into one.
+    * [docMap] is optional.
+    * @return {Promise} A promise that is resolved when elasticsearch has a response
+    */
+    deleteAndUpdateConfigDoc: function (docMap) {
+      var self = this;
+      var configId;
+
+      return this.delete('.kibana')
+      .then(function () {
+        if (!docMap) {
+          return common.try(function () {
+            return self.getConfigId();
+          });
+        } else {
+          var docMapString = JSON.stringify(docMap);
+          return common.try(function () {
+            return self.updateConfigDoc(docMap);
+          });
+        }
+      })
+      .catch(function (err) {
+        throw err;
+      });
     }
+
   };
 
   return EsClient;