set up guard
add hook class
handle asymmetric translation maps
update `deploy_receiver` to use `Hook` class