Add choice functions.

- Simplify models.  Remove inheritance hierarchy in models in favor
  of duck typing.
- Refactor sorting.
- Add choice features.