Bitcoin will struggle as long as their development team struggles with fixing the 3-4 transactions per second limit. $20 fees to process a transaction in 20 minutes? Good luck.
All we need is to standardize this behavior, such that each exchange doesn’t have its own closed system (essentially an SQL database with balances). Rather, we’d using an open clearing protocol, with multiple issuers in the same way we use email with multiple email providers. Each issuer/email provider is centralized, but the system as a whole is decentralized (similar to Git as well).
The simplest example of such a protocol is Stroem[1], which offers trustless micro-payments for consumers/payers, such that only merchants/payees take risks (which are proportional to how often they redeem their BTC on the blockchain). So, merchants get to choose their risk appetite: the longer they wait with redeeming, the lower the per-transaction fee, and the more often they redeem the more the security resembles on-chain transactions, with proportionally higher fees.