add `tunnel` function