with API-driven data fetching