Index: src/main/java/it/finki/tinki/TinkiApplication.java
===================================================================
--- src/main/java/it/finki/tinki/TinkiApplication.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/TinkiApplication.java	(revision 297bd16e19a43adf781d79489486d95db5de4237)
@@ -11,3 +11,4 @@
         SpringApplication.run(TinkiApplication.class, args);
     }
+
 }
Index: src/main/java/it/finki/tinki/model/EmbeddedMatchId.java
===================================================================
--- src/main/java/it/finki/tinki/model/EmbeddedMatchId.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/model/EmbeddedMatchId.java	(revision 297bd16e19a43adf781d79489486d95db5de4237)
@@ -19,5 +19,5 @@
     private User user;
 
-    public EmbeddedMatchId(){ }
+    public EmbeddedMatchId(){}
 
     public EmbeddedMatchId(Work work, User user){
Index: src/main/java/it/finki/tinki/model/dto/register/work/InternshipRegisterDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/register/work/InternshipRegisterDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/model/dto/register/work/InternshipRegisterDTO.java	(revision 297bd16e19a43adf781d79489486d95db5de4237)
@@ -6,5 +6,5 @@
 
 @Data
-public class InternshipRegisterDTO {
+public class InternshipRegisterDTO extends WorkRegisterDTO {
     int openSpots;
     List<Long> skillsTrained;
Index: src/main/java/it/finki/tinki/model/dto/register/work/ProjectRegisterDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/register/work/ProjectRegisterDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/model/dto/register/work/ProjectRegisterDTO.java	(revision 297bd16e19a43adf781d79489486d95db5de4237)
@@ -7,5 +7,5 @@
 
 @Data
-public class ProjectRegisterDTO {
+public class ProjectRegisterDTO extends WorkRegisterDTO {
     Date validUntil;
     List<Long> skillsRequired;
Index: src/main/java/it/finki/tinki/model/dto/register/work/WorkRegisterDTO.java
===================================================================
--- src/main/java/it/finki/tinki/model/dto/register/work/WorkRegisterDTO.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/model/dto/register/work/WorkRegisterDTO.java	(revision 297bd16e19a43adf781d79489486d95db5de4237)
@@ -1,4 +1,5 @@
 package it.finki.tinki.model.dto.register.work;
 
+import it.finki.tinki.model.enumerator.AccountType;
 import lombok.Data;
 
@@ -9,3 +10,4 @@
     Long accountId;
     int salary;
+    AccountType type;
 }
Index: src/main/java/it/finki/tinki/service/AccountService.java
===================================================================
--- src/main/java/it/finki/tinki/service/AccountService.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/service/AccountService.java	(revision 297bd16e19a43adf781d79489486d95db5de4237)
@@ -19,5 +19,5 @@
     User editUser(Long id, String email, String name, String surname, List<Skill> retainedSkills, List<Skill> skillsToLearn);
     Company editCompany(Long id, String email, String name, String country, String city, String street);
+    Team editTeam(Long id, String email, String name, int members);
     Optional<?> findByIdAndEmail(Long id, String email, AccountType type);
-    Team editTeam(Long id, String email, String name, int members);
 }
Index: src/main/java/it/finki/tinki/service/impl/WorkServiceImpl.java
===================================================================
--- src/main/java/it/finki/tinki/service/impl/WorkServiceImpl.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/service/impl/WorkServiceImpl.java	(revision 297bd16e19a43adf781d79489486d95db5de4237)
@@ -1,4 +1,5 @@
 package it.finki.tinki.service.impl;
 
+import it.finki.tinki.model.Users.User;
 import it.finki.tinki.model.Work.Internship;
 import it.finki.tinki.model.Work.Job;
@@ -7,9 +8,7 @@
 import it.finki.tinki.model.Users.Account;
 import it.finki.tinki.model.enumerator.AccountType;
-import it.finki.tinki.repository.InternshipRepository;
-import it.finki.tinki.repository.JobRepository;
-import it.finki.tinki.repository.MatchRepository;
-import it.finki.tinki.repository.ProjectRepository;
+import it.finki.tinki.repository.*;
 import it.finki.tinki.service.AccountService;
+import it.finki.tinki.service.MatchmakerService;
 import it.finki.tinki.service.SkillService;
 import it.finki.tinki.service.WorkService;
@@ -26,6 +25,8 @@
     ProjectRepository projectRepository;
     MatchRepository matchRepository;
+    MatchmakerService matchmakerService;
     SkillService skillService;
     AccountService accountService;
+    UserRepository userRepository;
 
     public WorkServiceImpl(JobRepository jobRepository,
@@ -34,5 +35,7 @@
                            MatchRepository matchRepository,
                            SkillService skillService,
-                           AccountService accountService) {
+                           AccountService accountService,
+                           UserRepository userRepository,
+                           MatchmakerService matchmakerService) {
         this.jobRepository = jobRepository;
         this.internshipRepository = internshipRepository;
@@ -41,4 +44,6 @@
         this.skillService = skillService;
         this.accountService = accountService;
+        this.userRepository = userRepository;
+        this.matchmakerService = matchmakerService;
     }
 
@@ -78,5 +83,13 @@
         Account account = this.accountService.findByIdAndType(adccId, type);
         Job j = new Job(title, description, account, salary, skills);
-        return this.jobRepository.save(j);
+        Job jb = this.jobRepository.save(j);
+
+        List<User> users = this.userRepository.findAll();
+
+        users.forEach(user -> {
+            this.matchmakerService.setUpUserJobMatches(jb, user);
+        });
+
+        return jb;
     }
 
@@ -86,5 +99,13 @@
         Account account = this.accountService.findByIdAndType(adccId, type);
         Internship j = new Internship(title, description, account, salary, skills, openSpots);
-        return this.internshipRepository.save(j);
+        Internship jb = this.internshipRepository.save(j);
+
+        List<User> users = this.userRepository.findAll();
+
+        users.forEach(user -> {
+            this.matchmakerService.setUpUserInternshipMatches(jb, user);
+        });
+
+        return jb;
     }
 
@@ -94,5 +115,13 @@
         Account account = this.accountService.findByIdAndType(adccId, type);
         Project j = new Project(title, description, account, salary, skills, validUntil);
-        return this.projectRepository.save(j);
+        Project jb = this.projectRepository.save(j);
+
+        List<User> users = this.userRepository.findAll();
+
+        users.forEach(user -> {
+            this.matchmakerService.setUpUserProjectMatches(jb, user);
+        });
+
+        return jb;
     }
 }
Index: src/main/java/it/finki/tinki/web/controller/AccountRegisterController.java
===================================================================
--- src/main/java/it/finki/tinki/web/controller/AccountRegisterController.java	(revision 297bd16e19a43adf781d79489486d95db5de4237)
+++ src/main/java/it/finki/tinki/web/controller/AccountRegisterController.java	(revision 297bd16e19a43adf781d79489486d95db5de4237)
@@ -0,0 +1,86 @@
+package it.finki.tinki.web.controller;
+
+import it.finki.tinki.model.Skill;
+import it.finki.tinki.model.Users.Account;
+import it.finki.tinki.model.dto.register.account.CompanyRegisterDTO;
+import it.finki.tinki.model.dto.register.account.TeamRegisterDTO;
+import it.finki.tinki.model.dto.register.account.UserRegisterDTO;
+import it.finki.tinki.service.AccountService;
+import it.finki.tinki.service.MatchmakerService;
+import it.finki.tinki.service.SkillService;
+import it.finki.tinki.service.WorkService;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@CrossOrigin(origins = "http://localhost:3000")
+@RequestMapping("/api/register")
+public class AccountRegisterController {
+
+    AccountService accountService;
+    SkillService skillService;
+    WorkService workService;
+    MatchmakerService matchmakerService;
+
+    public AccountRegisterController(AccountService accountService, SkillService skillService, WorkService workService, MatchmakerService matchmakerService) {
+        this.accountService = accountService;
+        this.skillService = skillService;
+        this.workService = workService;
+        this.matchmakerService = matchmakerService;
+    }
+
+    @RequestMapping(path = "/user", method = RequestMethod.POST)
+    private Map<String, String> registerUser(@RequestBody UserRegisterDTO body){
+
+        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<>();
+
+        if(k==null){
+            response.put("error", "There was an error when trying to register user.");
+        }else{
+            response.put("success", "Registration completed successfully.");
+        }
+
+        return response;
+    }
+
+    @RequestMapping(path = "/team", method = RequestMethod.POST)
+    private Map<String, String> registerTeam(@RequestBody TeamRegisterDTO body){
+
+        Account k = this.accountService.registerTeam(body.getEmail(), body.getPassword(), body.getName(), body.getMembers());
+
+        Map<String, String> response = new HashMap<>();
+
+        if(k==null){
+            response.put("error", "There was an error when trying to register team.");
+        }else{
+            response.put("success", "Registration completed successfully.");
+        }
+
+        return response;
+    }
+
+    @RequestMapping(path = "/company", method = RequestMethod.POST)
+    private Map<String, String> registerCompany(@RequestBody CompanyRegisterDTO body){
+
+        Account k = this.accountService.registerCompany(body.getEmail(),
+                body.getPassword(), body.getName(), body.getCountry(), body.getCity(), body.getStreet());
+
+        Map<String, String> response = new HashMap<>();
+
+        if(k==null){
+            response.put("error", "There was an error when trying to register company.");
+        }else{
+            response.put("success", "Registration completed successfully.");
+        }
+
+        return response;
+    }
+}
Index: src/main/java/it/finki/tinki/web/controller/RegisterController.java
===================================================================
--- src/main/java/it/finki/tinki/web/controller/RegisterController.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ 	(revision )
@@ -1,86 +1,0 @@
-package it.finki.tinki.web.controller;
-
-import it.finki.tinki.model.Skill;
-import it.finki.tinki.model.Users.Account;
-import it.finki.tinki.model.dto.register.account.CompanyRegisterDTO;
-import it.finki.tinki.model.dto.register.account.TeamRegisterDTO;
-import it.finki.tinki.model.dto.register.account.UserRegisterDTO;
-import it.finki.tinki.service.AccountService;
-import it.finki.tinki.service.MatchmakerService;
-import it.finki.tinki.service.SkillService;
-import it.finki.tinki.service.WorkService;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-@RestController
-@CrossOrigin(origins = "http://localhost:3000")
-@RequestMapping("/api/register")
-public class RegisterController {
-
-    AccountService accountService;
-    SkillService skillService;
-    WorkService workService;
-    MatchmakerService matchmakerService;
-
-    public RegisterController(AccountService accountService, SkillService skillService, WorkService workService, MatchmakerService matchmakerService) {
-        this.accountService = accountService;
-        this.skillService = skillService;
-        this.workService = workService;
-        this.matchmakerService = matchmakerService;
-    }
-
-    @RequestMapping(path = "/user", method = RequestMethod.POST)
-    private Map<String, String> registerUser(@RequestBody UserRegisterDTO body){
-
-        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<>();
-
-        if(k==null){
-            response.put("error", "There was an error when trying to register user.");
-        }else{
-            response.put("success", "Registration completed successfully.");
-        }
-
-        return response;
-    }
-
-    @RequestMapping(path = "/team", method = RequestMethod.POST)
-    private Map<String, String> registerTeam(@RequestBody TeamRegisterDTO body){
-
-        Account k = this.accountService.registerTeam(body.getEmail(), body.getPassword(), body.getName(), body.getMembers());
-
-        Map<String, String> response = new HashMap<>();
-
-        if(k==null){
-            response.put("error", "There was an error when trying to register team.");
-        }else{
-            response.put("success", "Registration completed successfully.");
-        }
-
-        return response;
-    }
-
-    @RequestMapping(path = "/company", method = RequestMethod.POST)
-    private Map<String, String> registerCompany(@RequestBody CompanyRegisterDTO body){
-
-        Account k = this.accountService.registerCompany(body.getEmail(),
-                body.getPassword(), body.getName(), body.getCountry(), body.getCity(), body.getStreet());
-
-        Map<String, String> response = new HashMap<>();
-
-        if(k==null){
-            response.put("error", "There was an error when trying to register company.");
-        }else{
-            response.put("success", "Registration completed successfully.");
-        }
-
-        return response;
-    }
-}
Index: src/main/java/it/finki/tinki/web/controller/WorkRegisterController.java
===================================================================
--- src/main/java/it/finki/tinki/web/controller/WorkRegisterController.java	(revision bd46dbb1a81113e9e723d93a58b6a29b0080ba17)
+++ src/main/java/it/finki/tinki/web/controller/WorkRegisterController.java	(revision 297bd16e19a43adf781d79489486d95db5de4237)
@@ -1,5 +1,14 @@
 package it.finki.tinki.web.controller;
 
+import it.finki.tinki.model.Work.Internship;
+import it.finki.tinki.model.Work.Job;
+import it.finki.tinki.model.Work.Project;
+import it.finki.tinki.model.dto.register.work.InternshipRegisterDTO;
+import it.finki.tinki.model.dto.register.work.JobRegisterDTO;
+import it.finki.tinki.model.dto.register.work.ProjectRegisterDTO;
+import it.finki.tinki.model.dto.response.work.InternshipResponseDTO;
 import it.finki.tinki.model.dto.response.work.JobResponseDTO;
+import it.finki.tinki.model.dto.response.work.ProjectResponseDTO;
+import it.finki.tinki.service.WorkService;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -11,7 +20,35 @@
 public class WorkRegisterController {
 
-//    @PostMapping("/job")
-//    public JobResponseDTO registerJob(@RequestBody JobRegisterDTO body){
-//
-//    }
+    WorkService workService;
+
+    public WorkRegisterController(WorkService workService) {
+        this.workService = workService;
+    }
+
+    @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);
+    }
+
+    @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);
+    }
+
+    @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);
+    }
 }
