Make somewhat re-entrant