using own (save) EnterCritical and ExitCritical implementation