/// <summary>
        /// Update card
        /// </summary>
        /// <param name="card">Card</param>
        /// <returns>Card</returns>
        public Card update(Card card)
        {
            card.setRequiredFields(new List <string> {
                CustomerVaultConstants.profileId,
                CustomerVaultConstants.id
            });
            card.checkRequiredFields();
            card.setRequiredFields(new List <string> {
            });
            card.setOptionalFields(new List <string> {
                CustomerVaultConstants.cardExpiry,
                CustomerVaultConstants.nickName,
                CustomerVaultConstants.merchantRefNum,
                CustomerVaultConstants.holderName,
                CustomerVaultConstants.billingAddressId
            });

            Request request = new Request(
                method: RequestType.PUT,
                uri: this.prepareURI("/profiles/" + card.profileId() + "/cards/" + card.id()),
                body: card
                );

            dynamic response = this.client.processRequest(request);

            Card returnVal = new Card(response);

            returnVal.profileId(card.profileId());
            return(returnVal);
        }
        /// <summary>
        /// Delete card
        /// </summary>
        /// <param name="card">Card</param>
        /// <returns>bool</returns>
        public bool delete(Card card)
        {
            card.setRequiredFields(new List <string> {
                CustomerVaultConstants.profileId,
                CustomerVaultConstants.id
            });
            card.checkRequiredFields();

            Request request = new Request(
                method: RequestType.DELETE,
                uri: this.prepareURI("/profiles/" + card.profileId() + "/cards/" + card.id()),
                body: card
                );

            this.client.processRequest(request);

            return(true);
        }
        /// <summary>
        /// Get card
        /// </summary>
        /// <param name="card">Card</param>
        /// <returns>Card</returns>
        public Card get(Card card)
        {
            card.setRequiredFields(new List <string> {
                CustomerVaultConstants.profileId,
                CustomerVaultConstants.id
            });
            card.checkRequiredFields();

            Request request = new Request(
                method: RequestType.GET,
                uri: this.prepareURI("/profiles/" + card.profileId() + "/cards/" + card.id())
                );

            dynamic response = this.client.processRequest(request);

            Card returnVal = new Card(response);

            returnVal.profileId(card.profileId());
            return(returnVal);
        }