Modal components

Rebase of a previous PR. Tests do not pass yet, requires Shapeshifter.