including adding random initial state generation.
since I had a decent amount of practice at http://globalday.coderetreat.org/