diff --git a/dist b/dist
index a77eb39218a5815854daa07373f7f4597c3b9cb9..3b8e148d8fee752b6318df2b940316c77936b812 160000
--- a/dist
+++ b/dist
@@ -1 +1 @@
-Subproject commit a77eb39218a5815854daa07373f7f4597c3b9cb9
+Subproject commit 3b8e148d8fee752b6318df2b940316c77936b812
diff --git a/package.json b/package.json
index e9aaf134ef50758fa17891d3778b37cae513bb4a..f5583f3c017d44307696f12f38253173595e7ca6 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "yjs",
-  "version": "0.8.3",
+  "version": "0.8.4",
   "description": "A framework for real-time p2p shared editing on arbitrary complex data types",
   "main": "./src/y.js",
   "scripts": {
diff --git a/src/y.js b/src/y.js
index 36a813dab5a957ffed186ab7e8560e3b9fe72367..7f7d2485a5ed1bf9a71ea680e30bc2f00f06f6ca 100644
--- a/src/y.js
+++ b/src/y.js
@@ -93,8 +93,9 @@ function Y (opts/* :YOptions */) /* :Promise<YConfig> */ {
   Y.sourceDir = opts.sourceDir
   return Y.requestModules(modules).then(function () {
     return new Promise(function (resolve) {
-      var yconfig = new YConfig(opts, function () {
-        yconfig.db.whenUserIdSet(function () {
+      var yconfig = new YConfig(opts)
+      yconfig.db.whenUserIdSet(function () {
+        yconfig.init(function () {
           resolve(yconfig)
         })
       })
@@ -111,6 +112,10 @@ class YConfig {
   constructor (opts, callback) {
     this.db = new Y[opts.db.name](this, opts.db)
     this.connector = new Y[opts.connector.name](this, opts.connector)
+    this.options = opts
+  }
+  init (callback) {
+    var opts = this.options
     var share = {}
     this.share = share
     this.db.requestTransaction(function * requestTransaction () {