fixed reentrant