added setTimeout fallback