Respect presence and absence of modifiers (large refactoring).

Fixes:
  * https://github.com/marquete/kibo/issues/3
  * https://github.com/marquete/kibo/issues/9