diff --git a/author.ts b/author.ts
index 86c0270212d25ac86ab7b5a4afbf7d463c95ab7d..410e2667ed8c1d4a997239a500165d4f91847eaa 100644
--- a/author.ts
+++ b/author.ts
@@ -1,6 +1,6 @@
 import {html} from './types';
 
-export class Author {
+export interface Author {
     name: string;
     image: string;
     description: html;
diff --git a/contents/assessment.ts b/contents/assessment.ts
index d0fee98b370136b213f7b0820a125d05aaf3903e..4a8215dc21a0902dd15dc8f8d2d91e207ead231a 100644
--- a/contents/assessment.ts
+++ b/contents/assessment.ts
@@ -1,28 +1,28 @@
 import {Content} from './content';
 import {html, uid} from '../types';
 
-export class Assessment extends Content {
+export interface Assessment extends Content {
     summary?: string;
     questions?: uid[];
     time?: number;
 }
 
-export class AssessmentRuntime extends Assessment {
+export interface AssessmentRuntime extends Assessment {
     score?: number;
     scoreTotal?: number;
     chapterId?: uid;
     easierScoring?: boolean;
 }
 
-export class SimpleQuestion extends Content {
+export interface SimpleQuestion extends Content {
     question: uid;
 }
 
-export class SimpleQuestionRuntime extends SimpleQuestion {
+export interface SimpleQuestionRuntime extends SimpleQuestion {
     chapterId?: number;
 }
 
-export class Question {
+export interface Question {
     type: string;
     score: number;
     statement: string;
@@ -33,36 +33,36 @@ export class Question {
     easierScoring?: boolean;
 }
 
-export class DragAndDropquestion extends Question{
+export interface DragAndDropquestion extends Question{
     correctResponse: Array<{label: string, values: string[]}>;
 }
 
-export class MultipleChoiceQuestion extends Question {
+export interface MultipleChoiceQuestion extends Question {
     correctResponse: Array<string>;
 }
 
-export class SimpleChoiceQuestion extends Question {
+export interface SimpleChoiceQuestion extends Question {
     correctResponse: string;
 }
 
-export class Response {
+export interface Response {
     label: string;
     value: string;
     explanation?: string;
 }
 
-export class SwipeQuestion extends Question {
+export interface SwipeQuestion extends Question {
     correctResponse: Array<{label: string, values: string[]}>;
 }
 
-export class SwipeQuestionRuntime extends SwipeQuestion {
+export interface SwipeQuestionRuntime extends SwipeQuestion {
     possibilities?: Array<string>;
 }
 
-export class DropDownListQuestion extends Question {
+export interface DropDownListQuestion extends Question {
     correctResponse: Array<{label: string, values: string[]}>;
 }
 
-export class DropDownListQuestionRuntime extends DragAndDropquestion {
+export interface DropDownListQuestionRuntime extends DragAndDropquestion {
     categories?: Array<string>;
 }
\ No newline at end of file
diff --git a/contents/content.ts b/contents/content.ts
index 244d279d5fe50599397f52efcd8cb760b3944fe6..99abfe253749eeb6874e5a729557a369c5f219fd 100644
--- a/contents/content.ts
+++ b/contents/content.ts
@@ -1,6 +1,6 @@
 import {uid} from '../types';
 
-export abstract class Content {
+export interface Content {
     id: uid;
     type: 'html' | 'assessment' | 'video' | 'simple-question' | 'choice';
     title: string;
@@ -9,25 +9,25 @@ export abstract class Content {
     conditionResolver?: ScoreResolver | ChoiceResolver;
 }
 
-abstract class Resolver {
+ interface Resolver {
     conditionalFlag: ConditionalFlag[];
 }
 
-export class ScoreResolver extends Resolver{
+export interface ScoreResolver extends Resolver{
     type: 'score';
 }
 
-export class ChoiceResolver extends Resolver{
+export interface ChoiceResolver extends Resolver{
     type: 'choice';
     choices: Choice[];
 }
 
-export class Choice {
+export interface Choice {
     label: string;
     value: string;
 }
 
-export class ConditionalFlag {
+export interface ConditionalFlag {
     value: string;
     flags: uid[];
 }
diff --git a/contents/html.ts b/contents/html.ts
index 616c197454daaa535e6b4ed7881ac391b52ee91c..64160119a8e10da004e7a3fd3adedaca3f54815a 100644
--- a/contents/html.ts
+++ b/contents/html.ts
@@ -1,6 +1,6 @@
 import {Content} from './content';
 import {html} from '../types';
 
-export class Html extends Content {
+export interface Html extends Content {
     html: html;
 }
diff --git a/contents/video.ts b/contents/video.ts
index ea61a2a5194442f912b47fdd36579e6456703caa..692fdc57a28d97aebbc889f8a2ee9ab1563c76ef 100644
--- a/contents/video.ts
+++ b/contents/video.ts
@@ -1,7 +1,7 @@
 import {Content} from './content';
 import {html} from '../types';
 
-export class Video extends Content {
+export interface Video extends Content {
     source: string;
     summary: html;
     subtitles: {label: string, lang: string, src: string}[];
diff --git a/epoc.ts b/epoc.ts
index 927252b97deef2d544de6e1e9827891f26c7d4a1..7fb51e073fc6dde28ff440712dde4cff1b43f71c 100644
--- a/epoc.ts
+++ b/epoc.ts
@@ -3,7 +3,7 @@ import {Content} from './contents/content';
 import {html, uid} from './types';
 import {Assessment, Question} from './contents/assessment';
 
-export class EpocMetadata {
+export interface EpocMetadata {
     lastModif : string;
     version : string;
     id: string;
@@ -19,13 +19,13 @@ export class EpocMetadata {
     download: string;
 }
 
-export class EpocLibrary extends EpocMetadata {
+export interface EpocLibrary extends EpocMetadata {
     downloading: boolean;
     downloaded: boolean;
     unzipping: boolean;
 }
 
-export class Epoc extends EpocMetadata {
+export interface Epoc extends EpocMetadata {
     certificateScore: number;
     parameters: Parameters;
     contents: Record<uid, Content>;
@@ -33,11 +33,11 @@ export class Epoc extends EpocMetadata {
     questions: Record<uid, Question>;
 }
 
-export class EpocRuntime extends Epoc {
+export interface EpocRuntime extends Epoc {
     assessments: Assessment[];
 }
 
-export class Chapter {
+export interface Chapter {
     id: uid;
     title: string;
     image?: string;
@@ -45,7 +45,7 @@ export class Chapter {
     contents: uid[];
 }
 
-export class ChapterRuntime extends Chapter {
+export interface ChapterRuntime extends Chapter {
     time: number;
     videoCount: number;
     assessmentCount: number;
@@ -55,7 +55,7 @@ export class ChapterRuntime extends Chapter {
     assessmentDone: boolean;
 }
 
-export class Parameters {
+export interface Parameters {
     chapterParameter?: string;
     easierScoring?: boolean;
     openQuestionButton?: string;