I apply best practices in designing this gem and each feature has had a LOT of thought put into it. Just look at how the Deck works. It's designed with an immutable set of cards to draw from and to return cards to. You can even seed it to write robust tests and get the same results time after time. Card evaluation is written in a functional way that allows, and is optimized for, lazy evaluation. The set verification is as simple as handing it some cards and the names of the rules to apply. The scope of this project aims to be a game agnostic card management and evaluation system. Game logic itself will not be provided with this library. The creation, grouping, comparison, and evaluation of cards is the sole purpose of this gem.