refactor card markup into a partial, and use card object as context provider rather than cloning data