Index: src/main/java/it/finki/tinki/web/controller/AccountEditController.java
===================================================================
--- src/main/java/it/finki/tinki/web/controller/AccountEditController.java	(revision 17abe5eb95d30a27747b54273b41e7dbfc9e3c94)
+++ src/main/java/it/finki/tinki/web/controller/AccountEditController.java	(revision 5f9d25a24d71c717ef13ce6ab805ea22f1c42092)
@@ -13,4 +13,5 @@
 import it.finki.tinki.model.enumerator.AccountType;
 import it.finki.tinki.service.AccountService;
+import it.finki.tinki.service.BuilderService;
 import it.finki.tinki.service.SkillService;
 import org.springframework.web.bind.annotation.*;
@@ -26,88 +27,54 @@
     AccountService accountService;
     SkillService skillService;
+    BuilderService builderService;
 
-    public AccountEditController(AccountService accountService, SkillService skillService) {
+    public AccountEditController(AccountService accountService, SkillService skillService, BuilderService builderService) {
         this.accountService = accountService;
         this.skillService = skillService;
+        this.builderService = builderService;
     }
 
-    @PostMapping(path = "/user/{id}/{email}")
+    @PostMapping(path = "/user/{id}")
     public UserResponseDTO editUser(@PathVariable(name = "id") Long id,
-                                    @PathVariable(name = "email") String email,
                                     @RequestBody UserRegisterDTO body){
 
-        Optional<?> a = this.accountService.findByIdAndEmail(id, email, AccountType.USER);
+        Optional<?> a = this.accountService.findByIdAndEmail(id, body.getEmail(), AccountType.USER);
 
         if(a.isPresent()){
             List<Skill> retained = this.skillService.returnSkillsBasedOnId(body.getRetainedSkills());
             List<Skill> toLearn = this.skillService.returnSkillsBasedOnId(body.getSkillsToLearn());
-
             User u = this.accountService.editUser(id, body.getEmail(), body.getName(), body.getSurname(), retained, toLearn);
-
-            UserResponseDTO userResponseDTO = new UserResponseDTO();
-
-            userResponseDTO.setId(u.getId());
-            userResponseDTO.setEmail(u.getEmail());
-            userResponseDTO.setType(AccountType.USER);
-            userResponseDTO.setError(null);
-            userResponseDTO.setName(u.getName());
-            userResponseDTO.setSurname(u.getSurname());
-            userResponseDTO.setRetained(u.getRetainedSkills());
-            userResponseDTO.setToLearn(u.getSkillsToLearn());
-
-            return userResponseDTO;
+            return this.builderService.buildUserResponseDTO(u);
         }
 
-        return null;
+        return new UserResponseDTO();
     }
 
-    @PostMapping(path = "/company/{id}/{email}")
+    @PostMapping(path = "/company/{id}")
     public CompanyResponseDTO editCompany(@PathVariable(name = "id") Long id,
-                                          @PathVariable(name = "email") String email,
                                           @RequestBody CompanyRegisterDTO body){
 
-        Optional<?> a = this.accountService.findByIdAndEmail(id, email, AccountType.COMPANY);
+        Optional<?> a = this.accountService.findByIdAndEmail(id, body.getEmail(), AccountType.COMPANY);
 
         if(a.isPresent()){
             Company c = this.accountService.editCompany(id, body.getEmail(), body.getName(), body.getCountry(), body.getCity(), body.getStreet());
-
-            CompanyResponseDTO companyResponseDTO = new CompanyResponseDTO();
-
-            companyResponseDTO.setId(c.getId());
-            companyResponseDTO.setEmail(c.getEmail());
-            companyResponseDTO.setError(null);
-            companyResponseDTO.setType(AccountType.COMPANY);
-            companyResponseDTO.setName(c.getName());
-            companyResponseDTO.setAddress(c.getAddress());
-
-            return companyResponseDTO;
+            return this.builderService.buildCompanyResponseDTO(c);
         }
 
-        return null;
+        return new CompanyResponseDTO();
     }
 
-    @PostMapping(path = "/team/{id}/{email}")
+    @PostMapping(path = "/team/{id}")
     public TeamResponseDTO editTeam(@PathVariable(name = "id") Long id,
-                                    @PathVariable(name = "email") String email,
                                     @RequestBody TeamRegisterDTO body){
 
-        Optional<?> a = this.accountService.findByIdAndEmail(id, email, AccountType.TEAM);
+        Optional<?> a = this.accountService.findByIdAndEmail(id, body.getEmail(), AccountType.TEAM);
 
         if(a.isPresent()){
             Team t = this.accountService.editTeam(id, body.getEmail(), body.getName(), body.getMembers());
-
-            TeamResponseDTO teamResponseDTO = new TeamResponseDTO();
-
-            teamResponseDTO.setId(t.getId());
-            teamResponseDTO.setEmail(t.getEmail());
-            teamResponseDTO.setError(null);
-            teamResponseDTO.setType(AccountType.TEAM);
-            teamResponseDTO.setName(t.getName());
-            teamResponseDTO.setMembers(t.getMembers());
-
-            return teamResponseDTO;
+            return this.builderService.buildTeamResponseDTO(t);
         }
 
-        return null;
+        return new TeamResponseDTO();
     }
 }
Index: src/main/java/it/finki/tinki/web/controller/AccountRegisterController.java
===================================================================
--- src/main/java/it/finki/tinki/web/controller/AccountRegisterController.java	(revision 17abe5eb95d30a27747b54273b41e7dbfc9e3c94)
+++ src/main/java/it/finki/tinki/web/controller/AccountRegisterController.java	(revision 5f9d25a24d71c717ef13ce6ab805ea22f1c42092)
@@ -38,7 +38,5 @@
         List<Skill> retained = this.skillService.returnSkillsBasedOnId(body.getRetainedSkills());
         List<Skill> toLearn = this.skillService.returnSkillsBasedOnId(body.getSkillsToLearn());
-
         Account k = this.accountService.registerUser(body.getEmail(), body.getPassword(), body.getName(), body.getSurname(), retained, toLearn);
-
         Map<String, String> response = new HashMap<>();
 
@@ -56,5 +54,4 @@
 
         Account k = this.accountService.registerTeam(body.getEmail(), body.getPassword(), body.getName(), body.getMembers());
-
         Map<String, String> response = new HashMap<>();
 
@@ -73,5 +70,4 @@
         Account k = this.accountService.registerCompany(body.getEmail(),
                 body.getPassword(), body.getName(), body.getCountry(), body.getCity(), body.getStreet());
-
         Map<String, String> response = new HashMap<>();
 
Index: src/main/java/it/finki/tinki/web/controller/LoginController.java
===================================================================
--- src/main/java/it/finki/tinki/web/controller/LoginController.java	(revision 17abe5eb95d30a27747b54273b41e7dbfc9e3c94)
+++ src/main/java/it/finki/tinki/web/controller/LoginController.java	(revision 5f9d25a24d71c717ef13ce6ab805ea22f1c42092)
@@ -18,4 +18,5 @@
 import it.finki.tinki.model.enumerator.AccountType;
 import it.finki.tinki.service.AccountService;
+import it.finki.tinki.service.BuilderService;
 import it.finki.tinki.service.MatchmakerService;
 import it.finki.tinki.service.WorkService;
@@ -31,11 +32,11 @@
 
     AccountService accountService;
-    MatchmakerService matchmakerService;
     WorkService workService;
+    BuilderService builderService;
 
-    public LoginController(AccountService accountService, MatchmakerService matchmakerService, WorkService workService) {
+    public LoginController(AccountService accountService, WorkService workService, BuilderService builderService) {
         this.accountService = accountService;
-        this.matchmakerService = matchmakerService;
         this.workService = workService;
+        this.builderService = builderService;
     }
 
@@ -43,109 +44,17 @@
     public LoginResponseDTO loginProcess(@RequestBody AccountLoginDTO body) throws ResponseStatusException {
 
-        System.out.println(body);
         Account a1 = accountService.findUser(body.getEmail(), body.getPassword(), body.getType());
 
         if(a1!=null){
             if(a1.getClass().equals(User.class)){
-                return processUser(a1);
+                return this.builderService.buildUserResponseDTO(a1);
             }else if(a1.getClass().equals(Team.class)){
-                return processTeam(a1);
+                return this.builderService.buildTeamResponseDTO(a1);
             }else{
-                return processCompany(a1);
+                return this.builderService.buildCompanyResponseDTO(a1);
             }
         }
 
         return new LoginResponseDTO();
-    }
-
-    private UserResponseDTO processUser(Account a1){
-        UserResponseDTO uDto = new UserResponseDTO();
-
-        uDto.setError(null);
-
-        uDto.setId(a1.getId());
-        uDto.setEmail(a1.getEmail());
-        uDto.setName(a1.getName());
-        uDto.setType(AccountType.USER);
-        uDto.setSurname(((User) a1).getSurname());
-
-        uDto.setRetained(((User) a1).getRetainedSkills());
-        uDto.setToLearn(((User) a1).getSkillsToLearn());
-
-        List<Job> matchedJobs = this.matchmakerService.getMatchingJobsForUser((User) a1);
-        List<Project> matchedProjects = this.matchmakerService.getMatchingProjectsForUser((User) a1);
-        List<Internship> matchedInternships = this.matchmakerService.getMatchingInternshipsForUser((User) a1);
-
-        matchedJobs.forEach(job -> {
-            JobResponseDTO dto = new JobResponseDTO(job);
-            uDto.getJobs().add(dto);
-        });
-
-        matchedProjects.forEach(project -> {
-            ProjectResponseDTO dto = new ProjectResponseDTO(project);
-            uDto.getProjects().add(dto);
-        });
-
-        matchedInternships.forEach(internship -> {
-            InternshipResponseDTO dto = new InternshipResponseDTO(internship);
-            uDto.getInternships().add(dto);
-        });
-
-
-        return uDto;
-    }
-
-    private TeamResponseDTO processTeam(Account a1){
-        TeamResponseDTO tDto = new TeamResponseDTO();
-
-        tDto.setError(null);
-
-        tDto.setId(a1.getId());
-        tDto.setEmail(a1.getEmail());
-        tDto.setName(a1.getName());
-        tDto.setType(AccountType.TEAM);
-        tDto.setMembers(((Team) a1).getMembers());
-
-        List<Job> jobs = this.workService.getAllJobsByAccount(a1.getId());
-        List<Project> projects = this.workService.getAllProjectsByAccount(a1.getId());
-
-        jobs.forEach(job -> {
-            JobResponseDTO dto = new JobResponseDTO(job);
-            tDto.getJobs().add(dto);
-        });
-
-        projects.forEach(project -> {
-            ProjectResponseDTO dto = new ProjectResponseDTO(project);
-            tDto.getProjects().add(dto);
-        });
-
-        return tDto;
-    }
-
-    private CompanyResponseDTO processCompany(Account a1){
-        CompanyResponseDTO cDto = new CompanyResponseDTO();
-
-        cDto.setError(null);
-
-        cDto.setId(a1.getId());
-        cDto.setEmail(a1.getEmail());
-        cDto.setName(a1.getName());
-        cDto.setType(AccountType.COMPANY);
-        cDto.setAddress(((Company) a1).getAddress());
-
-        List<Job> jobs = this.workService.getAllJobsByAccount(a1.getId());
-        List<Internship> internships = this.workService.getAllInternshipsByAccount(a1.getId());
-
-        jobs.forEach(job -> {
-            JobResponseDTO dto = new JobResponseDTO(job);
-            cDto.getJobs().add(dto);
-        });
-
-        internships.forEach(internship -> {
-            InternshipResponseDTO dto = new InternshipResponseDTO(internship);
-            cDto.getInternships().add(dto);
-        });
-
-        return cDto;
     }
 
@@ -164,4 +73,3 @@
         return this.workService.fullTextProjectSearch(text);
     }
-
 }
Index: src/main/java/it/finki/tinki/web/controller/WorkEditController.java
===================================================================
--- src/main/java/it/finki/tinki/web/controller/WorkEditController.java	(revision 17abe5eb95d30a27747b54273b41e7dbfc9e3c94)
+++ src/main/java/it/finki/tinki/web/controller/WorkEditController.java	(revision 5f9d25a24d71c717ef13ce6ab805ea22f1c42092)
@@ -25,43 +25,34 @@
     }
 
-    @PostMapping("/job/{userId}/{id}")
-    public JobResponseDTO editJob(@PathVariable Long userId,
-                                  @PathVariable Long id,
+    @PostMapping("/job/{id}")
+    public JobResponseDTO editJob(@PathVariable Long id,
                                   @RequestBody JobRegisterDTO body){
 
-        if(userId.equals(this.workService.getJobById(id).getAccount().getId())) {
+        if(body.getAccountId().equals(this.workService.getJobById(id).getAccount().getId())) {
             Job k = this.workService.editJob(id, body.getTitle(), body.getDescription(), body.getSalary());
-
             return new JobResponseDTO(k);
         }
-
         return null;
     }
 
-    @PostMapping("/internship/{userId}/{id}")
-    public InternshipResponseDTO editInternship(@PathVariable Long userId,
-                                                @PathVariable Long id,
+    @PostMapping("/internship/{id}")
+    public InternshipResponseDTO editInternship(@PathVariable Long id,
                                                 @RequestBody InternshipRegisterDTO body){
 
-        if(userId.equals(this.workService.getJobById(id).getAccount().getId())){
+        if(body.getAccountId().equals(this.workService.getJobById(id).getAccount().getId())){
             Internship k = this.workService.editInternship(id, body.getTitle(), body.getDescription(), body.getSalary(), body.getOpenSpots());
-
             return new InternshipResponseDTO(k);
         }
-
         return null;
     }
 
-    @PostMapping("/project/{userId}/{id}")
-    public ProjectResponseDTO editProject(@PathVariable Long userId,
-                                          @PathVariable Long id,
+    @PostMapping("/project/{id}")
+    public ProjectResponseDTO editProject(@PathVariable Long id,
                                           @RequestBody ProjectRegisterDTO body){
 
-        if(userId.equals(this.workService.getJobById(id).getAccount().getId())) {
+        if(body.getAccountId().equals(this.workService.getJobById(id).getAccount().getId())) {
             Project k = this.workService.editProject(id, body.getTitle(), body.getDescription(), body.getSalary());
-
             return new ProjectResponseDTO(k);
         }
-
         return null;
     }
Index: src/main/java/it/finki/tinki/web/controller/WorkRegisterController.java
===================================================================
--- src/main/java/it/finki/tinki/web/controller/WorkRegisterController.java	(revision 17abe5eb95d30a27747b54273b41e7dbfc9e3c94)
+++ src/main/java/it/finki/tinki/web/controller/WorkRegisterController.java	(revision 5f9d25a24d71c717ef13ce6ab805ea22f1c42092)
@@ -26,8 +26,6 @@
     @PostMapping("/job")
     public JobResponseDTO registerJob(@RequestBody JobRegisterDTO body){
-
         Job j = this.workService.insertJob(body.getTitle(),
                 body.getDescription(), body.getAccountId(), body.getSalary(), body.getSkillsRequired(), body.getType());
-
         return new JobResponseDTO(j);
     }
@@ -35,8 +33,6 @@
     @PostMapping("/internship")
     public InternshipResponseDTO registerInternship(@RequestBody InternshipRegisterDTO body){
-
         Internship j = this.workService.insertInternship(body.getTitle(),
                 body.getDescription(), body.getAccountId(), body.getSalary(), body.getSkillsTrained(), body.getOpenSpots(), body.getType());
-
         return new InternshipResponseDTO(j);
     }
@@ -44,8 +40,6 @@
     @PostMapping("/project")
     public ProjectResponseDTO registerProject(@RequestBody ProjectRegisterDTO body){
-
         Project j = this.workService.insertProject(body.getTitle(),
                 body.getDescription(), body.getAccountId(), body.getSalary(), body.getSkillsRequired(), body.getValidUntil(), body.getType());
-
         return new ProjectResponseDTO(j);
     }
