      plv8.execute(sqlCmt.format(['$auth','can_delete','Can delete the object']));
      plv8.execute(sqlCmt.format(['$auth','can_execute','Can execute against the object']));
    };
+
+   /* Create the feather table */
+   if (!plv8.execute(sqlChk,['$feather']).length) {
+     sql = "CREATE TABLE \"$feather\" (" +
+       "CONSTRAINT feather_pkey PRIMARY KEY (_pk), " +
+       "CONSTRAINT feather_id_key UNIQUE (id)) INHERITS (object)";
+     plv8.execute(sql);
+     plv8.execute("comment on table \"$feather\" is 'Internal table for storing class names'");
+   }
 
    /* Create the settings table */
    if (!plv8.execute(sqlChk,['$settings']).length) {

       "can_read boolean default false," +
       "can_update boolean default false," +
       "can_delete boolean default false," +
       "can_execute boolean default false)";
     plv8.execute(sql);
     plv8.execute("COMMENT ON TABLE \"$auth\" IS 'Table for storing object level authorization information'");
     plv8.execute(sqlCmt.format(['$auth','pk','Primary key']));

     }
   ]);

   global = featherbone.request({
     name: "Folder",
     action: "GET",
