decoupled data_loader mixin from models