productcard refactor