before non-blocking