You have nicely read to rank count into the variable `rankCount`, but later, you are writing `index % 13`. It is not immediately clear where this number comes from. Use the variable there too. Since these numbers never change and are well known for a 52-card deck, you could also simply define them as constants. ``` c# const int RankCount = 13; const int SuitCount = 4; const int DeckCount = RankCount * SuitCount; ``` --- I usually do not use `var` for built in types. You do not save a lot of typing by writing `int` or `string` instead of `var` and it is easier to read. --- The two integer operators `%` and `/` are complementary and play well together. ``` c# var rank = (Ranks)(index % RankCount); var suit = (Suits)(index / RankCount); ``` Note that the integer division truncates the result. This makes the `rankIteration` variable superfluous. Alternatively, you could also use two nested loops, looping over suits and ranks. --- The canonical way of looping a number range is ``` c# for (int index = 0; index < DeckCount; index++) { ... } ``` It unifies and standardizes the declaration and initialization of the loop variable, the loop condition and incrementing the loop variable. Also, it scopes the loop variable locally to the loop.