Refactored bundle and contract conditions
Reworked contexts for ease of use and clarity
Split out contract contexts to ensure that the overall contract/context can only be elevated and never lowered