added call_from_thread