refactor dataset into separate service