use a more advanced non-blocking example