diff --git a/src/security/access/accesslist-extensions.js b/src/security/access/accesslist-extensions.js
new file mode 100644
index 0000000..d1ff744
--- /dev/null
+++ b/src/security/access/accesslist-extensions.js
@@ -0,0 +1,38 @@
+// Copyright 2015 The Vanadium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+/*
+ * Extends the vdl generated AccessList by adding additional methods.
+ * @fileoverview
+ */
+
+var blessingMatches = require('./blessing-matching');
+var AccessList = require('../../gen-vdl/v.io/v23/security/access').AccessList;
+
+/**
+ * Returns true iff the AccessList grants access to a principal that
+ * presents blessings.
+ * (i.e., if at least one of the blessings matches the AccessList).
+ * @param {string[]} blessings Presented blessing names.
+ * @return {boolean}
+ * @name includes
+ * @method
+ * @memberof module:vanadium.security.access.AccessList.prototype
+ */
+ AccessList.prototype.includes = function(blessings) {
+  var accessList = this;
+
+  // Remove the blessing that are blacklisted.
+  var unblacklistedNames = blessings.filter(function(blessing) {
+    return accessList.notIn.every(function(pattern) {
+      return !blessingMatches(blessing, pattern);
+    });
+  });
+  // Check the remaining blessing for a match in the white list.
+  return unblacklistedNames.some(function(blessing) {
+    return accessList.in.some(function(pattern) {
+      return blessingMatches(blessing, pattern);
+    });
+  });
+ };
\ No newline at end of file
diff --git a/src/security/access/index.js b/src/security/access/index.js
index 6964eb8..d5fafda 100644
--- a/src/security/access/index.js
+++ b/src/security/access/index.js
@@ -2,6 +2,9 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+// Require the extensions files.
+require('./accesslist-extensions');
+
 var extend = require('xtend');
 /* jshint ignore:start */
 /**
diff --git a/src/security/access/permissions-authorizer.js b/src/security/access/permissions-authorizer.js
index 6c4e1c4..c2a03ad 100644
--- a/src/security/access/permissions-authorizer.js
+++ b/src/security/access/permissions-authorizer.js
@@ -5,7 +5,6 @@
  * @fileoverview The Permissions authorizer
  * @private
  */
-var blessingMatches = require('./blessing-matching');
 var unwrap = require('../../vdl/type-util').unwrap;
 var makeError = require('../../verror/make-errors');
 var actions = require('../../verror/actions');
@@ -66,27 +65,9 @@
 
     var key = unwrap(tags[0]);
     var lists = permissions.get(key);
-    if (!lists || !canAccess(call.remoteBlessingStrings, lists.in,
-                                lists.notIn)) {
+    if (!lists || !lists.includes(call.remoteBlessingStrings)) {
       throw new NoPermissionsError(ctx, call.remoteBlessingStrings, [], key);
     }
     return;
   };
-}
-
-// Returns whether name passed in has permission for the passed in
-// label.
-function canAccess(names, inSet, notInSet) {
-  // Remove the names that are blacklisted.
-  var unblacklistedNames = names.filter(function(name) {
-    return notInSet.every(function(pattern) {
-      return !blessingMatches(name, pattern);
-    });
-  });
-  // Check the remaining names for a match in the white list.
-  return unblacklistedNames.some(function(name) {
-    return inSet.some(function(pattern) {
-      return blessingMatches(name, pattern);
-    });
-  });
-}
+}
\ No newline at end of file
