added call
send_and_recv tests now pass arguments to protocols
refactored to use the new send_and_recv interface
added call_from_thread test