tests for basic functionality and addition of nonblocking functionality + test