Cleanup mem3_util db creation logic
diff --git a/src/dreyfus/src/dreyfus_rpc.erl b/src/dreyfus/src/dreyfus_rpc.erl
index fe17e7d..786af63 100644
--- a/src/dreyfus/src/dreyfus_rpc.erl
+++ b/src/dreyfus/src/dreyfus_rpc.erl
@@ -102,15 +102,8 @@
     end.
 
 get_or_create_db(DbName, Options) ->
-    DbOpts = mem3_shards:opts_for_db(DbName),
-    Options1 = mem3_util:merge_opts(DbOpts, Options),
-    case couch_db:open_int(DbName, Options) of
-    {not_found, no_db_file} ->
-        couch_log:warning("~p creating ~s", [?MODULE, DbName]),
-        couch_server:create(DbName, Options1);
-    Else ->
-        Else
-    end.
+    mem3_util:get_or_create_db(DbName, Options).
+
 
 calculate_seqs(Db, Stale) ->
     LastSeq = couch_db:get_update_seq(Db),
diff --git a/src/fabric/src/fabric_util.erl b/src/fabric/src/fabric_util.erl
index 88f439b..e528261 100644
--- a/src/fabric/src/fabric_util.erl
+++ b/src/fabric/src/fabric_util.erl
@@ -105,9 +105,8 @@
     Nodes = [node()|erlang:nodes()],
     Live = [S || #shard{node = N} = S <- Shards, lists:member(N, Nodes)],
     Factor = list_to_integer(config:get("fabric", "shard_timeout_factor", "2")),
-    DbOpts = mem3_shards:opts_for_db(DbName),
     Options1 = [{create_if_missing, true} | Options],
-    Options2 = mem3_util:merge_opts(DbOpts, Options1),
+    Options2 = mem3_util:add_db_config_options(DbName, Options1),
     get_shard(Live, Options2, 100, Factor).
 
 get_shard([], _Opts, _Timeout, _Factor) ->
diff --git a/src/mem3/src/mem3_util.erl b/src/mem3/src/mem3_util.erl
index 097b3d8..9a953f8 100644
--- a/src/mem3/src/mem3_util.erl
+++ b/src/mem3/src/mem3_util.erl
@@ -16,8 +16,9 @@
     n_val/2, q_val/1, to_atom/1, to_integer/1, write_db_doc/1, delete_db_doc/1,
     shard_info/1, ensure_exists/1, open_db_doc/1, get_or_create_db/2]).
 -export([is_deleted/1, rotate_list/2]).
--export([get_shard_opts/1, get_engine_opt/1, get_props_opt/1, merge_opts/2]).
+-export([get_shard_opts/1, get_engine_opt/1, get_props_opt/1]).
 -export([get_shard_props/1, find_dirty_shards/0]).
+-export([add_db_config_options/2]).
 -export([
     iso8601_timestamp/0,
     live_nodes/0,
@@ -512,18 +513,22 @@
     B1 =< B2.
 
 
+add_db_config_options(DbName, Options) ->
+    DbOpts = case mem3:dbname(DbName) of
+        DbName  -> [];
+        MDbName -> mem3_shards:opts_for_db(MDbName)
+    end,
+    merge_opts(DbOpts, Options).
+
+
 get_or_create_db(DbName, Options) ->
     case couch_db:open_int(DbName, Options) of
         {ok, _} = OkDb ->
             OkDb;
         {not_found, no_db_file} ->
             try
-                DbOpts = case mem3:dbname(DbName) of
-                    DbName  -> [];
-                    MDbName -> mem3_shards:opts_for_db(MDbName)
-                end,
                 Options1 = [{create_if_missing, true} | Options],
-                Options2 = merge_opts(DbOpts, Options1),
+                Options2 = add_db_config_options(DbName, Options1),
                 couch_db:open_int(DbName, Options2)
             catch error:database_does_not_exist ->
                 throw({error, missing_target})