A couple of SO answers.  Do you like the Card abstraction?