Work in progress on refactoring tunnels to support multiple types.