-Updated API to allow more complex states
-Small code refactoring
-Refactored code to include more meaningful variable names
-Removed unnecessary assert
-Formated code to match java style conventions
-Added a combinations generator, as well as an example showing this.