public static async Task<Card> GetCardByNameAsync(this MtgDb.Info.Driver.Db database, string name, SingletonRules singletonRule = SingletonRules.First)
    {
      using (var client = new HttpClient())
      {
        var url = String.Format("{0}/cards/{1}", database.ApiUrl, name);
        var json = await client.GetStringAsync(url);
        var cards = JsonConvert.DeserializeObject<List<Card>>(json);

        return cards.GetCardFromCollection(singletonRule);
      }
    }
    public static Card GetCardFromCollection(this IEnumerable<Card> cards, SingletonRules singletonRule)
    {
      switch(singletonRule)
      {
        case SingletonRules.Latest:
          return cards.LastOrDefault();

        case SingletonRules.First:
        default:
          return cards.FirstOrDefault();
      }
    }