this kinda sucks. maybe we should have a separate card model