What were the biggest architectural changes in the rewrite, and what tradeoffs did you make compared to the old Video.js design?