Mappings

Picking up where #1374 (inadvertently) left off. Very WIP, definitely not ready for merge.
Custom mappings can be supplied with options? If so, :+1: