code: function(transaction, bucket, keys){
  		contract(arguments)
  			.params('array', 'string', 'string|array')
  			.end()
  		;
  		
  		var self = this;
  		var table = '';
  		keys = Array.isArray(keys) ? keys : [keys]; // we always want to have an array for keys
  		
  		transaction.push(function(cb){
  			
  			if (bucket.indexOf('allows') != -1) {
  				table = self.prefix + self.buckets.permissions;
  				self.db
  					.select('key', 'value')
  					.from(table)
  					.where({'key': bucket})
  					.then(function(result) {
  						
  						if (result.length === 0) {
  							
  						} else {
  							_.each(keys, function(value) {
  								result[0].value = _.omit(result[0].value, value);
  							});
  							
  							if (_.isEmpty(result[0].value)) {
  								// if no more roles stored for a resource the remove the resource
  								return self.db(table)
  									.where('key', bucket)
  									.del()
  								;
  							} else {
  								return self.db(table)
  									.where('key', bucket)
  									.update({value: result[0].value})
  								;
  							}
  						}
  					})
  					.then(function() {
  						cb(undefined);
  					})
  				;
  			} else {
  				table = self.prefix + bucket;
  				self.db(table)
  					.whereIn('key', keys)
  					.del()
  					.then(function() {
  						cb(undefined);
  					})
  				;
  			}
  		});
  	}
docs: Delete the given key(s) at the bucket