diff --git a/src/security/caveats.js b/src/security/caveats.js
index df780e0..cfd1822 100644
--- a/src/security/caveats.js
+++ b/src/security/caveats.js
@@ -30,6 +30,13 @@
   });
 }
 
+/**
+ * createConstCaveat returns a [Caveat]{@link module:vanadium.security.Caveat}
+ * that validates iff value is true.
+ * @param {boolean} value
+ * @returns module:vanadium.security.Caveat
+ * @memberof module:vanadium.security
+ */
 function createConstCaveat(value) {
   return createCaveat(vdlSecurity.ConstCaveat, value);
 }
diff --git a/src/security/index.js b/src/security/index.js
index f8645f6..5e2dff6 100644
--- a/src/security/index.js
+++ b/src/security/index.js
@@ -42,6 +42,7 @@
   access: require('./access'),
   createExpiryCaveat: require('./caveats').createExpiryCaveat,
   createMethodCaveat: require('./caveats').createMethodCaveat,
+  createConstCaveat: require('./caveats').createConstCaveat,
   unconstrainedUse: require('./caveats').unconstrainedUse,
   createCaveat: require('./caveats').createCaveat,
   unionOfBlessings: require('./blessings-util').unionOfBlessings
diff --git a/src/vdl/kind.js b/src/vdl/kind.js
index 30d01ff..2277f2b 100644
--- a/src/vdl/kind.js
+++ b/src/vdl/kind.js
@@ -16,97 +16,120 @@
 var kind = {
   // Nullable kinds
   /**
+   * @type {string}
    * @const
    */
   ANY: 'any',
   /**
+   * @type {string}
    * @const
    */
   OPTIONAL: 'optional',
   // Scalar kinds
   /**
+   * @type {string}
    * @const
    */
   BOOL: 'bool',
   /**
+   * @type {string}
    * @const
    */
   BYTE: 'byte',
   /**
+   * @type {string}
    * @const
    */
   UINT16: 'uint16',
   /**
+   * @type {string}
    * @const
    */
   UINT32: 'uint32',
   /**
+   * @type {string}
    * @const
    */
   UINT64: 'uint64',
   /**
+   * @type {string}
    * @const
    */
   INT16: 'int16',
   /**
+   * @type {string}
    * @const
    */
   INT32: 'int32',
   /**
+   * @type {string}
    * @const
    */
   INT64: 'int64',
   /**
+   * @type {string}
    * @const
    */
   FLOAT32: 'float32',
   /**
+   * @type {string}
    * @const
    */
   FLOAT64: 'float64',
   /**
+   * @type {string}
    * @const
    */
   COMPLEX64: 'complex64',
   /**
+   * @type {string}
    * @const
    */
   COMPLEX128: 'complex128',
   /**
+   * @type {string}
    * @const
    */
   STRING: 'string',
   /**
+   * @type {string}
    * @const
    */
   ENUM: 'enum',
   /**
+   * @type {string}
    * @const
    */
   TYPEOBJECT: 'typeobject',
   // Composite kinds
   /**
+   * @type {string}
    * @const
    */
   ARRAY: 'array',
   /**
+   * @type {string}
    * @const
    */
   LIST: 'list',
   /**
+   * @type {string}
    * @const
    */
   SET: 'set',
   /**
+   * @type {string}
    * @const
    */
   MAP: 'map',
   /**
+   * @type {string}
    * @const
    */
   STRUCT: 'struct',
   /**
    * Union is like struct, but with only 1 field filled in.
+   * @type {string}
    * @const
    */
   UNION: 'union',
diff --git a/src/vdl/types.js b/src/vdl/types.js
index 23f216e..25eb07b 100644
--- a/src/vdl/types.js
+++ b/src/vdl/types.js
@@ -21,73 +21,89 @@
  */
 var types = {
   /**
+   * @type {module:vanadium.vdl.Type}
    * @const
    */
   ANY: primitiveType(kind.ANY),
   /**
+   * @type {module:vanadium.vdl.Type}
    * @const
    */
   BOOL: primitiveType(kind.BOOL),
   /**
+   * @type {module:vanadium.vdl.Type}
    * @const
    */
   BYTE: primitiveType(kind.BYTE),
   /**
+   * @type {module:vanadium.vdl.Type}
    * @const
    */
   UINT16: primitiveType(kind.UINT16),
   /**
+   * @type {module:vanadium.vdl.Type}
    * @const
    */
   UINT32: primitiveType(kind.UINT32),
   /**
+   * @type {module:vanadium.vdl.Type}
    * @const
    */
   UINT64: primitiveType(kind.UINT64),
   /**
+   * @type {module:vanadium.vdl.Type}
    * @const
    */
   INT16: primitiveType(kind.INT16),
   /**
+   * @type {module:vanadium.vdl.Type}
    * @const
    */
   INT32: primitiveType(kind.INT32),
   /**
+   * @type {module:vanadium.vdl.Type}
    * @const
    */
   INT64: primitiveType(kind.INT64),
   /**
+   * @type {module:vanadium.vdl.Type}
    * @const
    */
   FLOAT32: primitiveType(kind.FLOAT32),
   /**
+   * @type {module:vanadium.vdl.Type}
    * @const
    */
   FLOAT64: primitiveType(kind.FLOAT64),
   /**
+   * @type {module:vanadium.vdl.Type}
    * @const
    */
   COMPLEX64: primitiveType(kind.COMPLEX64),
   /**
+   * @type {module:vanadium.vdl.Type}
    * @const
    */
   COMPLEX128: primitiveType(kind.COMPLEX128),
   /**
+   * @type {module:vanadium.vdl.Type}
    * @const
    */
   STRING: primitiveType(kind.STRING),
   /**
+   * @type {module:vanadium.vdl.Type}
    * @const
    */
   TYPEOBJECT: Type.prototype._type // So that === works for types.TypeObject
 };
 /**
- * Defines the wire error format
+ * @type {module:vanadium.vdl.Type}
  * @const
  */
 types.ERROR = defineOptionalErrorType();
 
 /**
+ * @type {module:vanadium.vdl.Type}
  * @const
  */
 types.JSVALUE = defineJSValueType();
diff --git a/test/integration/test-authorizer.js b/test/integration/test-authorizer.js
index ef9da8e..895ead4 100644
--- a/test/integration/test-authorizer.js
+++ b/test/integration/test-authorizer.js
@@ -2,15 +2,13 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+var vanadium = require('../..');
 var test = require('prova');
-var access = require('../../src/gen-vdl/v.io/v23/security/access');
 var Deferred = require('../../src/lib/deferred');
-var permissionsAuthorizer =
-  require('../../src/security/access/permissions-authorizer');
-var allowEveryoneAuthorizer =
-  require('../../src/security/access/allow-everyone-authorizer');
 var serve = require('./serve');
-
+var access = vanadium.security.access;
+var permissionsAuthorizer = vanadium.security.access.permissionsAuthorizer;
+var allowEveryoneAuthorizer = vanadium.security.access.allowEveryoneAuthorizer;
 
 var service = {
   call: function(ctx, serverCall, arg) {
@@ -18,7 +16,6 @@
   }
 };
 
-
 function createPromiseDispatcher(authorizer, tags) {
   function auth(ctx, call) {
     if (call.method === '__Signature') {
diff --git a/test/integration/test-bless.js b/test/integration/test-bless.js
index 6880bda..1c03b5b 100644
--- a/test/integration/test-bless.js
+++ b/test/integration/test-bless.js
@@ -5,11 +5,10 @@
 var test = require('prova');
 var vanadium = require('../../');
 var config = require('./default-config');
-var caveats = require('../../src/security/caveats');
 var leafDispatcher = require('../../src/rpc/leaf-dispatcher');
-var serve = require('./serve');
 var Blessings = require('../../src/security/blessings');
-var SharedContextKeys = require('../../src/runtime/shared-context-keys');
+var serve = require('./serve');
+var security = vanadium.security;
 
 function validateBlessings(t, blessings) {
   t.ok(blessings instanceof Blessings, 'Blessings have correct type');
@@ -50,7 +49,7 @@
     rt = runtime;
 
     runtime.principal.blessSelf(runtime.getContext(), 'blessedname',
-      caveats.createExpiryCaveat(new Date()),
+      security.createExpiryCaveat(new Date()),
       function(err, blessings) {
       t.error(err);
       validateBlessings(t, blessings);
@@ -63,11 +62,11 @@
   var service = {
     method: function(ctx, serverCall, cb) {
       var secCall = serverCall.securityCall;
-      var rt = ctx.value(SharedContextKeys.RUNTIME);
+      var rt = vanadium.runtimeForContext(ctx);
       var remoteKey = secCall.remoteBlessings.publicKey;
       rt.principal.bless(ctx, remoteKey, secCall.localBlessings,
        'ext', function(err) {
-         t.ok(err, 'Expected at least one caveat must be specfied error');
+         t.ok(err, 'Expected at least one caveat must be specified error');
          cb(null, null);
        });
     }
@@ -90,12 +89,12 @@
 test('Test bless with Caveat from server', function(t) {
   var service = {
     method: function(ctx, serverCall, cb) {
-      var rt = ctx.value(SharedContextKeys.RUNTIME);
+      var rt = vanadium.runtimeForContext(ctx);
       var secCall = serverCall.securityCall;
       var remoteKey = secCall.remoteBlessings.publicKey;
       rt.principal.bless(ctx, remoteKey, secCall.localBlessings,
-       'ext', caveats.createExpiryCaveat(new Date(Date.now() - 1000)),
-       caveats.createConstCaveat(true), function(err, blessings) {
+       'ext', security.createExpiryCaveat(new Date(Date.now() - 1000)),
+       security.createConstCaveat(true), function(err, blessings) {
          t.notOk(err, 'No error expected during bless');
          validateBlessings(t, blessings);
          cb(null, null);
@@ -146,7 +145,7 @@
             call.remoteBlessings.publicKey,
             call.localBlessings,
             'ext',
-            caveats.createExpiryCaveat(fiveSecondsInFuture),
+            security.createExpiryCaveat(fiveSecondsInFuture),
             function(err, blessing) {
               expectedBlessing = blessing;
               cb(err, blessing);
diff --git a/test/integration/test-blessings-util.js b/test/integration/test-blessings-util.js
index 52f907b..0f55cea 100644
--- a/test/integration/test-blessings-util.js
+++ b/test/integration/test-blessings-util.js
@@ -5,7 +5,7 @@
 var test = require('prova');
 var vanadium = require('../../');
 var config = require('./default-config');
-var security = require('../../src/security');
+var security = vanadium.security;
 
 test('Test union of blessings (promise case)', function(t) {
   vanadium.init(config, function(err, runtime) {
diff --git a/test/integration/test-cancellation.js b/test/integration/test-cancellation.js
index a4f40f2..ec9b9c1 100644
--- a/test/integration/test-cancellation.js
+++ b/test/integration/test-cancellation.js
@@ -3,11 +3,12 @@
 // license that can be found in the LICENSE file.
 
 var test = require('prova');
+var vanadium = require('../../');
 var service = require('./get-service');
 var serve = require('./serve');
 var leafDispatcher = require('../../src/rpc/leaf-dispatcher');
 var NO_TIMEOUT = require('../../src/rpc/constants').NO_TIMEOUT;
-var CanceledError = require('../../src/gen-vdl/v.io/v23/verror').CanceledError;
+var CanceledError = vanadium.verror.CanceledError;
 
 var errorId = new CanceledError(null).id;
 
diff --git a/test/integration/test-caveat-validation.js b/test/integration/test-caveat-validation.js
index ba379a7..72feb3d 100644
--- a/test/integration/test-caveat-validation.js
+++ b/test/integration/test-caveat-validation.js
@@ -3,11 +3,11 @@
 // license that can be found in the LICENSE file.
 
 var test = require('prova');
+var vanadium = require('../../');
 var serve = require('./serve');
-var vdl = require('../../src/vdl');
 var leafDispatcher = require('../../src/rpc/leaf-dispatcher');
-
 var testService = require('../vdl-out/v.io/x/js.core/test_service');
+var vdl = vanadium.vdl;
 
 // Service to be invoked
 function aServiceDef() {
diff --git a/test/integration/test-client-call-opts.js b/test/integration/test-client-call-opts.js
index 41c7467..3f83f05 100644
--- a/test/integration/test-client-call-opts.js
+++ b/test/integration/test-client-call-opts.js
@@ -3,9 +3,8 @@
 // license that can be found in the LICENSE file.
 
 var test = require('prova');
-
-var config = require('./default-config');
 var vanadium = require('../../');
+var config = require('./default-config');
 var verror = vanadium.verror;
 
 function end(t, rt, err) {
diff --git a/test/integration/test-js-client-server.js b/test/integration/test-js-client-server.js
index 3a14b2c..e7f175a 100644
--- a/test/integration/test-js-client-server.js
+++ b/test/integration/test-js-client-server.js
@@ -3,10 +3,11 @@
 // license that can be found in the LICENSE file.
 
 var test = require('prova');
+var vanadium = require('../../');
 var serve = require('./serve');
 var leafDispatcher = require('../../src/rpc/leaf-dispatcher');
 var Deferred = require('../../src/lib/deferred');
-var vdl = require('../../src/vdl');
+
 var builtins = require('../../src/vdl/builtins');
 var stringify = require('../../src/vdl/stringify');
 var TypeUtil = require('../../src/vdl/type-util');
@@ -15,6 +16,8 @@
 var typedStreamingServiceVdl =
   require('../vdl-out/javascript-test/services/typed-streaming-service');
 
+var vdl = vanadium.vdl;
+
 // TODO(bprosnitz) Combine CacheService and CacheServicePromises so there
 // isn't as much duplicated code.
 
diff --git a/test/integration/test-namespace.js b/test/integration/test-namespace.js
index e7d6f73..a2cbccb 100644
--- a/test/integration/test-namespace.js
+++ b/test/integration/test-namespace.js
@@ -5,18 +5,18 @@
 var test = require('prova');
 var Promise = require('../../src/lib/promise');
 
-var access = require('../../src/gen-vdl/v.io/v23/security/access');
-var reserved = require('../../src/gen-vdl/v.io/v23/rpc/reserved');
 var config = require('./default-config');
-var MINUTE = 60 * 1000; // a minute
 var Promise = require('../../src/lib/promise');
 var random = require('../../src/lib/random');
 var timeouts = require('./timeouts');
 var vanadium = require('../../');
 var verror = vanadium.verror;
+var access = vanadium.security.access;
+var reserved = vanadium.rpc.reserved;
 
 var namespaceRoot = process.env.V23_NAMESPACE;
 var PREFIX = 'namespace-testing/';
+var MINUTE = 60 * 1000; // a minute
 
 test('Test globbing children - glob(' + PREFIX + '*)', function(assert) {
   var runtime;
diff --git a/test/integration/test-sending-blessings.js b/test/integration/test-sending-blessings.js
index 9388767..6a62c88 100644
--- a/test/integration/test-sending-blessings.js
+++ b/test/integration/test-sending-blessings.js
@@ -3,24 +3,22 @@
 // license that can be found in the LICENSE file.
 
 var test = require('prova');
+var vanadium = require('../../');
 var serve = require('./serve');
 var leafDispatcher = require('../../src/rpc/leaf-dispatcher');
-var runtimeFromContext = require('../../src/runtime/runtime-from-context');
-var types = require('../../src/vdl/types');
-var WireBlessings =
-  require('../../src/gen-vdl/v.io/v23/security').WireBlessings;
-var caveats = require('../../src/security/caveats');
+var WireBlessings = vanadium.security.WireBlessings;
 var Blessings = require('../../src/security/blessings');
-
+var security = vanadium.security;
+var types = vanadium.vdl.types;
 
 var blessingsService = {
   createBlessings: function(ctx, serverCall, publicKey) {
-    var principal = runtimeFromContext(ctx).principal;
+    var principal = vanadium.runtimeForContext(ctx).principal;
     var expiryDate = new Date((new Date()).getTime() + 6000000);
 
     return principal.blessingStore.getDefault(ctx).then(function(defaultBless) {
       return principal.bless(ctx, publicKey, defaultBless, 'friend',
-                           caveats.createExpiryCaveat(expiryDate));
+                           security.createExpiryCaveat(expiryDate));
     });
   },
   verifyBlessings: function(ctx, serverCall) {
diff --git a/test/integration/test-server-glob.js b/test/integration/test-server-glob.js
index c7273a1..cca52c5 100644
--- a/test/integration/test-server-glob.js
+++ b/test/integration/test-server-glob.js
@@ -5,10 +5,9 @@
 var test = require('prova');
 var serve = require('./serve');
 var Promise = require('../../src/lib/promise');
-var naming = require('../../src/gen-vdl/v.io/v23/naming');
-var namespaceUtil = require('../../src/naming/util');
-var verror = require('../../src/gen-vdl/v.io/v23/verror');
-
+var vanadium = require('../../');
+var naming = vanadium.naming;
+var verror = vanadium.verror;
 
 var ALBUMS = [
   'public',
@@ -250,7 +249,7 @@
 
 FullGlobber.prototype.__glob = function(ctx, serverCall, glob, $stream) {
     var mountEntry = new naming.MountEntry({
-      name: namespaceUtil.join(serverCall.securityCall.suffix, glob),
+      name: naming.join(serverCall.securityCall.suffix, glob),
     });
     $stream.write(new naming.GlobReply({
       entry: mountEntry
diff --git a/test/integration/test-service-errors.js b/test/integration/test-service-errors.js
index 061a78f..1e6f31e 100644
--- a/test/integration/test-service-errors.js
+++ b/test/integration/test-service-errors.js
@@ -3,9 +3,10 @@
 // license that can be found in the LICENSE file.
 
 var test = require('prova');
+var vanadium = require('../../');
 var service = require('./get-service');
-var verror = require('../../src/gen-vdl/v.io/v23/verror');
-var VanadiumError = require('../../src/verror/vanadium-error');
+var verror = vanadium.verror;
+var VanadiumError = verror.VanadiumError;
 
 test('Test Go service returning Aborted error - ' +
   'errorThrower.method(callback)', function(assert) {
diff --git a/test/integration/test-service-native.js b/test/integration/test-service-native.js
index 4a7b9a9..242ee53 100644
--- a/test/integration/test-service-native.js
+++ b/test/integration/test-service-native.js
@@ -3,9 +3,10 @@
 // license that can be found in the LICENSE file.
 
 var test = require('prova');
+var vanadium = require('../../');
 var service = require('./get-service');
-var makeError = require('../../src/verror/make-errors');
-var actions = require('../../src/verror/actions');
+var makeError = vanadium.verror.makeError;
+var actions = vanadium.verror.actions;
 
 var E = makeError('randomPrefix.verror', actions.NO_RETRY,
                   '{1} {2}: RandomError: {_}');
diff --git a/test/integration/test-vtrace.js b/test/integration/test-vtrace.js
index ce9bafd..6da7720 100644
--- a/test/integration/test-vtrace.js
+++ b/test/integration/test-vtrace.js
@@ -4,9 +4,10 @@
 
 var test = require('prova');
 var service = require('./get-service');
-var vtrace = require('../../src/vtrace');
+var vanadium = require('../../');
 var serve = require('./serve');
 var leafDispatcher = require('../../src/rpc/leaf-dispatcher');
+var vtrace = vanadium.vtrace;
 
 function findSpan(name, trace) {
   for (var i = 0; i < trace.spans.length; i++) {
