public WorkoutPageData fetchWorkoutPageData(
     final User currentUser,
     final Long workoutId,
     final int similarPage,
     final int workoutStartIndex,
     final int messagesStartIndex,
     final int privateMessagesPageIndex)
     throws WorkoutNotFoundException {
   final Workout workout = workoutStore.fetchWorkout(workoutId);
   final PaginatedCollection<PrivateMessage> emptyPage = emptyPage();
   final PaginatedCollection<PrivateMessage> privateConversation =
       currentUser == null
           ? emptyPage
           : fetchPrivateConversation(
               currentUser, workout.getUser().getId(), privateMessagesPageIndex);
   return new WorkoutPageData(
       workout,
       fetchPublicMessages(Topic.Kind.WORKOUT, workoutId, 5, messagesStartIndex),
       getSimilarWorkouts(workout, similarPage),
       workoutStore.getWorkouts(workout.getUser(), EMPTY_STRING_LIST, workoutStartIndex, 10),
       privateConversation);
 }