Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/controller/NonAdminUserController.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/controller/NonAdminUserController.java	(revision 6de2873a46d63a69e2d1d579335ac1f20e9ee5bf)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/controller/NonAdminUserController.java	(revision 98992cf92cf1399ea586c26d6dd45842df661773)
@@ -1,5 +1,5 @@
 package com.ukim.finki.develop.finkwave.controller;
 
-import com.ukim.finki.develop.finkwave.model.dto.NonAdminUserDTO;
+import com.ukim.finki.develop.finkwave.model.dto.NonAdminUserDto;
 import com.ukim.finki.develop.finkwave.service.FollowService;
 import com.ukim.finki.develop.finkwave.service.NonAdminUserService;
@@ -21,20 +21,20 @@
 
     @GetMapping("/all")
-    public HttpEntity<List<NonAdminUserDTO>>getAllNonAdminUsers(){
+    public HttpEntity<List<NonAdminUserDto>>getAllNonAdminUsers(){
         return ResponseEntity.ok(nonAdminUserService.getAllUsers());
     }
 
     @GetMapping("/{id}")
-    public HttpEntity<NonAdminUserDTO>getById(@PathVariable Long id){
+    public HttpEntity<NonAdminUserDto>getById(@PathVariable Long id){
         return ResponseEntity.ok(nonAdminUserService.getById(id));
     }
 
     @GetMapping("/search")
-    public HttpEntity<List<NonAdminUserDTO>>searchUsers(@RequestParam String name){
+    public HttpEntity<List<NonAdminUserDto>>searchUsers(@RequestParam String name){
         return ResponseEntity.ok(nonAdminUserService.searchUsers(name));
     }
 
     @PostMapping("/follow/{id}")
-    public HttpEntity<NonAdminUserDTO>followUser(@PathVariable Long id){
+    public HttpEntity<NonAdminUserDto>followUser(@PathVariable Long id){
         followService.toggleFollow(id);
 
Index: nkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/ArtistContributionDTO.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/ArtistContributionDTO.java	(revision 6de2873a46d63a69e2d1d579335ac1f20e9ee5bf)
+++ 	(revision )
@@ -1,16 +1,0 @@
-package com.ukim.finki.develop.finkwave.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-@AllArgsConstructor
-public class ArtistContributionDTO {
-    private Long musicalEntityId;
-    private String title;
-    private String genre;
-    private String role;
-    private String entityType;
-}
Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/ArtistContributionDto.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/ArtistContributionDto.java	(revision 98992cf92cf1399ea586c26d6dd45842df661773)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/ArtistContributionDto.java	(revision 98992cf92cf1399ea586c26d6dd45842df661773)
@@ -0,0 +1,16 @@
+package com.ukim.finki.develop.finkwave.model.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+@AllArgsConstructor
+public class ArtistContributionDto {
+    private Long musicalEntityId;
+    private String title;
+    private String genre;
+    private String role;
+    private String entityType;
+}
Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/ArtistDto.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/ArtistDto.java	(revision 98992cf92cf1399ea586c26d6dd45842df661773)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/ArtistDto.java	(revision 98992cf92cf1399ea586c26d6dd45842df661773)
@@ -0,0 +1,15 @@
+package com.ukim.finki.develop.finkwave.model.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+@Getter
+@Setter
+public class ArtistDto extends NonAdminUserDto {
+
+
+    private List<ArtistContributionDto> contributions;
+
+}
Index: nkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/ArtistMusicalEntitiesDTO.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/ArtistMusicalEntitiesDTO.java	(revision 6de2873a46d63a69e2d1d579335ac1f20e9ee5bf)
+++ 	(revision )
@@ -1,18 +1,0 @@
-package com.ukim.finki.develop.finkwave.model.dto;
-
-import com.ukim.finki.develop.finkwave.model.Album;
-import com.ukim.finki.develop.finkwave.model.Song;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-
-import java.util.List;
-
-@Getter
-@Setter
-@AllArgsConstructor
-@NoArgsConstructor
-public class ArtistMusicalEntitiesDTO {
-    private List<ArtistContributionDTO> contributions;
-}
Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/ArtistMusicalEntitiesDto.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/ArtistMusicalEntitiesDto.java	(revision 98992cf92cf1399ea586c26d6dd45842df661773)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/ArtistMusicalEntitiesDto.java	(revision 98992cf92cf1399ea586c26d6dd45842df661773)
@@ -0,0 +1,16 @@
+package com.ukim.finki.develop.finkwave.model.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+import java.util.List;
+
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+public class ArtistMusicalEntitiesDto {
+    private List<ArtistContributionDto> contributions;
+}
Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/ListenerDto.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/ListenerDto.java	(revision 98992cf92cf1399ea586c26d6dd45842df661773)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/ListenerDto.java	(revision 98992cf92cf1399ea586c26d6dd45842df661773)
@@ -0,0 +1,13 @@
+package com.ukim.finki.develop.finkwave.model.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+@Getter
+@Setter
+public class ListenerDto extends NonAdminUserDto {
+    private List<MusicalEntityDto> likedEntities;
+    private List<PlaylistDto> createdPlaylists;
+}
Index: nkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/ListenerLikesDTO.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/ListenerLikesDTO.java	(revision 6de2873a46d63a69e2d1d579335ac1f20e9ee5bf)
+++ 	(revision )
@@ -1,16 +1,0 @@
-package com.ukim.finki.develop.finkwave.model.dto;
-import java.util.*;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-
-@Setter
-@Getter
-@AllArgsConstructor
-@NoArgsConstructor
-public class ListenerLikesDTO {
-    private List<MusicalEntityDTO> likedEntities;
-    
-
-}
Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/ListenerLikesDto.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/ListenerLikesDto.java	(revision 98992cf92cf1399ea586c26d6dd45842df661773)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/ListenerLikesDto.java	(revision 98992cf92cf1399ea586c26d6dd45842df661773)
@@ -0,0 +1,16 @@
+package com.ukim.finki.develop.finkwave.model.dto;
+import java.util.*;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Setter
+@Getter
+@AllArgsConstructor
+@NoArgsConstructor
+public class ListenerLikesDto {
+    private List<MusicalEntityDto> likedEntities;
+    
+
+}
Index: nkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/MusicalEntityDTO.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/MusicalEntityDTO.java	(revision 6de2873a46d63a69e2d1d579335ac1f20e9ee5bf)
+++ 	(revision )
@@ -1,15 +1,0 @@
-package com.ukim.finki.develop.finkwave.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-import lombok.Setter;
-
-@AllArgsConstructor
-@Getter
-@Setter
-public class MusicalEntityDTO {
-    private Long id;
-    private String title;
-    private String genre;
-    private String type;
-}
Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/MusicalEntityDto.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/MusicalEntityDto.java	(revision 98992cf92cf1399ea586c26d6dd45842df661773)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/MusicalEntityDto.java	(revision 98992cf92cf1399ea586c26d6dd45842df661773)
@@ -0,0 +1,15 @@
+package com.ukim.finki.develop.finkwave.model.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+
+@AllArgsConstructor
+@Getter
+@Setter
+public class MusicalEntityDto {
+    private Long id;
+    private String title;
+    private String genre;
+    private String type;
+}
Index: nkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/NonAdminUserDTO.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/NonAdminUserDTO.java	(revision 6de2873a46d63a69e2d1d579335ac1f20e9ee5bf)
+++ 	(revision )
@@ -1,28 +1,0 @@
-package com.ukim.finki.develop.finkwave.model.dto;
-
-import com.ukim.finki.develop.finkwave.model.Playlist;
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.List;
-
-
-@Getter
-@Setter
-
-public class NonAdminUserDTO {
-    private Long id;
-    private String username;
-    private String fullName;
-    private String userType;
-    private Long followers;
-    private Long following;
-    private Boolean isFollowedByCurrentUser;
-
-
-    
-    private ArtistMusicalEntitiesDTO musicalEntities;
-    
-    private ListenerLikesDTO likes;
-    private List<PlaylistDTO>createdPlaylists;
-}
Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/NonAdminUserDto.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/NonAdminUserDto.java	(revision 98992cf92cf1399ea586c26d6dd45842df661773)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/NonAdminUserDto.java	(revision 98992cf92cf1399ea586c26d6dd45842df661773)
@@ -0,0 +1,20 @@
+package com.ukim.finki.develop.finkwave.model.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+
+@Getter
+@Setter
+
+public  class NonAdminUserDto {
+    private Long id;
+    private String username;
+    private String fullName;
+    private String userType;
+    private Long followers;
+    private Long following;
+    private Boolean isFollowedByCurrentUser;
+
+
+}
Index: nkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/PlaylistDTO.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/PlaylistDTO.java	(revision 6de2873a46d63a69e2d1d579335ac1f20e9ee5bf)
+++ 	(revision )
@@ -1,16 +1,0 @@
-package com.ukim.finki.develop.finkwave.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-import lombok.Setter;
-
-@AllArgsConstructor
-@Getter
-@Setter
-public class PlaylistDTO {
-    private Long id;
-    private String name;
-    private String cover;
-    private String creatorName;
-
-}
Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/PlaylistDto.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/PlaylistDto.java	(revision 98992cf92cf1399ea586c26d6dd45842df661773)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/PlaylistDto.java	(revision 98992cf92cf1399ea586c26d6dd45842df661773)
@@ -0,0 +1,16 @@
+package com.ukim.finki.develop.finkwave.model.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+
+@AllArgsConstructor
+@Getter
+@Setter
+public class PlaylistDto {
+    private Long id;
+    private String name;
+    private String cover;
+    private String creatorName;
+
+}
Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/ArtistContributionRepository.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/ArtistContributionRepository.java	(revision 6de2873a46d63a69e2d1d579335ac1f20e9ee5bf)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/ArtistContributionRepository.java	(revision 98992cf92cf1399ea586c26d6dd45842df661773)
@@ -1,4 +1,5 @@
 package com.ukim.finki.develop.finkwave.repository;
 
+import com.ukim.finki.develop.finkwave.model.dto.ArtistContributionDto;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Query;
@@ -13,12 +14,15 @@
 public interface ArtistContributionRepository extends JpaRepository<ArtistContribution, ArtistContributionId> {
 
-    @Query("SELECT ac.musicalEntity.id,ac.musicalEntity.title,ac.musicalEntity.genre,ac.role, "+
+    @Query("SELECT NEW com.ukim.finki.develop.finkwave.model.dto.ArtistContributionDto( ac.musicalEntity.id," +
+            "ac.musicalEntity.title," +
+            "ac.musicalEntity.genre," +
+            "ac.role, "+
         "CASE WHEN s.id IS NOT NULL THEN 'SONG' "+
         "WHEN a.id IS NOT NULL THEN 'ALBUM' "+
-        "ELSE 'Unknown' END "+
+        "ELSE 'Unknown' END) "+
         "FROM ArtistContribution ac "+
         "LEFT JOIN Song s  ON s.musicalEntities.id=ac.musicalEntity.id "+
         "LEFT JOIN Album a ON a.musicalEntities.id=ac.musicalEntity.id "+
         "WHERE ac.artist.id=:artistId")
-    List<Object[]>findContributionsByArtistId(@Param("artistId")Long artistId);
+    List<ArtistContributionDto>findContributionsByArtistId(@Param("artistId")Long artistId);
 }
Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/LikeRepository.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/LikeRepository.java	(revision 6de2873a46d63a69e2d1d579335ac1f20e9ee5bf)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/LikeRepository.java	(revision 98992cf92cf1399ea586c26d6dd45842df661773)
@@ -1,4 +1,5 @@
 package com.ukim.finki.develop.finkwave.repository;
 
+import com.ukim.finki.develop.finkwave.model.dto.MusicalEntityDto;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Query;
@@ -13,12 +14,14 @@
 @Repository
 public interface LikeRepository extends JpaRepository<Like, LikeId> {
-    @Query("SELECT l.musicalEntity.id, l.musicalEntity.title,l.musicalEntity.genre, " +
+    @Query("SELECT NEW com.ukim.finki.develop.finkwave.model.dto.MusicalEntityDto(l.musicalEntity.id, " +
+            "l.musicalEntity.title," +
+            "l.musicalEntity.genre, " +
            "CASE WHEN s.id IS NOT NULL THEN 'SONG' " +
            "WHEN a.id IS NOT NULL THEN 'ALBUM' " +
-           "ELSE 'UNKNOWN' END " +
+           "ELSE 'UNKNOWN' END)" +
            "FROM Like l " +
            "LEFT JOIN Song s ON s.musicalEntities.id = l.musicalEntity.id " +
            "LEFT JOIN Album a ON a.musicalEntities.id = l.musicalEntity.id " +
            "WHERE l.listener.id = :listenerId")
-    List<Object[]> findLikedEntitiesWithTypeByListenerId(@Param("listenerId") Long listenerId);
+    List<MusicalEntityDto> findLikedEntitiesWithTypeByListenerId(@Param("listenerId") Long listenerId);
 }
Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/NonAdminUserRepository.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/NonAdminUserRepository.java	(revision 6de2873a46d63a69e2d1d579335ac1f20e9ee5bf)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/NonAdminUserRepository.java	(revision 98992cf92cf1399ea586c26d6dd45842df661773)
@@ -1,5 +1,4 @@
 package com.ukim.finki.develop.finkwave.repository;
 
-import com.ukim.finki.develop.finkwave.model.dto.NonAdminUserDTO;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Query;
Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/ArtistService.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/ArtistService.java	(revision 6de2873a46d63a69e2d1d579335ac1f20e9ee5bf)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/ArtistService.java	(revision 98992cf92cf1399ea586c26d6dd45842df661773)
@@ -1,5 +1,5 @@
 package com.ukim.finki.develop.finkwave.service;
 
-import com.ukim.finki.develop.finkwave.model.dto.ArtistContributionDTO;
+import com.ukim.finki.develop.finkwave.model.dto.ArtistContributionDto;
 import com.ukim.finki.develop.finkwave.repository.ArtistContributionRepository;
 
@@ -19,10 +19,6 @@
 
     @Transactional(readOnly=true)
-    public List<ArtistContributionDTO> getArtistContributions(Long artistId){
-        List<Object[]>results=artistContributionRepository.findContributionsByArtistId(artistId);
-
-        return results.stream()
-        .map(row->new ArtistContributionDTO((Long)row[0], (String)row[1], (String)row[2],(String)row[3], (String)row[4]))
-        .collect(Collectors.toList());
+    public List<ArtistContributionDto> getArtistContributions(Long artistId){
+        return artistContributionRepository.findContributionsByArtistId(artistId);
     }
 
Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/ListenerService.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/ListenerService.java	(revision 6de2873a46d63a69e2d1d579335ac1f20e9ee5bf)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/ListenerService.java	(revision 98992cf92cf1399ea586c26d6dd45842df661773)
@@ -2,7 +2,6 @@
 
 import com.ukim.finki.develop.finkwave.model.Playlist;
-import com.ukim.finki.develop.finkwave.model.dto.ListenerLikesDTO;
-import com.ukim.finki.develop.finkwave.model.dto.MusicalEntityDTO;
-import com.ukim.finki.develop.finkwave.model.dto.PlaylistDTO;
+import com.ukim.finki.develop.finkwave.model.dto.ListenerLikesDto;
+import com.ukim.finki.develop.finkwave.model.dto.MusicalEntityDto;
 import com.ukim.finki.develop.finkwave.repository.LikeRepository;
 import com.ukim.finki.develop.finkwave.repository.PlaylistRepository;
@@ -18,14 +17,8 @@
     private final PlaylistRepository playlistRepository;
     @Transactional(readOnly = true)
-    public ListenerLikesDTO getLikedEntities(Long listenerId) {
-        List<Object[]> results = likeRepository.findLikedEntitiesWithTypeByListenerId(listenerId);
+    public List<MusicalEntityDto> getLikedEntities(Long listenerId) {
+        return  likeRepository.findLikedEntitiesWithTypeByListenerId(listenerId);
 
-        List<MusicalEntityDTO>likedEntities=results.stream()
-        .map(row->new MusicalEntityDTO((Long)row[0], (String)row[1], (String)row[2],(String)row[3]))
-        .toList();
-        
-        ListenerLikesDTO dto=new ListenerLikesDTO();
-        dto.setLikedEntities(likedEntities);
-        return dto;
+
     }
 
Index: nkwave/src/main/java/com/ukim/finki/develop/finkwave/service/MusicalEntityService.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/MusicalEntityService.java	(revision 6de2873a46d63a69e2d1d579335ac1f20e9ee5bf)
+++ 	(revision )
@@ -1,49 +1,0 @@
-// package com.ukim.finki.develop.finkwave.service;
-
-// import com.ukim.finki.develop.finkwave.model.Album;
-// import com.ukim.finki.develop.finkwave.model.MusicalEntity;
-// import com.ukim.finki.develop.finkwave.model.Song;
-// import com.ukim.finki.develop.finkwave.model.dto.ArtistMusicalEntitiesDTO;
-// import com.ukim.finki.develop.finkwave.repository.AlbumRepository;
-// import com.ukim.finki.develop.finkwave.repository.MusicalEntityRepository;
-// import com.ukim.finki.develop.finkwave.repository.SongRepository;
-// import lombok.AllArgsConstructor;
-// import org.springframework.stereotype.Service;
-
-// import java.util.ArrayList;
-// import java.util.Collections;
-// import java.util.List;
-// import java.util.stream.Collectors;
-
-// @Service
-// @AllArgsConstructor
-// public class MusicalEntityService {
-
-//     private final MusicalEntityRepository musicalEntityRepository;
-//     private final SongRepository songRepository;
-//     private final AlbumRepository albumRepository;
-
-//     public ArtistMusicalEntitiesDTO getArtistMusicalEntities(Long artistId){
-//         List<Long>entitiesIDs=musicalEntityRepository.findAllByReleasedBy_Id(artistId).stream()
-//                 .map(MusicalEntity::getId)
-//                 .toList();
-
-//         if (entitiesIDs.isEmpty()) {
-//             return new ArtistMusicalEntitiesDTO(Collections.emptyList(), Collections.emptyList());
-//         }
-
-//         // bulk fetching
-//         List<Song> songs = songRepository.findAllByIdIn(entitiesIDs);
-
-//         List<Album> albums = albumRepository.findAllByIdIn(entitiesIDs);
-
-//         return new ArtistMusicalEntitiesDTO(songs, albums);
-//     }
-
-//     public String getEntityType(Long id) {
-//         if (songRepository.existsById(id)) return "Song";
-//         if (albumRepository.existsById(id)) return "Album";
-//         return "Unknown";
-//     }
-
-// }
Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/NonAdminUserService.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/NonAdminUserService.java	(revision 6de2873a46d63a69e2d1d579335ac1f20e9ee5bf)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/NonAdminUserService.java	(revision 98992cf92cf1399ea586c26d6dd45842df661773)
@@ -7,6 +7,4 @@
 import com.ukim.finki.develop.finkwave.service.mappers.NonAdminUserMapper;
 import lombok.AllArgsConstructor;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -27,5 +25,5 @@
 
     @Transactional(readOnly = true)
-    public List<NonAdminUserDTO> getAllUsers() {
+    public List<NonAdminUserDto> getAllUsers() {
         return nonAdminUserRepository.findAllWithUser().stream()
                 .map(user -> {
@@ -33,5 +31,5 @@
                     Long followers = followRepository.countByFolloweeId(user.getId());
                     Long following = followRepository.countByFollowerId(user.getId());
-                    return mapper.toDTO(user, type, followers, following);
+                    return mapper.toDto(user, type, followers, following);
                 })
                 .collect(Collectors.toList());
@@ -39,5 +37,5 @@
 
     @Transactional(readOnly = true)
-    public NonAdminUserDTO getById(Long id) {
+    public NonAdminUserDto getById(Long id) {
         Long followers=followRepository.countByFolloweeId(id);
         Long following=followRepository.countByFollowerId(id);
@@ -48,5 +46,5 @@
             isFollowedByCurrentUser = followRepository.isFollowing(currentUserId, id);
         }
-        NonAdminUserDTO dto;
+        NonAdminUserDto dto;
     
         if (artistRepository.existsById(id)) {
@@ -65,23 +63,22 @@
     }
 
-    private NonAdminUserDTO getArtistProfile(Long artistId, Long followers,Long following) {
+    private NonAdminUserDto getArtistProfile(Long artistId, Long followers, Long following) {
         Artist artist = artistRepository.findByIdWithUser(artistId)
             .orElseThrow(()->new UserNotFoundException("Artist not found with id: " + artistId));
 
 
-        ArtistMusicalEntitiesDTO entitiesDTO = new ArtistMusicalEntitiesDTO();
-        entitiesDTO.setContributions(artistService.getArtistContributions(artistId));
+        List<ArtistContributionDto>artistContributionDtos=artistService.getArtistContributions(artistId);
 
-        return mapper.toArtistDTO(artist, entitiesDTO,followers,following);
+        return mapper.toArtistDTO(artist, artistContributionDtos,followers,following);
     }
 
-    private NonAdminUserDTO getListenerProfile(Long listenerId, Long followers,Long following) {
+    private NonAdminUserDto getListenerProfile(Long listenerId, Long followers, Long following) {
         Listener listener = listenerRepository.findByIdWithUser(listenerId)
             .orElseThrow(()->new UserNotFoundException("Listener not found with id: " + listenerId));
 
 
-        ListenerLikesDTO likesDTO = listenerService.getLikedEntities(listenerId);
-        List<PlaylistDTO>playlists=listenerService.getPlaylistsCreatedByUser(listenerId).stream()
-                .map(p->new PlaylistDTO(
+        List<MusicalEntityDto>musicalEntityDtos=listenerService.getLikedEntities(listenerId);
+        List<PlaylistDto>playlists=listenerService.getPlaylistsCreatedByUser(listenerId).stream()
+                .map(p->new PlaylistDto(
                         p.getId(),
                         p.getName(),
@@ -90,9 +87,9 @@
                 )).toList();
 
-        return mapper.toListenerDTO(listener, likesDTO,followers,following,playlists);
+        return mapper.toListenerDTO(listener, musicalEntityDtos,followers,following,playlists);
     }
 
 
-    public List<NonAdminUserDTO>searchUsers(String name){
+    public List<NonAdminUserDto>searchUsers(String name){
 
         List<NonAdminUser>nonAdminUsers=nonAdminUserRepository.searchByName(name);
@@ -106,5 +103,5 @@
                     Long followers = followRepository.countByFolloweeId(user.getId());
                     Long following = followRepository.countByFollowerId(user.getId());
-                    return mapper.toDTO(user, type, followers, following);
+                    return mapper.toDto(user, type, followers, following);
                 })
                 .collect(Collectors.toList());
Index: finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/mappers/NonAdminUserMapper.java
===================================================================
--- finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/mappers/NonAdminUserMapper.java	(revision 6de2873a46d63a69e2d1d579335ac1f20e9ee5bf)
+++ finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/mappers/NonAdminUserMapper.java	(revision 98992cf92cf1399ea586c26d6dd45842df661773)
@@ -5,10 +5,6 @@
 import com.ukim.finki.develop.finkwave.model.Listener;
 
-import com.ukim.finki.develop.finkwave.model.Playlist;
-import com.ukim.finki.develop.finkwave.model.dto.ArtistMusicalEntitiesDTO;
-import com.ukim.finki.develop.finkwave.model.dto.ListenerLikesDTO;
-import com.ukim.finki.develop.finkwave.model.dto.NonAdminUserDTO;
+import com.ukim.finki.develop.finkwave.model.dto.*;
 import com.ukim.finki.develop.finkwave.model.NonAdminUser;
-import com.ukim.finki.develop.finkwave.model.dto.PlaylistDTO;
 import org.springframework.stereotype.Component;
 
@@ -19,40 +15,32 @@
 public class NonAdminUserMapper {
 
-    public NonAdminUserDTO toArtistDTO(Artist artist, ArtistMusicalEntitiesDTO entitiesDTO, Long followers, Long following) {
-        NonAdminUserDTO dto = createBaseDTO(
-            artist.getNonAdminUser(), 
-            "ARTIST", 
-            followers, 
-            following
-        );
-        dto.setMusicalEntities(entitiesDTO);
+    public NonAdminUserDto toArtistDTO(Artist artist, List<ArtistContributionDto> entitiesDTO, Long followers, Long following) {
+        ArtistDto dto=new ArtistDto();
+        populateBaseClassFields(dto,artist.getNonAdminUser(),"ARTIST",followers,following);
+        dto.setContributions(entitiesDTO);
         return dto;
     }
 
-    public NonAdminUserDTO toListenerDTO(Listener listener, ListenerLikesDTO likesDTO, Long followers, Long following, List<PlaylistDTO>playlists) {
-        NonAdminUserDTO dto = createBaseDTO(
-            listener.getNonAdminUser(), 
-            "LISTENER", 
-            followers, 
-            following
-        );
-        dto.setLikes(likesDTO);
+    public NonAdminUserDto toListenerDTO(Listener listener, List<MusicalEntityDto> musicalEntityDtos, Long followers, Long following, List<PlaylistDto>playlists) {
+        ListenerDto dto=new ListenerDto();
+        populateBaseClassFields(dto,listener.getNonAdminUser(),"LISTENER",followers,following);
+        dto.setLikedEntities(musicalEntityDtos);
         dto.setCreatedPlaylists(playlists);
         return dto;
     }
 
-    public NonAdminUserDTO toDTO(NonAdminUser user, String type,Long followers,Long following) {
-        return createBaseDTO(user, type, followers, following);
+    public NonAdminUserDto toDto(NonAdminUser user,String type, Long followers,Long following){
+       NonAdminUserDto dto=new NonAdminUserDto();
+       populateBaseClassFields(dto,user,type,followers,following);
+       return dto;
     }
 
-    private NonAdminUserDTO createBaseDTO(NonAdminUser user, String userType, Long followers, Long following) {
-        NonAdminUserDTO dto = new NonAdminUserDTO();
+    private void populateBaseClassFields(NonAdminUserDto dto,NonAdminUser user,String type,Long followers,Long following){
         dto.setId(user.getId());
         dto.setUsername(user.getUser().getUsername());
         dto.setFullName(user.getUser().getFullName());
-        dto.setUserType(userType);
+        dto.setUserType(type);
         dto.setFollowers(followers);
         dto.setFollowing(following);
-        return dto;
     }
 }
Index: frontend/src/components/userProfile/ArtistView.tsx
===================================================================
--- frontend/src/components/userProfile/ArtistView.tsx	(revision 6de2873a46d63a69e2d1d579335ac1f20e9ee5bf)
+++ frontend/src/components/userProfile/ArtistView.tsx	(revision 98992cf92cf1399ea586c26d6dd45842df661773)
@@ -1,8 +1,8 @@
 import { useNavigate } from "react-router-dom";
 import { Music, Disc3 } from "lucide-react";
-import type { ArtistContributionDTO } from "../../utils/types";
+import type { ArtistContribution } from "../../utils/types";
 
 interface ArtistViewProps {
-  contributions: ArtistContributionDTO[];
+  contributions: ArtistContribution[];
 }
 
Index: frontend/src/components/userProfile/ListenerView.tsx
===================================================================
--- frontend/src/components/userProfile/ListenerView.tsx	(revision 6de2873a46d63a69e2d1d579335ac1f20e9ee5bf)
+++ frontend/src/components/userProfile/ListenerView.tsx	(revision 98992cf92cf1399ea586c26d6dd45842df661773)
@@ -1,9 +1,9 @@
 import { useNavigate } from "react-router-dom";
 import { Heart, ListMusic, Music, Album } from "lucide-react";
-import type { Playlist, MusicalEntityDTO } from "../../utils/types";
+import type { Playlist, MusicalEntity } from "../../utils/types";
 
 interface ListenerViewProps {
-  likedEntities: MusicalEntityDTO[];
-  playlists?: Playlist[];
+  likedEntities: MusicalEntity[] | [];
+  playlists: Playlist[] | [];
 }
 
@@ -11,6 +11,6 @@
   const navigate = useNavigate();
 
-  const likedSongs = likedEntities.filter((e) => e.type === "SONG");
-  const likedAlbums = likedEntities.filter((e) => e.type === "ALBUM");
+  const likedSongs = likedEntities?.filter((e) => e.type === "SONG");
+  const likedAlbums = likedEntities?.filter((e) => e.type === "ALBUM");
 
   return (
@@ -55,5 +55,5 @@
       )}
 
-      {likedSongs.length > 0 && (
+      {likedSongs && likedSongs.length > 0 && (
         <section>
           <div className="flex items-center gap-2 mb-6 pb-2 border-b-2 border-gray-200">
@@ -61,5 +61,5 @@
             <h3 className="text-2xl font-bold text-gray-800">Liked Songs</h3>
             <span className="text-sm text-gray-400 ml-1">
-              ({likedSongs.length})
+              ({likedSongs?.length})
             </span>
           </div>
@@ -90,5 +90,5 @@
       )}
 
-      {likedAlbums.length > 0 && (
+      {likedAlbums && likedAlbums.length > 0 && (
         <section>
           <div className="flex items-center gap-2 mb-6 pb-2 border-b-2 border-gray-200">
@@ -120,12 +120,16 @@
       )}
 
-      {likedEntities.length === 0 && (!playlists || playlists.length === 0) && (
-        <div className="flex flex-col items-center justify-center py-16 text-gray-300">
-          <p className="text-lg font-medium text-gray-400">Nothing here yet</p>
-          <p className="text-sm text-gray-400 mt-1">
-            Start exploring music to build your collection
-          </p>
-        </div>
-      )}
+      {likedEntities &&
+        likedEntities.length === 0 &&
+        (!playlists || playlists.length === 0) && (
+          <div className="flex flex-col items-center justify-center py-16 text-gray-300">
+            <p className="text-lg font-medium text-gray-400">
+              Nothing here yet
+            </p>
+            <p className="text-sm text-gray-400 mt-1">
+              Start exploring music to build your collection
+            </p>
+          </div>
+        )}
     </div>
   );
Index: frontend/src/pages/UserDetailView.tsx
===================================================================
--- frontend/src/pages/UserDetailView.tsx	(revision 6de2873a46d63a69e2d1d579335ac1f20e9ee5bf)
+++ frontend/src/pages/UserDetailView.tsx	(revision 98992cf92cf1399ea586c26d6dd45842df661773)
@@ -5,12 +5,11 @@
 import ListenerView from "../components/userProfile/ListenerView";
 import type {
-  ArtistContributionDTO,
-  MusicalEntityDTO,
+  MusicalEntity,
   Playlist,
+  ArtistContribution,
 } from "../utils/types";
 
-interface User {
+interface BaseUser {
   id: number;
-  username: string;
   fullName: string;
   userType: string;
@@ -18,15 +17,17 @@
   following: number;
   isFollowedByCurrentUser: boolean;
+}
 
-  musicalEntities?: {
-    contributions: ArtistContributionDTO[];
-  };
+interface Artist extends BaseUser {
+  userType: "ARTIST";
+  contributions: ArtistContribution[];
+}
+interface Listener extends BaseUser {
+  userType: "LISTENER";
+  likedEntities: MusicalEntity[];
+  createdPlaylists: Playlist[];
+}
 
-  likes?: {
-    likedEntities: MusicalEntityDTO[];
-  };
-
-  createdPlaylists?: Playlist[];
-}
+type UserProfile = Artist | Listener;
 
 const UserDetail = () => {
@@ -34,5 +35,5 @@
   const { userId } = useParams();
   const navigate = useNavigate();
-  const [user, setUser] = useState<User | null>(null);
+  const [user, setUser] = useState<UserProfile | null>(null);
   const [error, setError] = useState<string | null>(null);
   const [isFollowing, setIsFollowing] = useState(false);
@@ -43,8 +44,7 @@
     setIsFollowing(true);
     try {
-      const response = await axiosInstance.post<User>(
+      const response = await axiosInstance.post<UserProfile>(
         `/users/follow/${userId}`,
       );
-      setUser(response.data);
     } catch (err: any) {
       console.error(err.response?.data?.error);
@@ -59,4 +59,5 @@
       try {
         const response = await axiosInstance.get(`/users/${userId}`);
+        console.log(response.data);
 
         setUser(response.data);
@@ -135,11 +136,9 @@
         </div>
 
-        {user.userType === "ARTIST" && user.musicalEntities?.contributions && (
-          <ArtistView contributions={user.musicalEntities.contributions} />
-        )}
-
-        {user.userType === "LISTENER" && user.likes?.likedEntities && (
+        {user.userType === "ARTIST" ? (
+          <ArtistView contributions={user.contributions} />
+        ) : (
           <ListenerView
-            likedEntities={user.likes.likedEntities}
+            likedEntities={user.likedEntities}
             playlists={user.createdPlaylists}
           />
Index: frontend/src/utils/types.ts
===================================================================
--- frontend/src/utils/types.ts	(revision 6de2873a46d63a69e2d1d579335ac1f20e9ee5bf)
+++ frontend/src/utils/types.ts	(revision 98992cf92cf1399ea586c26d6dd45842df661773)
@@ -1,28 +1,28 @@
 export interface User {
-	username: string;
-	fullName: string;
-	email?: string;
-	profilePhoto?: string | null;
-	role?: "ADMIN" | "NONADMIN";
+  username: string;
+  fullName: string;
+  email?: string;
+  profilePhoto?: string | null;
+  role?: "ADMIN" | "NONADMIN";
 }
 
-export interface ArtistContributionDTO {
-	musicalEntityId: number;
-	title: string;
-	genre: string;
-	role: string;
-	entityType: string;
+export interface ArtistContribution {
+  musicalEntityId: number;
+  title: string;
+  genre: string;
+  role: string;
+  entityType: string;
 }
-export interface MusicalEntityDTO {
-	id: number;
-	title: string;
-	genre: string;
-	type: string;
+export interface MusicalEntity {
+  id: number;
+  title: string;
+  genre: string;
+  type: string;
 }
 
 export interface Playlist {
-	id: number;
-	name: string;
-	cover: string;
-	creatorName: string;
+  id: number;
+  name: string;
+  cover: string;
+  creatorName: string;
 }
