[WIP] Better Data Sources

This is work to put data sources onto a more stable and robust footing.

Fixes #247 and a number of other issues.