Immutables, invariants, and upgradability

really? Wow!
I have heavily used re-entrance locks protecting functions in case of even smallest possibility for re-entrance. Tried to avoid any assumptions about external code execution.

What is your suggestion or pattern?