proper re-entrant invocation