diff --git a/erpnext/education/doctype/quiz/quiz.py b/erpnext/education/doctype/quiz/quiz.py
index a7e5541..fdff16d 100644
--- a/erpnext/education/doctype/quiz/quiz.py
+++ b/erpnext/education/doctype/quiz/quiz.py
@@ -9,11 +9,22 @@
 class Quiz(Document):
 
 
+	def validate_quiz_attempts(self, enrollment, quiz_name):
+		print(enrollment, quiz_name)
+		if self.max_attempts > 0:
+			try:
+				if len(frappe.get_all("Quiz Activity", {'enrollment': enrollment.name, 'quiz': quiz_name})) >= self.max_attempts:
+					frappe.throw('Maximum attempts reached!')
+			except:
+				pass
+
+
 	def get_quiz(self):
 		pass
 
 
-	def evaluate(self, response_dict):
+	def evaluate(self, response_dict, enrollment, quiz_name):
+		self.validate_quiz_attempts(enrollment, quiz_name)
 		self.get_questions()
 		answers = {q.name:q.get_answer() for q in self.get_questions()}
 		correct_answers = {question: (answers[question] == response_dict[question]) for question in response_dict.keys()}
diff --git a/erpnext/education/doctype/quiz_result/quiz_result.json b/erpnext/education/doctype/quiz_result/quiz_result.json
index cb5ba1b..c4a2385 100644
--- a/erpnext/education/doctype/quiz_result/quiz_result.json
+++ b/erpnext/education/doctype/quiz_result/quiz_result.json
@@ -86,7 +86,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "result", 
+   "fieldname": "quiz_result", 
    "fieldtype": "Select", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
@@ -123,8 +123,8 @@
  "issingle": 0, 
  "istable": 1, 
  "max_attachments": 0, 
- "modified": "2018-10-22 03:38:29.007162", 
- "modified_by": "Administrator", 
+ "modified": "2018-10-22 15:43:00.224162", 
+ "modified_by": "jess@education.com", 
  "module": "Education", 
  "name": "Quiz Result", 
  "name_case": "", 
diff --git a/erpnext/education/doctype/quiz_result/quiz_result.py b/erpnext/education/doctype/quiz_result/quiz_result.py
index 4a6323c..a4fd9f0 100644
--- a/erpnext/education/doctype/quiz_result/quiz_result.py
+++ b/erpnext/education/doctype/quiz_result/quiz_result.py
@@ -6,5 +6,5 @@
 import frappe
 from frappe.model.document import Document
 
-class quiz_result(Document):
+class QuizResult(Document):
 	pass
diff --git a/erpnext/education/utils.py b/erpnext/education/utils.py
index b0bf50e..3962758 100644
--- a/erpnext/education/utils.py
+++ b/erpnext/education/utils.py
@@ -43,6 +43,7 @@
 
 	return existing[0] if existing else None
 
+
 def validate_duplicate_student(students):
 	unique_students= []
 	for stud in students:
@@ -64,20 +65,19 @@
 	quiz_response = json.loads(quiz_response)
 	quiz_name = kwargs.get('quiz')
 	course_name = kwargs.get('course')
+	enrollment = get_course_enrollment(course_name, frappe.session.user)
 	try:
 		quiz = frappe.get_doc("Quiz", quiz_name)
-		answers, score = quiz.evaluate(quiz_response)
-		add_quiz_activity(course_name, quiz_name, score, answers, quiz_response)
+		answers, score = quiz.evaluate(quiz_response, enrollment, quiz_name)
+		add_quiz_activity(enrollment, quiz_name, score, answers, quiz_response)
 		return score
 	except frappe.DoesNotExistError:
 		frappe.throw("Quiz {0} does not exist".format(quiz_name))
 		return None
 
 
-def add_quiz_activity(course, quiz, score, answers, quiz_response):
-	print(course, quiz, result, score)
-	enrollment = get_course_enrollment(course, frappe.session.user)
-	answer_list = list(answers.values())
+def add_quiz_activity(enrollment, quiz, score, answers, quiz_response):
+	print(quiz, answers, score)
 	if not enrollment:
 		frappe.throw("The user is not enrolled for the course {course}".format(course=course))
 	activity = frappe.get_doc({
@@ -85,13 +85,15 @@
 		"enrollment": enrollment.name,
 		"quiz": quiz,
 		"score": score,
-		"date": frappe.getdate()
+		"date": frappe.utils.datetime.datetime.now()
 		})
-	for i in len(quiz_response):
+	for question in quiz_response.keys():
 		activity.append("result",
 			{
-			"selected_option": quiz_response[i],
-			"result": answer_list[i]})
+			"question": question,
+			"selected_option": quiz_response[question],
+			"quiz_result": 'Correct' if answers[question] else 'Wrong'
+			})
 	activity.save()
 	frappe.db.commit()
 
