@Override
 public <RatingType extends Rating> GroupModelPseudoUser buildGroupModel(
     DatasetLoader<RatingType> datasetLoader,
     SingleRecommendationModel RecommendationModel,
     GroupOfUsers groupOfUsers)
     throws UserNotFound, CannotLoadRatingsDataset, CannotLoadContentDataset,
         NotEnoughtUserInformation {
   return aggregationOfIndividualRatings
       .buildGroupModel(datasetLoader, RecommendationModel, groupOfUsers)
       .getGroupModel();
 }
 @Override
 public <RatingType extends Rating> GroupRecommendations recommendOnly(
     DatasetLoader<RatingType> datasetLoader,
     SingleRecommendationModel recommendationModel,
     GroupModelPseudoUser groupModel,
     GroupOfUsers groupOfUsers,
     Set<Item> candidateItems)
     throws UserNotFound, ItemNotFound, CannotLoadRatingsDataset, CannotLoadContentDataset,
         NotEnoughtUserInformation {
   return aggregationOfIndividualRatings.recommendOnly(
       datasetLoader,
       recommendationModel,
       new GroupModelWithExplanation<>(groupModel, "No Explanation Provided"),
       groupOfUsers,
       candidateItems);
 }
 @Override
 public SingleRecommendationModel buildRecommendationModel(
     DatasetLoader<? extends Rating> datasetLoader)
     throws CannotLoadRatingsDataset, CannotLoadContentDataset {
   return aggregationOfIndividualRatings.buildRecommendationModel(datasetLoader);
 }