add offline fallback