add card implementation