diff --git a/src/main/java/com/example/demo/domain/Task.java b/src/main/java/com/example/demo/domain/Task.java
index 95874eaa9f108d9cde6443c9d4f2fa9d26817b77..6f132fd30130b38157101250312c696bd08d3ca7 100644
--- a/src/main/java/com/example/demo/domain/Task.java
+++ b/src/main/java/com/example/demo/domain/Task.java
@@ -1,21 +1,56 @@
 package com.example.demo.domain;
 
+import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
 import javax.persistence.ManyToOne;
 
 
 @Entity
-public class Task extends AbstractPhase {
+public class Task {
 
+    @Id
+    @GeneratedValue
+    private Long id;
+
+    private String title;
     private String content;
     private String flag;
     private String solution;
     private Long incorrectFlagLimit;
 
+    @Column(name = "order_in_training_phase", nullable = false)
+    private Integer order;
+
     @ManyToOne(fetch = FetchType.LAZY)
     private TrainingPhase trainingPhase;
 
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public Integer getOrder() {
+        return order;
+    }
+
+    public void setOrder(Integer order) {
+        this.order = order;
+    }
+
     public String getContent() {
         return content;
     }
@@ -56,10 +91,17 @@ public class Task extends AbstractPhase {
         this.trainingPhase = trainingPhase;
     }
 
+
     @Override
     public String toString() {
-        return "Task{" + "content='" + content + '\'' + ", flag='" +
-                flag + '\'' + ", solution='" + solution + '\'' + ", incorrectFlagLimit=" + incorrectFlagLimit +
-                super.toString();
+        return "Task{" +
+                "id=" + id +
+                ", title='" + title + '\'' +
+                ", content='" + content + '\'' +
+                ", flag='" + flag + '\'' +
+                ", solution='" + solution + '\'' +
+                ", incorrectFlagLimit=" + incorrectFlagLimit +
+                ", order=" + order +
+                '}';
     }
 }
diff --git a/src/main/java/com/example/demo/dto/TaskDto.java b/src/main/java/com/example/demo/dto/TaskDto.java
index 7e3e0b885ab9a7dc1710ff67e83bf1a448a1cbd2..4277d4f3a82690457cb6f3059eba2eac1d5deeb6 100644
--- a/src/main/java/com/example/demo/dto/TaskDto.java
+++ b/src/main/java/com/example/demo/dto/TaskDto.java
@@ -2,13 +2,40 @@ package com.example.demo.dto;
 
 import java.io.Serializable;
 
-public class TaskDto extends AbstractPhaseDto implements Serializable {
+public class TaskDto implements Serializable {
 
+    private Long id;
+    private String title;
+    private Integer order;
     private String content;
     private String flag;
     private String solution;
     private Long incorrectFlagLimit;
 
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public Integer getOrder() {
+        return order;
+    }
+
+    public void setOrder(Integer order) {
+        this.order = order;
+    }
+
     public String getContent() {
         return content;
     }
@@ -44,10 +71,13 @@ public class TaskDto extends AbstractPhaseDto implements Serializable {
     @Override
     public String toString() {
         return "TaskDto{" +
-                "content='" + content + '\'' +
+                "id=" + id +
+                ", title='" + title + '\'' +
+                ", order=" + order +
+                ", content='" + content + '\'' +
                 ", flag='" + flag + '\'' +
                 ", solution='" + solution + '\'' +
-                ", incorrectFlagLimit='" + incorrectFlagLimit + '\'' +
+                ", incorrectFlagLimit=" + incorrectFlagLimit +
                 "} " + super.toString();
     }
 }
diff --git a/src/main/java/com/example/demo/enums/PhaseType.java b/src/main/java/com/example/demo/enums/PhaseType.java
index a4ae349748f74e28ef1f5366974441c4726469d1..af52293cd4bdb765e92738cb61296869d57dc791 100644
--- a/src/main/java/com/example/demo/enums/PhaseType.java
+++ b/src/main/java/com/example/demo/enums/PhaseType.java
@@ -2,7 +2,6 @@ package com.example.demo.enums;
 
 public enum PhaseType {
     QUESTIONNAIRE,
-    task, // TODO remove once Task is not a subclass of BaseLevel
     INFO,
     GAME,
 }
diff --git a/src/main/java/com/example/demo/mapper/BeanMapper.java b/src/main/java/com/example/demo/mapper/BeanMapper.java
index eaa769e60bb57b06059a3cdef392c0d7163ae4d8..6d480775e207c4cb1c194d7aba794d509aaeefe2 100644
--- a/src/main/java/com/example/demo/mapper/BeanMapper.java
+++ b/src/main/java/com/example/demo/mapper/BeanMapper.java
@@ -3,28 +3,28 @@ package com.example.demo.mapper;
 import com.example.demo.domain.AbstractPhase;
 import com.example.demo.domain.DecisionMatrixRow;
 import com.example.demo.domain.InfoPhase;
-import com.example.demo.domain.QuestionPhaseRelation;
-import com.example.demo.domain.QuestionnairePhase;
-import com.example.demo.domain.TrainingPhase;
 import com.example.demo.domain.Question;
 import com.example.demo.domain.QuestionChoice;
+import com.example.demo.domain.QuestionPhaseRelation;
+import com.example.demo.domain.QuestionnairePhase;
 import com.example.demo.domain.Task;
+import com.example.demo.domain.TrainingPhase;
 import com.example.demo.dto.AbstractPhaseDto;
 import com.example.demo.dto.DecisionMatrixRowDto;
 import com.example.demo.dto.InfoPhaseDto;
 import com.example.demo.dto.InfoPhaseUpdateDto;
-import com.example.demo.dto.QuestionPhaseRelationDto;
-import com.example.demo.dto.QuestionRequiredIdDto;
-import com.example.demo.dto.TrainingPhaseDto;
-import com.example.demo.dto.TrainingPhaseUpdateDto;
 import com.example.demo.dto.QuestionChoiceDto;
 import com.example.demo.dto.QuestionDto;
+import com.example.demo.dto.QuestionPhaseRelationDto;
+import com.example.demo.dto.QuestionRequiredIdDto;
 import com.example.demo.dto.QuestionUpdateDto;
 import com.example.demo.dto.QuestionnairePhaseDto;
 import com.example.demo.dto.QuestionnaireUpdateDto;
 import com.example.demo.dto.TaskCreateDto;
 import com.example.demo.dto.TaskDto;
 import com.example.demo.dto.TaskUpdateDto;
+import com.example.demo.dto.TrainingPhaseDto;
+import com.example.demo.dto.TrainingPhaseUpdateDto;
 import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
 import org.mapstruct.factory.Mappers;
@@ -43,8 +43,6 @@ public interface BeanMapper {
             abstractPhaseDto = toDto((TrainingPhase) abstractPhase);
         } else if (abstractPhase instanceof InfoPhase) {
             abstractPhaseDto = toDto((InfoPhase) abstractPhase);
-        } else if (abstractPhase instanceof Task) {
-            abstractPhaseDto = toDto((Task) abstractPhase);
         } else if (abstractPhase instanceof QuestionnairePhase) {
             abstractPhaseDto = toDto((QuestionnairePhase) abstractPhase);
         } else {
@@ -56,7 +54,6 @@ public interface BeanMapper {
 
     List<AbstractPhaseDto> toDtoList(List<AbstractPhase> abstractPhase);
 
-    @Mapping(target = "phaseType", constant = "task")
     TaskDto toDto(Task task);
 
     Task toEntity(TaskDto taskDto);
diff --git a/src/main/java/com/example/demo/service/TaskService.java b/src/main/java/com/example/demo/service/TaskService.java
index 832c282ffecf90f3e53a4303e413e5365079c1b8..a4092e653bab27da9c080a38b7a25235aab60e7a 100644
--- a/src/main/java/com/example/demo/service/TaskService.java
+++ b/src/main/java/com/example/demo/service/TaskService.java
@@ -1,13 +1,13 @@
 package com.example.demo.service;
 
-import com.example.demo.domain.TrainingPhase;
 import com.example.demo.domain.Task;
+import com.example.demo.domain.TrainingPhase;
 import com.example.demo.dto.TaskCreateDto;
 import com.example.demo.dto.TaskDto;
 import com.example.demo.dto.TaskUpdateDto;
 import com.example.demo.mapper.BeanMapper;
-import com.example.demo.repository.TrainingPhaseRepository;
 import com.example.demo.repository.TaskRepository;
+import com.example.demo.repository.TrainingPhaseRepository;
 import org.apache.commons.collections4.IterableUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -115,7 +115,6 @@ public class TaskService {
         // TODO add check to trainingDefinitionId and phaseId (field structure will be probably changed)
 
         taskUpdate.setTrainingPhase(persistedTask.getTrainingPhase());
-        taskUpdate.setTrainingDefinitionId(persistedTask.getTrainingDefinitionId());
         taskUpdate.setOrder(persistedTask.getOrder());
 
         Task savedEntity = taskRepository.save(taskUpdate);