Mappings

Picking up where #1374 (inadvertently) left off. Very WIP, definitely not ready for merge.
actually no, that wasn't intentional. was just a convenient way to pass initial mappings through to the viewmodel constructor. should be treated the same as `_parent` - will remove