Adds support for selects. Refactors: DRYs the Rules.