diff --git a/erpnext/www/lms/course.html b/erpnext/www/lms/course.html
index 182efab..5e2e393 100644
--- a/erpnext/www/lms/course.html
+++ b/erpnext/www/lms/course.html
@@ -10,7 +10,7 @@
 
 {% block content %}
 <div id="content-holder" data-type="{{current_content.content_type}}" data-content="{{ current_content.name }}" data-course="{{ current_course.name }}" data-program="{{ current_program }}">
-{% with current_content = current_content, next_content = next_content, course_name = current_course.name, program=current_program%}
+{% with quiz = quiz, current_content = current_content, next_content = next_content, course_name = course_name, program=current_program%}
 {% include "www/lms/templates/includes/" + current_content.content_type.lower() + ".html" %}
 {% endwith %}
 </div>
@@ -23,7 +23,7 @@
         padding-top: 3rem !important;
         padding-bottom: 1rem !important;
     }
-    
+
     .video-description-section {
         padding-top: 0em !important;
     }
diff --git a/erpnext/www/lms/course.py b/erpnext/www/lms/course.py
index 0276102..19e495f 100644
--- a/erpnext/www/lms/course.py
+++ b/erpnext/www/lms/course.py
@@ -1,19 +1,23 @@
 from __future__ import unicode_literals
+import erpnext.education.utils as utils
 import frappe
 
 
 def get_context(context):
     if frappe.form_dict['course']:
-        context.current_course = frappe.get_doc("Course", frappe.form_dict["course"])
         context.current_content = frappe.get_doc("Content", frappe.form_dict["content"])
+        context.course_name = frappe.form_dict["course"]
+        context.current_course = utils.get_contents_in_course(context.course_name)
         context.current_program = frappe.form_dict["program"]
         context.next_content = get_next_content(context)
+        if context.current_content.content_type == "Quiz":
+            context.questions = utils.get_quiz_as_dict(context.current_content.name)
 
 
 def get_next_content(context):
     if context.current_course:
-        course_data = [content_item.content for content_item in context.current_course.course_content]
-        try: 
+        course_data = [content.name for content in context.current_course]
+        try:
             return course_data[course_data.index(context.current_content.name) + 1]
         except IndexError:
             return None
\ No newline at end of file
diff --git a/erpnext/www/lms/templates/includes/quiz.html b/erpnext/www/lms/templates/includes/quiz.html
index 280a17b..8d20a26 100644
--- a/erpnext/www/lms/templates/includes/quiz.html
+++ b/erpnext/www/lms/templates/includes/quiz.html
@@ -1,13 +1,13 @@
-{% macro quiz(loop_index, question_id, question, options) %}
-<div class="question mt-4" id="question" data-question="{{ question_id }}">
-    <h5>{{ loop_index }}{{ question }}</h5>
+{% macro quiz(loop_index, question) %}
+<div class="question mt-4" id="question['question']" data-question="{{ question['id'] }}">
+    <h5>{{ loop_index }}{{ question['question'] }}</h5>
     <div class="options ml-2">
         <div class="form-check pb-1 hidden">
-            <input class="form-check-input" type="radio" name="{{ question_id }}" value="0" checked>
+            <input class="form-check-input" type="radio" name="{{ question['id'] }}" value="0" checked>
         </div>
-        {% for option in options %}
+        {% for option in question['options'] %}
         <div class="form-check pb-1">
-            <input class="form-check-input" type="radio" name="{{ question_id }}" id="{{loop_index}}-{{ option }}" value="{{ loop.index|str }}">
+            <input class="form-check-input" type="radio" name="{{ question['id'] }}" id="{{loop_index}}-{{ option }}" value="{{ option }}">
             <label class="form-check-label" for="{{loop_index}}-{{ option }}">
                 {{ option }}
             </label>
@@ -16,7 +16,6 @@
     </div>
 </div>
 {% endmacro %}
-
 <section class="quiz-section">
     <div class='container'>
         <div class="mt-3 row">
@@ -28,9 +27,8 @@
             <hr>
             <form id="quiz" name="{{ current_content.name }}">
                 <div id="quiz-body">
-                    {% for quiz_item in current_content.quiz %}
-                    {{ quiz(loop.index|str +". ", quiz_item.name, quiz_item.question, [ quiz_item.option_1, quiz_item.option_2,
-                    quiz_item.option_3, quiz_item.option_4]) }}
+                    {% for q in questions %}
+                    {{ quiz(loop.index|str +". ", q) }}
                     {% endfor %}
                 </div>
                 <div class="mt-3">
@@ -43,12 +41,12 @@
                             <h3>Your Score: <span id="result"></span></h3>
                         </div>
                         <div class="col-md-4 text-right">
-                                <a class='btn btn-outline-secondary' href="#">Previous</a>
-                                {% if next_content != None %}
-                                <a class='btn btn-primary' href="/lms/course?program={{ program }}&course={{ course_name }}&content={{ next_content }}">Next</a>
-                                {% else %}
-                                <a class='btn btn-primary' href="/lms/program?program={{ program }}">Finish Course</a>
-                                {% endif %}
+                            <a class='btn btn-outline-secondary' href="#">Previous</a>
+                            {% if next_content != None %}
+                            <a class='btn btn-primary' href="/lms/course?program={{ program }}&course={{ course_name }}&content={{ next_content }}">Next</a>
+                            {% else %}
+                            <a class='btn btn-primary' href="/lms/program?program={{ program }}">Finish Course</a>
+                            {% endif %}
                         </div>
                     </div>
                 </div>
