Added DealCards() and unit test, some refactoring