If a user wishes to perform a governance action, they can write a powerInvoker that attempts to act according to a registered power. They then pass the invoker to Angband. Angband requests the power being invoked from the invoker and checks if msg.sender is mapped to a minion which can execute the power. If so, Angband transfers ownership of the domain contract to the invoker and calls invoke(). After execution, Angband verifies that the invoker returned ownership of the domain contract to Angband. If not, all execution is reverted