Implement non-blocking mechanisms

fixes #26