Re-implement transport fallback using functions