reentrant, not re-entrant