code: def filter(self, **kwargs):
  		
  		if not self.initialized:
  			self.initialize()
  
  		cards = self.values()
  
  		if "type" not in kwargs:
  			kwargs["type"] = [CardType.SPELL, CardType.WEAPON, CardType.MINION]
  
  		for attr, value in kwargs.items():
  			if value is not None:
  				# What? this doesn't work?
  				# cards = __builtins__["filter"](lambda c: getattr(c, attr) == value, cards)
  				cards = [
  					card for card in cards if (isinstance(value, list) and getattr(card, attr) in value) or
  					getattr(card, attr) == value
  				]
  
  		return [card.id for card in cards]
docs: Returns a list of card IDs matching the given filters. Each filter, if not
  		None, is matched against the registered card database.
  		cards.
  		Examples arguments:
  		\a collectible: Whether the card is collectible or not.
  		\a type: The type of the card (hearthstone.enums.CardType)
  		\a race: The race (tribe) of the card (hearthstone.enums.Race)
  		\a rarity: The rarity of the card (hearthstone.enums.Rarity)
  		\a cost: The mana cost of the card