diff --git a/c_src/atom_names.h b/c_src/atom_names.h
index 47bd088..bd0cde8 100644
--- a/c_src/atom_names.h
+++ b/c_src/atom_names.h
@@ -28,7 +28,6 @@
 
 ATOM_MAP(erlfdb_error);
 ATOM_MAP(erlfdb_future);
-ATOM_MAP(erlfdb_cluster);
 ATOM_MAP(erlfdb_database);
 ATOM_MAP(erlfdb_transaction);
 
@@ -39,6 +38,7 @@
 ATOM_MAP(local_address);
 ATOM_MAP(cluster_file);
 ATOM_MAP(trace_enable);
+ATOM_MAP(trace_format);
 ATOM_MAP(trace_roll_size);
 ATOM_MAP(trace_max_logs_size);
 ATOM_MAP(trace_log_group);
@@ -65,10 +65,6 @@
 ATOM_MAP(enable_slow_task_profiling);
 
 
-// Cluster Options
-// There aren't any...
-
-
 // Database Options
 ATOM_MAP(location_cache_size);
 ATOM_MAP(max_watches);
@@ -135,4 +131,4 @@
 // Error Predicates
 ATOM_MAP(retryable);
 ATOM_MAP(maybe_committed);
-ATOM_MAP(retryable_not_committed);
\ No newline at end of file
+ATOM_MAP(retryable_not_committed);
diff --git a/c_src/fdb.h b/c_src/fdb.h
index 837d810..62dffda 100644
--- a/c_src/fdb.h
+++ b/c_src/fdb.h
@@ -13,7 +13,7 @@
 #ifndef ERLFDB_FDB_H
 #define ERLFDB_FDB_H
 
-#define FDB_API_VERSION 600
+#define FDB_API_VERSION 610
 #include <foundationdb/fdb_c.h>
 
-#endif // Included fdb.h
\ No newline at end of file
+#endif // Included fdb.h
diff --git a/c_src/main.c b/c_src/main.c
index 16c3618..3504aa5 100644
--- a/c_src/main.c
+++ b/c_src/main.c
@@ -217,52 +217,6 @@
 
 
 static inline ERL_NIF_TERM
-erlfdb_future_get_cluster(ErlNifEnv* env, ErlFDBFuture* f)
-{
-    FDBCluster* cluster;
-    ErlFDBCluster* c;
-    ERL_NIF_TERM ret;
-    fdb_error_t err;
-
-    err = fdb_future_get_cluster(f->future, &cluster);
-    if(err != 0) {
-        return erlfdb_erlang_error(env, err);
-    }
-
-    c = enif_alloc_resource(ErlFDBClusterRes, sizeof(ErlFDBCluster));
-    c->cluster = cluster;
-
-    ret = enif_make_resource(env, c);
-    enif_release_resource(c);
-
-    return T2(env, ATOM_erlfdb_cluster, ret);
-}
-
-
-static inline ERL_NIF_TERM
-erlfdb_future_get_database(ErlNifEnv* env, ErlFDBFuture* f)
-{
-    FDBDatabase* database;
-    ErlFDBDatabase* d;
-    ERL_NIF_TERM ret;
-    fdb_error_t err;
-
-    err = fdb_future_get_database(f->future, &database);
-    if(err != 0) {
-        return erlfdb_erlang_error(env, err);
-    }
-
-    d = enif_alloc_resource(ErlFDBDatabaseRes, sizeof(ErlFDBDatabase));
-    d->database = database;
-
-    ret = enif_make_resource(env, d);
-    enif_release_resource(d);
-
-    return T2(env, ATOM_erlfdb_database, ret);
-}
-
-
-static inline ERL_NIF_TERM
 erlfdb_future_get_value(ErlNifEnv* env, ErlFDBFuture* f)
 {
     fdb_bool_t present;
@@ -497,6 +451,8 @@
         option = FDB_NET_OPTION_CLUSTER_FILE;
     } else if(IS_ATOM(argv[0], trace_enable)) {
         option = FDB_NET_OPTION_TRACE_ENABLE;
+    } else if(IS_ATOM(argv[0], trace_format)) {
+        option = FDB_NET_OPTION_TRACE_FORMAT;
     } else if(IS_ATOM(argv[0], trace_roll_size)) {
         option = FDB_NET_OPTION_TRACE_ROLL_SIZE;
     } else if(IS_ATOM(argv[0], trace_max_logs_size)) {
@@ -711,10 +667,6 @@
         return erlfdb_future_get_version(env, f);
     } else if(f->ftype == ErlFDB_FT_KEY) {
         return erlfdb_future_get_key(env, f);
-    } else if(f->ftype == ErlFDB_FT_CLUSTER) {
-        return erlfdb_future_get_cluster(env, f);
-    } else if(f->ftype == ErlFDB_FT_DATABASE) {
-        return erlfdb_future_get_database(env, f);
     } else if(f->ftype == ErlFDB_FT_VALUE) {
         return erlfdb_future_get_value(env, f);
     } else if(f->ftype == ErlFDB_FT_STRING_ARRAY) {
@@ -728,11 +680,15 @@
 
 
 static ERL_NIF_TERM
-erlfdb_create_cluster(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
+erlfdb_create_database(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
 {
     ErlFDBSt* st = (ErlFDBSt*) enif_priv_data(env);
-    FDBFuture* future;
     ErlNifBinary bin;
+    FDBDatabase* database;
+    fdb_error_t err;
+    ErlFDBDatabase* d;
+    ERL_NIF_TERM ret;
+
 
     if(st->lib_state != ErlFDB_CONNECTED) {
         return enif_make_badarg(env);
@@ -750,62 +706,18 @@
         return enif_make_badarg(env);
     }
 
-    future = fdb_create_cluster((const char*) bin.data);
-
-    return erlfdb_create_future(env, future, ErlFDB_FT_CLUSTER);
-}
-
-
-static ERL_NIF_TERM
-erlfdb_cluster_set_option(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
-{
-    // There are currently no valid cluster options
-    return enif_make_badarg(env);
-}
-
-
-static ERL_NIF_TERM
-erlfdb_cluster_create_database(
-        ErlNifEnv* env,
-        int argc,
-        const ERL_NIF_TERM argv[]
-    )
-{
-    ErlFDBSt* st = (ErlFDBSt*) enif_priv_data(env);
-    ErlFDBCluster* c;
-    FDBFuture* future;
-    ErlNifBinary bin;
-    void* res;
-
-    if(st->lib_state != ErlFDB_CONNECTED) {
-        return enif_make_badarg(env);
+    err = fdb_create_database((const char*) bin.data, &database);
+    if(err != 0) {
+        return erlfdb_erlang_error(env, err);
     }
 
-    if(argc != 2) {
-        return enif_make_badarg(env);
-    }
+    d = enif_alloc_resource(ErlFDBDatabaseRes, sizeof(ErlFDBDatabase));
+    d->database = database;
 
-    if(!enif_get_resource(env, argv[0], ErlFDBClusterRes, &res)) {
-        return enif_make_badarg(env);
-    }
-    c = (ErlFDBCluster*) res;
+    ret = enif_make_resource(env, d);
+    enif_release_resource(d);
 
-    if(!enif_inspect_binary(env, argv[1], &bin)) {
-        return enif_make_badarg(env);
-    }
-
-    // FoundationDB requires a dbname that is "DB"
-    if(bin.size != 2 || bin.data[0] != 'D' || bin.data[1] != 'B') {
-        return enif_make_badarg(env);
-    }
-
-    future = fdb_cluster_create_database(
-            c->cluster,
-            (const uint8_t*) bin.data,
-            bin.size
-        );
-
-    return erlfdb_create_future(env, future, ErlFDB_FT_DATABASE);
+    return T2(env, ATOM_erlfdb_database, ret);
 }
 
 
@@ -2068,10 +1980,7 @@
     NIF_FUNC(erlfdb_future_get_error, 1),
     NIF_FUNC(erlfdb_future_get, 1),
 
-    NIF_FUNC(erlfdb_create_cluster, 1),
-    NIF_FUNC(erlfdb_cluster_set_option, 3),
-    NIF_FUNC(erlfdb_cluster_create_database, 2),
-
+    NIF_FUNC(erlfdb_create_database, 1),
     NIF_FUNC(erlfdb_database_set_option, 3),
     NIF_FUNC(erlfdb_database_create_transaction, 1),
 
diff --git a/c_src/resources.c b/c_src/resources.c
index c7c5319..88f402a 100644
--- a/c_src/resources.c
+++ b/c_src/resources.c
@@ -14,7 +14,6 @@
 
 
 ErlNifResourceType* ErlFDBFutureRes;
-ErlNifResourceType* ErlFDBClusterRes;
 ErlNifResourceType* ErlFDBDatabaseRes;
 ErlNifResourceType* ErlFDBTransactionRes;
 
@@ -35,18 +34,6 @@
         return 0;
     }
 
-    ErlFDBClusterRes = enif_open_resource_type(
-            env,
-            NULL,
-            "erlfdb_cluster",
-            erlfdb_cluster_dtor,
-            ERL_NIF_RT_CREATE,
-            NULL
-        );
-    if(ErlFDBClusterRes == NULL) {
-        return 0;
-    }
-
     ErlFDBDatabaseRes = enif_open_resource_type(
             env,
             NULL,
@@ -91,17 +78,6 @@
 
 
 void
-erlfdb_cluster_dtor(ErlNifEnv* env, void* obj)
-{
-    ErlFDBCluster* c = (ErlFDBCluster*) obj;
-
-    if(c->cluster != NULL) {
-        fdb_cluster_destroy(c->cluster);
-    }
-}
-
-
-void
 erlfdb_database_dtor(ErlNifEnv* env, void* obj)
 {
     ErlFDBDatabase* d = (ErlFDBDatabase*) obj;
@@ -133,4 +109,4 @@
     self = enif_make_pid(env, &pid);
 
     return enif_compare(t->owner, self) == 0;
-}
\ No newline at end of file
+}
diff --git a/c_src/resources.h b/c_src/resources.h
index ead7b1c..8733f87 100644
--- a/c_src/resources.h
+++ b/c_src/resources.h
@@ -20,7 +20,6 @@
 
 
 extern ErlNifResourceType* ErlFDBFutureRes;
-extern ErlNifResourceType* ErlFDBClusterRes;
 extern ErlNifResourceType* ErlFDBDatabaseRes;
 extern ErlNifResourceType* ErlFDBTransactionRes;
 
@@ -31,8 +30,6 @@
     ErlFDB_FT_VOID,
     ErlFDB_FT_VERSION,
     ErlFDB_FT_KEY,
-    ErlFDB_FT_CLUSTER,
-    ErlFDB_FT_DATABASE,
     ErlFDB_FT_VALUE,
     ErlFDB_FT_STRING_ARRAY,
     ErlFDB_FT_KEYVALUE_ARRAY
@@ -51,12 +48,6 @@
 } ErlFDBFuture;
 
 
-typedef struct _ErlFDBCluster
-{
-    FDBCluster* cluster;
-} ErlFDBCluster;
-
-
 typedef struct _ErlFDBDatabase
 {
     FDBDatabase* database;
@@ -74,7 +65,6 @@
 
 int erlfdb_init_resources(ErlNifEnv* env);
 void erlfdb_future_dtor(ErlNifEnv* env, void* obj);
-void erlfdb_cluster_dtor(ErlNifEnv* env, void* obj);
 void erlfdb_database_dtor(ErlNifEnv* env, void* obj);
 void erlfdb_transaction_dtor(ErlNifEnv* env, void* obj);
 
@@ -82,4 +72,4 @@
 int erlfdb_transaction_is_owner(ErlNifEnv* env, ErlFDBTransaction* t);
 
 
-#endif // Included resources.h
\ No newline at end of file
+#endif // Included resources.h
diff --git a/src/erlfdb.app.src b/src/erlfdb.app.src
index 0b9b6c0..4134ae3 100644
--- a/src/erlfdb.app.src
+++ b/src/erlfdb.app.src
@@ -18,7 +18,7 @@
     {maintainers, ["Paul J. Davis"]},
     {links, [{"GitHub", "https://github.com/cloudant-labs/couchdb-erlfdb"}]},
     {env, [
-        {api_version, 600},
+        {api_version, 610},
         {network_options, []}
     ]}
-]}.
\ No newline at end of file
+]}.
diff --git a/src/erlfdb.erl b/src/erlfdb.erl
index 4bde103..e6eccbd 100644
--- a/src/erlfdb.erl
+++ b/src/erlfdb.erl
@@ -142,8 +142,7 @@
 
 
 open(ClusterFile) ->
-    Cluster = wait(erlfdb_nif:create_cluster(ClusterFile)),
-    wait(erlfdb_nif:cluster_create_database(Cluster, <<"DB">>)).
+    erlfdb_nif:create_database(ClusterFile).
 
 
 create_transaction(?IS_DB = Db) ->
diff --git a/src/erlfdb_nif.erl b/src/erlfdb_nif.erl
index 546d055..2b73199 100644
--- a/src/erlfdb_nif.erl
+++ b/src/erlfdb_nif.erl
@@ -25,12 +25,7 @@
     future_get_error/1,
     future_get/1,
 
-    create_cluster/0,
-    create_cluster/1,
-    cluster_set_option/2,
-    cluster_set_option/3,
-    cluster_create_database/2,
-
+    create_database/1,
     database_set_option/2,
     database_set_option/3,
     database_create_transaction/1,
@@ -63,12 +58,11 @@
 ]).
 
 
--define(DEFAULT_API_VERSION, 600).
+-define(DEFAULT_API_VERSION, 610).
 
 
 -type error() :: {erlfdb_error, Code::integer()}.
 -type future() :: {erlfdb_future, reference(), reference()}.
--type cluster() :: {erlfdb_cluster, reference()}.
 -type database() :: {erlfdb_database, reference()}.
 -type transaction() :: {erlfdb_transaction, reference()}.
 
@@ -79,7 +73,6 @@
     {Key::binary(), OrEqual::boolean(), Offset::integer()}.
 
 -type future_result() ::
-    cluster() |
     database() |
     integer() |
     binary() |
@@ -91,6 +84,7 @@
     local_address |
     cluster_file |
     trace_enable |
+    trace_format |
     trace_roll_size |
     trace_max_logs_size |
     trace_log_group |
@@ -116,8 +110,6 @@
     disable_client_statistics_logging |
     enable_slow_task_profiling.
 
--type cluster_option() :: there_are_no_cluster_options.
-
 -type database_option() ::
     location_cache_size |
     max_watches |
@@ -211,16 +203,11 @@
     erlfdb_future_get(Ft).
 
 
--spec create_cluster() -> future().
-create_cluster() ->
-    create_cluster(<<0>>).
+-spec create_database(ClusterFilePath::binary()) -> database().
+create_database(<<>>) ->
+    create_database(<<0>>);
 
-
--spec create_cluster(ClusterFilePath::binary()) -> future().
-create_cluster(<<>>) ->
-    create_cluster(<<0>>);
-
-create_cluster(ClusterFilePath) ->
+create_database(ClusterFilePath) ->
     Size = size(ClusterFilePath) - 1,
     % Make sure we pass a NULL-terminated string
     % to FoundationDB
@@ -230,26 +217,7 @@
         _ ->
             <<ClusterFilePath/binary, 0>>
     end,
-    erlfdb_create_cluster(NifPath).
-
-
--spec cluster_set_option(cluster(), Option::cluster_option()) -> ok.
-cluster_set_option(Cluster, Option) ->
-    cluster_set_option(Cluster, Option, <<>>).
-
-
--spec cluster_set_option(
-        cluster(),
-        Option::cluster_option(),
-        Value::option_value()
-    ) -> ok.
-cluster_set_option({erlfdb_cluster, Cluster}, Opt, Value) ->
-    erlfdb_cluster_set_option(Cluster, Opt, Value).
-
-
--spec cluster_create_database(cluster(), DbName::binary()) -> {ok, database()}.
-cluster_create_database({erlfdb_cluster, Cluster}, DbName) ->
-    erlfdb_cluster_create_database(Cluster, DbName).
+    erlfdb_create_database(NifPath).
 
 
 -spec database_set_option(database(), Option::database_option()) -> ok.
@@ -535,12 +503,8 @@
 erlfdb_future_get_error(_Future) -> ?NOT_LOADED.
 erlfdb_future_get(_Future) -> ?NOT_LOADED.
 
-% Clusters
-erlfdb_create_cluster(_ClusterFile) -> ?NOT_LOADED.
-erlfdb_cluster_set_option(_Cluster, _ClusterOption, _Value) -> ?NOT_LOADED.
-erlfdb_cluster_create_database(_Cluster, _DbName) -> ?NOT_LOADED.
-
 % Databases
+erlfdb_create_database(_ClusterFilePath) -> ?NOT_LOADED.
 erlfdb_database_set_option(_Database, _DatabaseOption, _Value) -> ?NOT_LOADED.
 erlfdb_database_create_transaction(_Database) -> ?NOT_LOADED.
 
@@ -599,4 +563,4 @@
 
 % Misc
 erlfdb_get_error(_Error) -> ?NOT_LOADED.
-erlfdb_error_predicate(_Predicate, _Error) -> ?NOT_LOADED.
\ No newline at end of file
+erlfdb_error_predicate(_Predicate, _Error) -> ?NOT_LOADED.
