Add DataLoader implementation and tests