diff --git a/restructuring/behavior/job.v b/restructuring/behavior/job.v
index e00cd320e70ca029f620a1d6f21589320f276a3d..6067d7e8bc2044af964c2ddbfe6e96d9a8c58019 100644
--- a/restructuring/behavior/job.v
+++ b/restructuring/behavior/job.v
@@ -1,17 +1,20 @@
 From rt.restructuring.behavior Require Export time.
 From mathcomp Require Export eqtype ssrnat.
 
-(* Throughout the library we assume that jobs have decidable equality *)
+(* Throughout the library we assume that jobs have decidable equality. *)
 Definition JobType := eqType.
 
-(* Definition of a generic type of parameter relating jobs to a discrete cost *)
-Class JobCost (J : JobType) := job_cost : J -> duration.
+(* Definition of a generic type of parameter relating jobs to a discrete cost. *)
+Class JobCost (Job : JobType) := job_cost : Job -> duration.
 
-(* Definition of a generic type of parameter for job_arrival *)
-Class JobArrival (J : JobType) := job_arrival : J -> instant.
+(* Definition of a generic type of parameter for job_arrival. *)
+Class JobArrival (Job : JobType) := job_arrival : Job -> instant.
 
-(* Definition of a generic type of parameter relating jobs to an absolute deadline *)
-Class JobDeadline (J : JobType) := job_deadline : J -> instant.
+(* Definition of a generic type of parameter relating jobs to an absolute deadline. *)
+Class JobDeadline (Job : JobType) := job_deadline : Job -> instant.
 
 (* Definition of a generic type of release jitter parameter. *)
-Class JobJitter (J : JobType) := job_jitter : J -> duration.
\ No newline at end of file
+Class JobJitter (Job : JobType) := job_jitter : Job -> duration.
+
+(* Definition of a generic type of parameter relating jobs to their preemption points. *)
+Class JobPreemptable (Job : JobType) := job_preemptable : Job -> duration -> bool.
\ No newline at end of file
diff --git a/restructuring/model/task.v b/restructuring/model/task.v
index e583ceb74c0389cb2a8b8bd13f45e9af6c1e408a..ef934520d6b365a1e6aa57efea0747e4bfc1d14d 100644
--- a/restructuring/model/task.v
+++ b/restructuring/model/task.v
@@ -7,13 +7,29 @@ From rt.restructuring.behavior Require Export arrival_sequence.
 Definition TaskType := eqType.
 
 (* Definition of a generic type of parameter relating jobs to tasks *)
-Class JobTask (J : JobType) (T : TaskType) := job_task : J -> T.
+Class JobTask (Job : JobType) (Task : TaskType) := job_task : Job -> Task.
+
+(* Definition of a generic type of parameter for task deadlines *)
+Class TaskDeadline (Task : TaskType) := task_deadline : Task -> duration.
+
+(* Definition of a generic type of parameter for task cost *)
+Class TaskCost (Task : TaskType) := task_cost : Task -> duration.
+
+(* Definition of a generic type of parameter relating tasks 
+   to the length of the maximum nonpreeptive segment. *)
+Class TaskMaxNonpreemptiveSegment (Task : TaskType) :=
+  task_max_nonpreeptive_segment : Task -> duration.
+
+(* Definition of a generic type of parameter relating tasks
+   to theirs run-to-completion threshold. *)
+Class TaskRunToCompletionThreshold (Task : TaskType) :=
+  task_run_to_completion_threshold : Task -> duration.
 
 Section SameTask.
   
   (* For any type of job associated with any type of tasks... *)
-  Context {Job: JobType}.
-  Context {Task: TaskType}.
+  Context {Job : JobType}.
+  Context {Task : TaskType}.
   Context `{JobTask Job Task}.
 
   (* ... we say that two jobs j1 and j2 are from the same task iff job_task j1
@@ -22,10 +38,6 @@ Section SameTask.
 
 End SameTask.
 
-
-(* Definition of a generic type of parameter for task deadlines *)
-Class TaskDeadline (Task : TaskType) := task_deadline : Task -> duration.
-
 (* Given task deadlines and a mapping from jobs to tasks we provide a generic definition of job_deadline *)
 Instance job_deadline_from_task_deadline
          (Job : JobType) (Task : TaskType)
@@ -33,9 +45,6 @@ Instance job_deadline_from_task_deadline
   fun j => job_arrival j + task_deadline (job_task j).
 
 
-(* Definition of a generic type of parameter for task cost *)
-Class TaskCost (T : TaskType) := task_cost : T -> duration.
-
 
 (* In this section, we introduce properties of a task. *)
 Section PropertesOfTask.