Heavily abstracted. Still need to abstract the Card.Value class, but things are a lot neater.

Should be a lot faster too, significant performance increases.
- Need to write unit tests.