refactor for pluggable data loaders, improved testing setup, more consistent data model