docs: function(key) {
      if (!store._store_created) {
        throw 'cannot get store because is has not been created'
      }
      if (arguments.length === 0) {
        // return the whole store
        if (store.options.immutable) {
          return Object.assign({}, store._store) // copy entire store by value
        } else {
          return store._store // return reference to store
        }
      } else if (arguments.length > 1) {
        console.error('unexpected number of arguments')
        return
      }
  
      if (!store._store.hasOwnProperty(key)) {
        throw `attempted to access key that was not set during initialization: ${key}`
      }
  
      let ref = store._store[key]
      if (store.options.immutable) {
        return copyByValue(ref)
      } else {
        // return the reference
        return ref
      }
    }