dataLoader: rewrote abstract part. Needs testing