Split card logic into separate classes