Instead of a single controller action serving many formats via respond_to, create top-level controller namespaces for each wave of usage: Web, API, RSS, PDF. Each wave has different data needs, generation tools, and consumers, and deserves its own set of controllers. Many teams already do this for API (separate folder because API structure differs from the main app); extend the pattern to feeds, reports, etc.