Big ol refactor: make sources into first-class objects.