exploring ways to handle different card sets and some functional programming