Index: src/Clients/Angular/finki-chattery/src/app/core/services/student-question.service.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/core/services/student-question.service.ts	(revision 53bebc0fa073095fb3dff178394d6e24cf28a08f)
+++ src/Clients/Angular/finki-chattery/src/app/core/services/student-question.service.ts	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -16,3 +16,15 @@
     return this.auth.selfUser?.student?.uid === answerResponse.student.uid;
   }
+
+  currentUserCanDeleteAnswer(answer: AnswerQuestionStateViewModel): boolean {
+    return this.auth.selfUser?.student?.uid === answer.student.uid;
+  }
+
+  currentUserCanNotDeleteAnswerBecauseMarkedCorrectEvenThoughHeIsTheAuthor(answer: AnswerQuestionStateViewModel): boolean {
+    return this.auth.selfUser?.student?.uid === answer.student.uid && answer.correctAnswer;
+  }
+
+  currentUserCanDeleteAnswerResponse(answerResponse: AnswerResponseQuestionStateViewModel): boolean {
+    return this.auth.selfUser?.student?.uid === answerResponse.student.uid;
+  }
 }
Index: src/Clients/Angular/finki-chattery/src/app/core/state/question-facade.service.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/core/state/question-facade.service.ts	(revision 53bebc0fa073095fb3dff178394d6e24cf28a08f)
+++ src/Clients/Angular/finki-chattery/src/app/core/state/question-facade.service.ts	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -15,4 +15,6 @@
 import {
   AnswerQuestion,
+  DeleteAnswer,
+  DeleteAnswerResponse,
   EditAnswerQuestion,
   EditAnswerResponse,
@@ -101,4 +103,12 @@
   }
 
+  public deleteAnswerResponse(answerUid: string, questionUid: string, answerResponseUid: string): void {
+    this.dispatchEffect(new DeleteAnswerResponse(questionUid, answerUid, answerResponseUid));
+  }
+
+  public deleteAnswer(answerUid: string, questionUid: string): void {
+    this.dispatchEffect(new DeleteAnswer(questionUid, answerUid));
+  }
+
   public fetchQuestion(questionUid: string): void {
     this.dispatchEffect(new GetQuestionState(questionUid));
Index: src/Clients/Angular/finki-chattery/src/app/core/state/question-state/question.actions.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/core/state/question-state/question.actions.ts	(revision 53bebc0fa073095fb3dff178394d6e24cf28a08f)
+++ src/Clients/Angular/finki-chattery/src/app/core/state/question-state/question.actions.ts	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -33,7 +33,35 @@
   EditAnswerResponse = '[Question] EditAnswerResponse',
   EditAnswerResponseSuccess = '[Question] EditAnswerResponse Success',
+  DeleteAnswer = '[Question] DeleteAnswer',
+  DeleteAnswerSuccess = '[Question] DeleteAnswer Success',
+  DeleteAnswerResponse = '[Question] DeleteAnswerResponse',
+  DeleteAnswerResponseSuccess = '[Question] DeleteAnswerResponse Success',
   EffectStartedWorking = '[Question] Effect Started Working',
   EffectFinishedWorking = '[Question] Effect Finished Working',
   EffectFinishedWorkingError = '[Question] Effect Finished Working error'
+}
+
+export class DeleteAnswer implements Action {
+  readonly type = QuestionActionTypes.DeleteAnswer;
+
+  constructor(public questionUid: string, public answerUid: string) {}
+}
+
+export class DeleteAnswerSuccess implements Action {
+  readonly type = QuestionActionTypes.DeleteAnswerSuccess;
+
+  constructor(public payload: string) {}
+}
+
+export class DeleteAnswerResponse implements Action {
+  readonly type = QuestionActionTypes.DeleteAnswerResponse;
+
+  constructor(public questionUid: string, public answerUid: string, public answerResponseUid: string) {}
+}
+
+export class DeleteAnswerResponseSuccess implements Action {
+  readonly type = QuestionActionTypes.DeleteAnswerResponseSuccess;
+
+  constructor(public payload: string, public answerUid: string) {}
 }
 
@@ -187,4 +215,6 @@
   | EditAnswerQuestionSuccess
   | EditAnswerResponseSuccess
+  | DeleteAnswerSuccess
+  | DeleteAnswerResponseSuccess
   | EffectStartedWorking
   | EffectFinishedWorking
Index: src/Clients/Angular/finki-chattery/src/app/core/state/question-state/question.effects.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/core/state/question-state/question.effects.ts	(revision 53bebc0fa073095fb3dff178394d6e24cf28a08f)
+++ src/Clients/Angular/finki-chattery/src/app/core/state/question-state/question.effects.ts	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -19,4 +19,8 @@
   AnswerQuestion,
   AnswerQuestionSuccess,
+  DeleteAnswer,
+  DeleteAnswerResponse,
+  DeleteAnswerResponseSuccess,
+  DeleteAnswerSuccess,
   EditAnswerQuestion,
   EditAnswerQuestionSuccess,
@@ -236,3 +240,31 @@
     );
   });
+
+  deleteResponseToAnswer$ = createEffect(() => {
+    return this.actions$.pipe(
+      ofType<DeleteAnswerResponse>(QuestionActionTypes.DeleteAnswerResponse),
+      mergeMap((action) => {
+        return this.api
+          .delete<string>(`v1/questions/${action.questionUid}/answers/${action.answerUid}/answerresponses/${action.answerResponseUid}`)
+          .pipe(
+            tap((state) => this.notification.successNotification('success-delete-answer-response')),
+            switchMap((state) => [new DeleteAnswerResponseSuccess(state, action.answerUid), new EffectFinishedWorking()]),
+            catchError((err) => [new EffectFinishedWorkingError(err)])
+          );
+      })
+    );
+  });
+
+  deleteAnswer$ = createEffect(() => {
+    return this.actions$.pipe(
+      ofType<DeleteAnswer>(QuestionActionTypes.DeleteAnswer),
+      mergeMap((action) => {
+        return this.api.delete<string>(`v1/questions/${action.questionUid}/answers/${action.answerUid}`).pipe(
+          tap((state) => this.notification.successNotification('success-delete-answer')),
+          switchMap((state) => [new DeleteAnswerSuccess(state), new EffectFinishedWorking()]),
+          catchError((err) => [new EffectFinishedWorkingError(err)])
+        );
+      })
+    );
+  });
 }
Index: src/Clients/Angular/finki-chattery/src/app/core/state/question-state/question.reducers.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/core/state/question-state/question.reducers.ts	(revision 53bebc0fa073095fb3dff178394d6e24cf28a08f)
+++ src/Clients/Angular/finki-chattery/src/app/core/state/question-state/question.reducers.ts	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -162,4 +162,43 @@
       };
     }
+    case QuestionActionTypes.DeleteAnswerSuccess: {
+      if (state.question) {
+        return {
+          ...state,
+          question: {
+            ...state.question,
+            answers: state.question.answers.filter((x) => x.uid !== action.payload)
+          }
+        };
+      }
+
+      return {
+        ...state
+      };
+    }
+    case QuestionActionTypes.DeleteAnswerResponseSuccess: {
+      if (state.question) {
+        return {
+          ...state,
+          question: {
+            ...state.question,
+            answers: state.question.answers.map((x) => {
+              if (x.uid === action.answerUid) {
+                return {
+                  ...x,
+                  answerResponses: x.answerResponses.filter((y) => y.uid !== action.payload)
+                };
+              }
+
+              return x;
+            })
+          }
+        };
+      }
+
+      return {
+        ...state
+      };
+    }
     case QuestionActionTypes.AnswerQuestionSuccess: {
       if (state.question) {
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/components/components.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/components/components.ts	(revision 53bebc0fa073095fb3dff178394d6e24cf28a08f)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/components/components.ts	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -1,3 +1,4 @@
 import { ButtonComponent } from './generic/button/button.component';
+import { DeleteConfirmDialogComponent } from './generic/delete-confirm-dialog/delete-confirm-dialog.component';
 import { FileUploadComponent } from './generic/file-upload/file-upload.component';
 import { FormErrorComponent } from './generic/form-error/form-error.component';
@@ -32,4 +33,5 @@
   AnswerQuestionComponent,
   EditAnswerDialogComponent,
-  EditAnswerResponseDialogComponent
+  EditAnswerResponseDialogComponent,
+  DeleteConfirmDialogComponent
 ];
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/delete-confirm-dialog/delete-confirm-dialog.component.html
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/delete-confirm-dialog/delete-confirm-dialog.component.html	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/delete-confirm-dialog/delete-confirm-dialog.component.html	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -0,0 +1,10 @@
+<h1 mat-dialog-title>{{ title | translate }}</h1>
+<mat-dialog-content> </mat-dialog-content>
+<mat-dialog-actions>
+  <app-button class="margin-right-sm" [buttonType]="ButtonType.Basic" (action)="dialogRef.close()">
+    {{ 'close-button' | translate }}
+  </app-button>
+  <app-button [buttonType]="ButtonType.Warn" (action)="dialogRef.close(true)">
+    {{ 'delete-button' | translate }}
+  </app-button>
+</mat-dialog-actions>
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/delete-confirm-dialog/delete-confirm-dialog.component.spec.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/delete-confirm-dialog/delete-confirm-dialog.component.spec.ts	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/delete-confirm-dialog/delete-confirm-dialog.component.spec.ts	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { DeleteConfirmDialogComponent } from './delete-confirm-dialog.component';
+
+describe('DeleteConfirmDialogComponent', () => {
+  let component: DeleteConfirmDialogComponent;
+  let fixture: ComponentFixture<DeleteConfirmDialogComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      declarations: [ DeleteConfirmDialogComponent ]
+    })
+    .compileComponents();
+  });
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(DeleteConfirmDialogComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/delete-confirm-dialog/delete-confirm-dialog.component.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/delete-confirm-dialog/delete-confirm-dialog.component.ts	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/delete-confirm-dialog/delete-confirm-dialog.component.ts	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -0,0 +1,17 @@
+import { Component, OnInit } from '@angular/core';
+import { MatDialogRef } from '@angular/material/dialog';
+import { ButtonType } from '../button/button.models';
+
+@Component({
+  selector: 'app-delete-confirm-dialog',
+  templateUrl: './delete-confirm-dialog.component.html',
+  styleUrls: ['./delete-confirm-dialog.component.scss']
+})
+export class DeleteConfirmDialogComponent implements OnInit {
+  title = 'delete-basic-title';
+  ButtonType = ButtonType;
+
+  constructor(public dialogRef: MatDialogRef<DeleteConfirmDialogComponent>) {}
+
+  ngOnInit(): void {}
+}
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/question-preview/question-preview.component.html
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/question-preview/question-preview.component.html	(revision 53bebc0fa073095fb3dff178394d6e24cf28a08f)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/question-preview/question-preview.component.html	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -48,8 +48,14 @@
               {{ answerResponse.createdOn | momentDate: 'LL' }}
               <span
-                class="cursor text-bold"
+                class="cursor text-bold padding-right-sm"
                 *ngIf="studentQuestion.currentUserCanEditAnswerResponse(answerResponse)"
                 (click)="editAnswerResponse(question.uid, answer.uid, answerResponse.uid, answerResponse.text)"
                 >{{ 'question-preview-edit-answer-response' | translate }}</span
+              >
+              <span
+                class="cursor text-bold"
+                *ngIf="studentQuestion.currentUserCanDeleteAnswerResponse(answerResponse)"
+                (click)="deleteAnswerResponse(question.uid, answer.uid, answerResponse.uid)"
+                >{{ 'delete-button' | translate }}</span
               >
               <hr />
@@ -68,4 +74,13 @@
           >{{ 'question-preview-edit-answer' | translate }}</app-button
         >
+        <app-button
+          *ngIf="studentQuestion.currentUserCanDeleteAnswer(answer)"
+          [disabled]="studentQuestion.currentUserCanNotDeleteAnswerBecauseMarkedCorrectEvenThoughHeIsTheAuthor(answer)"
+          matTooltip="{{ 'question-preview-can-not-delete-because-marked-correct' | translate }}"
+          [matTooltipDisabled]="!studentQuestion.currentUserCanNotDeleteAnswerBecauseMarkedCorrectEvenThoughHeIsTheAuthor(answer)"
+          (action)="deleteAnswer(question.uid, answer.uid)"
+          [buttonType]="ButtonType.Basic"
+          >{{ 'delete-button' | translate }}</app-button
+        >
       </mat-card-actions>
     </mat-card>
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/question-preview/question-preview.component.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/question-preview/question-preview.component.ts	(revision 53bebc0fa073095fb3dff178394d6e24cf28a08f)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/components/question/question-preview/question-preview.component.ts	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -58,3 +58,19 @@
     this.dialog.editResponseToAnswer(questionUid, answerUid, answerResponseUid, text);
   }
+
+  deleteAnswer(questionUid: string, answerUid: string): void {
+    this.dialog.confirmDelete().subscribe((canDelete) => {
+      if (canDelete) {
+        this.questionFacade.deleteAnswer(answerUid, questionUid);
+      }
+    });
+  }
+
+  deleteAnswerResponse(questionUid: string, answerUid: string, answerResponseUid: string): void {
+    this.dialog.confirmDelete().subscribe((canDelete) => {
+      if (canDelete) {
+        this.questionFacade.deleteAnswerResponse(answerUid, questionUid, answerResponseUid);
+      }
+    });
+  }
 }
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/services/shared-dialog.service.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/services/shared-dialog.service.ts	(revision 53bebc0fa073095fb3dff178394d6e24cf28a08f)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/services/shared-dialog.service.ts	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -2,4 +2,5 @@
 import { MatDialog, MatDialogRef } from '@angular/material/dialog';
 import { Observable } from 'rxjs';
+import { DeleteConfirmDialogComponent } from '../components/generic/delete-confirm-dialog/delete-confirm-dialog.component';
 import { EditAnswerDialogComponent } from '../components/question/edit-answer-dialog/edit-answer-dialog.component';
 // tslint:disable-next-line: max-line-length
@@ -54,3 +55,17 @@
     return dialogRef.afterClosed();
   }
+
+  public confirmDelete(title?: string): Observable<any> {
+    let dialogRef: MatDialogRef<DeleteConfirmDialogComponent>;
+    dialogRef = this.dialog.open(DeleteConfirmDialogComponent, {
+      width: '650px',
+      height: 'auto'
+    });
+
+    if (title) {
+      dialogRef.componentInstance.title = title;
+    }
+
+    return dialogRef.afterClosed();
+  }
 }
Index: src/Clients/Angular/finki-chattery/src/assets/translations/en.json
===================================================================
--- src/Clients/Angular/finki-chattery/src/assets/translations/en.json	(revision 53bebc0fa073095fb3dff178394d6e24cf28a08f)
+++ src/Clients/Angular/finki-chattery/src/assets/translations/en.json	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -73,4 +73,9 @@
   "question-preview-edit-answer": "Edit answer",
   "question-preview-edit-answer-response": "Edit response",
+  "success-delete-answer-response": "Successfully deleted answer response",
+  "success-delete-answer": "Successfully deleted answer",
+  "delete-button": "Delete",
+  "delete-basic-title": "Are you sure you want to delete this?",
+  "question-preview-can-not-delete-because-marked-correct": "Even though you are the author of the answer, it can not be deleted because it's marked as correct by the user who asked the question",
   "StudentDoesNotOwnQuestion": "You do not own this question",
   "AnswerAlreadyUpvoted": "You have already upvoted this answer",
Index: src/FinkiChattery/FinkiChattery.Api/Controllers/v1/AnswerResponsesController.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Api/Controllers/v1/AnswerResponsesController.cs	(revision 53bebc0fa073095fb3dff178394d6e24cf28a08f)
+++ src/FinkiChattery/FinkiChattery.Api/Controllers/v1/AnswerResponsesController.cs	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -39,4 +39,12 @@
             return Ok(answerResponse.ToAnswerResponseQuestionStateResponse());
         }
+
+        [HttpDelete("{answerResponseUid:Guid}")]
+        [Authorize(AuthenticationSchemes = IdentityServerAuthenticationDefaults.AuthenticationScheme, Policy = AuthenticationPolicy.Student)]
+        public async Task<IActionResult> DeleteAnswerResponse([FromRoute] Guid questionUid, [FromRoute] Guid answerUid, [FromRoute] Guid answerResponseUid)
+        {
+            var uid = await MediatorService.SendAsync(new DeleteAnswerResponseCommand(questionUid, answerUid, answerResponseUid));
+            return Ok(uid);
+        }
     }
 }
Index: src/FinkiChattery/FinkiChattery.Api/Controllers/v1/AnswersController.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Api/Controllers/v1/AnswersController.cs	(revision 53bebc0fa073095fb3dff178394d6e24cf28a08f)
+++ src/FinkiChattery/FinkiChattery.Api/Controllers/v1/AnswersController.cs	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -40,4 +40,12 @@
         }
 
+        [HttpDelete("{answerUid:Guid}")]
+        [Authorize(AuthenticationSchemes = IdentityServerAuthenticationDefaults.AuthenticationScheme, Policy = AuthenticationPolicy.Student)]
+        public async Task<IActionResult> DeleteAnswer([FromRoute] Guid questionUid, [FromRoute] Guid answerUid)
+        {
+            var uid = await MediatorService.SendAsync(new DeleteAnswerCommand(questionUid, answerUid));
+            return Ok(uid);
+        }
+
         [HttpPut("{answerUid:Guid}/correct")]
         [Authorize(AuthenticationSchemes = IdentityServerAuthenticationDefaults.AuthenticationScheme, Policy = AuthenticationPolicy.Student)]
Index: src/FinkiChattery/FinkiChattery.Commands/Questioning/DeleteAnswer/DeleteAnswerCommand.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Commands/Questioning/DeleteAnswer/DeleteAnswerCommand.cs	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
+++ src/FinkiChattery/FinkiChattery.Commands/Questioning/DeleteAnswer/DeleteAnswerCommand.cs	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -0,0 +1,47 @@
+﻿using FinkiChattery.Common.Mediator.Contracs;
+using FinkiChattery.Common.Mediator.Interfaces;
+using FinkiChattery.Common.User;
+using FinkiChattery.Persistence.UnitOfWork;
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace FinkiChattery.Commands.Questioning
+{
+    public class DeleteAnswerCommand : ICommand<Guid>
+    {
+        public DeleteAnswerCommand(Guid questionUid, Guid answerUid)
+        {
+            QuestionUid = questionUid;
+            AnswerUid = answerUid;
+        }
+
+        public Guid QuestionUid { get; }
+        public Guid AnswerUid { get; }
+    }
+
+    public class DeleteAnswerHandler : ICommandHandler<DeleteAnswerCommand, Guid>
+    {
+        public DeleteAnswerHandler(IUnitOfWork unitOfWork, ICurrentUser currentUser, IEventService eventService)
+        {
+            UnitOfWork = unitOfWork;
+            CurrentUser = currentUser;
+            EventService = eventService;
+        }
+
+        public IUnitOfWork UnitOfWork { get; }
+        public ICurrentUser CurrentUser { get; }
+        public IEventService EventService { get; }
+
+        public async Task<Guid> Handle(DeleteAnswerCommand request, CancellationToken cancellationToken)
+        {
+            var answer = await UnitOfWork.Answers.GetByUidAsync(request.AnswerUid);
+
+            UnitOfWork.Answers.Delete(answer);
+
+            await UnitOfWork.SaveAsync();
+
+            return answer.Uid;
+        }
+    }
+}
Index: src/FinkiChattery/FinkiChattery.Commands/Questioning/DeleteAnswer/DeleteAnswerValidator.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Commands/Questioning/DeleteAnswer/DeleteAnswerValidator.cs	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
+++ src/FinkiChattery/FinkiChattery.Commands/Questioning/DeleteAnswer/DeleteAnswerValidator.cs	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -0,0 +1,20 @@
+﻿using FinkiChattery.Commands.Questioning.Validators;
+using FinkiChattery.Commands.Questioning.Validators.Contracts;
+using FinkiChattery.Common.User;
+using FinkiChattery.Persistence.UnitOfWork;
+using FluentValidation;
+
+namespace FinkiChattery.Commands.Questioning
+{
+    public class DeleteAnswerValidator : AbstractValidator<DeleteAnswerCommand>
+    {
+        public DeleteAnswerValidator(IUnitOfWork unitOfWork, ICurrentUser currentUser)
+        {
+            CascadeMode = CascadeMode.Stop;
+
+            RuleFor(x => new AnswerInQuestionWithUidExistsDto(x.QuestionUid, x.AnswerUid)).SetValidator(new AnswerInQuestionWithUidExists(unitOfWork));
+            RuleFor(x => x.AnswerUid).SetValidator(new StudentIsOwnerOfAnswer(unitOfWork, currentUser));
+            RuleFor(x => x.AnswerUid).SetValidator(new AnswerIsNotAlreadyMarkedAsCorrect(unitOfWork));
+        }
+    }
+}
Index: src/FinkiChattery/FinkiChattery.Commands/Questioning/DeleteAnswerResponse/DeleteAnswerResponseCommand.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Commands/Questioning/DeleteAnswerResponse/DeleteAnswerResponseCommand.cs	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
+++ src/FinkiChattery/FinkiChattery.Commands/Questioning/DeleteAnswerResponse/DeleteAnswerResponseCommand.cs	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -0,0 +1,46 @@
+﻿using FinkiChattery.Common.Mediator.Contracs;
+using FinkiChattery.Common.User;
+using FinkiChattery.Persistence.UnitOfWork;
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace FinkiChattery.Commands.Questioning
+{
+    public class DeleteAnswerResponseCommand : ICommand<Guid>
+    {
+        public DeleteAnswerResponseCommand(Guid questionUid, Guid answerUid, Guid answerResponseUid)
+        {
+            QuestionUid = questionUid;
+            AnswerUid = answerUid;
+            AnswerResponseUid = answerResponseUid;
+        }
+
+        public Guid QuestionUid { get; }
+        public Guid AnswerUid { get; }
+        public Guid AnswerResponseUid { get; }
+    }
+
+    public class DeleteAnswerResponseHandler : ICommandHandler<DeleteAnswerResponseCommand, Guid>
+    {
+        public DeleteAnswerResponseHandler(IUnitOfWork unitOfWork, ICurrentUser currentUser)
+        {
+            UnitOfWork = unitOfWork;
+            CurrentUser = currentUser;
+        }
+
+        public IUnitOfWork UnitOfWork { get; }
+        public ICurrentUser CurrentUser { get; }
+
+        public async Task<Guid> Handle(DeleteAnswerResponseCommand request, CancellationToken cancellationToken)
+        {
+            var answerResponse = await UnitOfWork.AnswerResponses.GetByUidAsync(request.AnswerResponseUid);
+
+            UnitOfWork.AnswerResponses.Delete(answerResponse);
+
+            await UnitOfWork.SaveAsync();
+
+            return answerResponse.Uid;
+        }
+    }
+}
Index: src/FinkiChattery/FinkiChattery.Commands/Questioning/DeleteAnswerResponse/DeleteAnswerResponseValidator.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Commands/Questioning/DeleteAnswerResponse/DeleteAnswerResponseValidator.cs	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
+++ src/FinkiChattery/FinkiChattery.Commands/Questioning/DeleteAnswerResponse/DeleteAnswerResponseValidator.cs	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -0,0 +1,19 @@
+﻿using FinkiChattery.Commands.Questioning.Validators;
+using FinkiChattery.Commands.Questioning.Validators.Contracts;
+using FinkiChattery.Common.User;
+using FinkiChattery.Persistence.UnitOfWork;
+using FluentValidation;
+
+namespace FinkiChattery.Commands.Questioning
+{
+    public class DeleteAnswerResponseValidator : AbstractValidator<DeleteAnswerResponseCommand>
+    {
+        public DeleteAnswerResponseValidator(IUnitOfWork unitOfWork, ICurrentUser currentUser)
+        {
+            CascadeMode = CascadeMode.Stop;
+
+            RuleFor(x => new AnswerInQuestionWithUidExistsDto(x.QuestionUid, x.AnswerUid)).SetValidator(new AnswerInQuestionWithUidExists(unitOfWork));
+            RuleFor(x => x.AnswerResponseUid).SetValidator(new StudentIsOwnerOfAnswerResponse(unitOfWork, currentUser));
+        }
+    }
+}
Index: src/FinkiChattery/FinkiChattery.Database/dbo/Tables/AnswerResponse/AnswerResponse.sql
===================================================================
--- src/FinkiChattery/FinkiChattery.Database/dbo/Tables/AnswerResponse/AnswerResponse.sql	(revision 53bebc0fa073095fb3dff178394d6e24cf28a08f)
+++ src/FinkiChattery/FinkiChattery.Database/dbo/Tables/AnswerResponse/AnswerResponse.sql	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -7,5 +7,5 @@
     [CreatedOn] SMALLDATETIME    NOT NULL,
     CONSTRAINT [PK_AnswerResponse] PRIMARY KEY CLUSTERED ([Id] ASC),
-    CONSTRAINT [FK_AnswerResponse_Answer_AnswerFk] FOREIGN KEY ([AnswerFk]) REFERENCES [dbo].[Answer] ([Id]),
+    CONSTRAINT [FK_AnswerResponse_Answer_AnswerFk] FOREIGN KEY ([AnswerFk]) REFERENCES [dbo].[Answer] ([Id]) ON DELETE CASCADE,
     CONSTRAINT [FK_AnswerResponse_Student_AnswerFk] FOREIGN KEY ([StudentFk]) REFERENCES [dbo].[Student] ([Id])
 );
Index: src/FinkiChattery/FinkiChattery.Database/dbo/Tables/Vote/Vote.sql
===================================================================
--- src/FinkiChattery/FinkiChattery.Database/dbo/Tables/Vote/Vote.sql	(revision 53bebc0fa073095fb3dff178394d6e24cf28a08f)
+++ src/FinkiChattery/FinkiChattery.Database/dbo/Tables/Vote/Vote.sql	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -6,5 +6,5 @@
     [VoteType] TINYINT           NOT NULL, 
     CONSTRAINT [PK_Vote] PRIMARY KEY CLUSTERED ([Id] ASC),
-    CONSTRAINT [FK_Vote_Answer_AnswerFk] FOREIGN KEY ([AnswerFk]) REFERENCES [dbo].[Answer] ([Id]),
+    CONSTRAINT [FK_Vote_Answer_AnswerFk] FOREIGN KEY ([AnswerFk]) REFERENCES [dbo].[Answer] ([Id]) ON DELETE CASCADE,
     CONSTRAINT [FK_Vote_Student_StudentFk] FOREIGN KEY ([StudentFk]) REFERENCES [dbo].[Student] ([Id])
 );
Index: src/FinkiChattery/FinkiChattery.Persistence/Configurations/AnswerResponseConfig.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Persistence/Configurations/AnswerResponseConfig.cs	(revision 53bebc0fa073095fb3dff178394d6e24cf28a08f)
+++ src/FinkiChattery/FinkiChattery.Persistence/Configurations/AnswerResponseConfig.cs	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -27,5 +27,5 @@
             builder.Property(x => x.CreatedOn).HasColumnName(@"CreatedOn").HasColumnType("smalldatetime").IsRequired();
 
-            builder.HasOne(x => x.Answer).WithMany(x => x.AnswerResponses).HasForeignKey(x => x.AnswerFk).OnDelete(DeleteBehavior.Restrict);
+            builder.HasOne(x => x.Answer).WithMany(x => x.AnswerResponses).HasForeignKey(x => x.AnswerFk).OnDelete(DeleteBehavior.Cascade);
             builder.HasOne(x => x.Student).WithMany().HasForeignKey(x => x.StudentFk).OnDelete(DeleteBehavior.Restrict);
         }
Index: src/FinkiChattery/FinkiChattery.Persistence/Configurations/VoteConfig.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Persistence/Configurations/VoteConfig.cs	(revision 53bebc0fa073095fb3dff178394d6e24cf28a08f)
+++ src/FinkiChattery/FinkiChattery.Persistence/Configurations/VoteConfig.cs	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -22,5 +22,5 @@
 
             builder.HasOne(x => x.Student).WithMany().HasForeignKey(x => x.StudentFk).OnDelete(DeleteBehavior.Restrict);
-            builder.HasOne(x => x.Answer).WithMany(x => x.Votes).HasForeignKey(x => x.AnswerFk).OnDelete(DeleteBehavior.Restrict);
+            builder.HasOne(x => x.Answer).WithMany(x => x.Votes).HasForeignKey(x => x.AnswerFk).OnDelete(DeleteBehavior.Cascade);
         }
     }
Index: src/FinkiChattery/FinkiChattery.Persistence/Repositories/Base/IRepository.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Persistence/Repositories/Base/IRepository.cs	(revision 53bebc0fa073095fb3dff178394d6e24cf28a08f)
+++ src/FinkiChattery/FinkiChattery.Persistence/Repositories/Base/IRepository.cs	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -13,4 +13,6 @@
         Task<T> GetByIdAsync(int id);
 
+        void Delete(T entity);
+
         void Add(T entity);
     }
Index: src/FinkiChattery/FinkiChattery.Persistence/Repositories/Base/Repository.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Persistence/Repositories/Base/Repository.cs	(revision 53bebc0fa073095fb3dff178394d6e24cf28a08f)
+++ src/FinkiChattery/FinkiChattery.Persistence/Repositories/Base/Repository.cs	(revision 6165fd0e014674d95695cc6b2f6b5aae618305d5)
@@ -38,4 +38,9 @@
             return await All().FirstOrDefaultAsync(f => f.Uid == uid);
         }
+
+        public void Delete(T entity)
+        {
+            DbSet.Remove(entity);
+        }
     }
 }
