diff --git a/InteractionPrototype.csv b/InteractionPrototype.csv
index 3b1ad2fb7acb2333203a64214a98d595c03ba7e7..c54337061480f2e29f726e995b0e53ca0f5bf810 100644
--- a/InteractionPrototype.csv
+++ b/InteractionPrototype.csv
@@ -1,62 +1,63 @@
-33030,56,5,603,NULL,window-focus,"User looking at 09.03.01 - Doubly Linked Lists""""",8/29/2016 15:17,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL,
-33031,56,5,603,982,jsav-forward,"{"ev_num":0,"currentStep":9}",8/29/2016 15:19,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL,
-33032,56,5,603,982,jsav-forward,"{"ev_num":1,"currentStep":9}",8/29/2016 15:19,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL,
-33033,56,5,603,982,jsav-forward,"{"ev_num":2,"currentStep":9}",8/29/2016 15:19,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL,
-33034,56,5,603,982,jsav-forward,"{"ev_num":3,"currentStep":9}",8/29/2016 15:19,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL,
-33035,56,5,603,982,jsav-forward,"{"ev_num":4,"currentStep":9}",8/29/2016 15:19,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL,
-33036,56,5,603,982,jsav-forward,"{"ev_num":5,"currentStep":9}",8/29/2016 15:19,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL,
-33037,56,5,603,982,jsav-forward,"{"ev_num":6,"currentStep":9}",8/29/2016 15:19,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL,
-33038,56,5,603,982,jsav-forward,"{"ev_num":7,"currentStep":9}",8/29/2016 15:19,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL,
-33039,56,5,603,982,jsav-forward,"{"ev_num":8,"currentStep":9}",8/29/2016 15:19,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL,
-33042,56,5,603,983,jsav-forward,"{"ev_num":9,"currentStep":7}",8/29/2016 15:19,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL,
-33043,56,5,603,983,jsav-forward,"{"ev_num":10,"currentStep":7}",8/29/2016 15:20,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL,
-33044,56,5,603,983,jsav-forward,"{"ev_num":11,"currentStep":7}",8/29/2016 15:20,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL,
-33045,56,5,603,983,jsav-forward,"{"ev_num":12,"currentStep":7}",8/29/2016 15:20,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL,
-33046,56,5,603,983,jsav-forward,"{"ev_num":13,"currentStep":7}",8/29/2016 15:20,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL,
-33047,56,5,603,983,jsav-forward,"{"ev_num":14,"currentStep":7}",8/29/2016 15:20,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL,
-33048,56,5,603,983,jsav-forward,"{"ev_num":15,"currentStep":7}",8/29/2016 15:20,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL,
-33050,56,5,603,984,jsav-forward,"{"ev_num":16,"currentStep":8}",8/29/2016 15:20,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:21,8/29/2016 15:21,NULL,NULL,NULL,NULL,
-33051,56,5,603,984,jsav-forward,"{"ev_num":17,"currentStep":8}",8/29/2016 15:20,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:21,8/29/2016 15:21,NULL,NULL,NULL,NULL,
-33052,56,5,603,984,jsav-forward,"{"ev_num":18,"currentStep":8}",8/29/2016 15:20,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:21,8/29/2016 15:21,NULL,NULL,NULL,NULL,
-33053,56,5,603,984,jsav-forward,"{"ev_num":19,"currentStep":8}",8/29/2016 15:20,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:21,8/29/2016 15:21,NULL,NULL,NULL,NULL,
-33054,56,5,603,984,jsav-forward,"{"ev_num":20,"currentStep":8}",8/29/2016 15:20,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:21,8/29/2016 15:21,NULL,NULL,NULL,NULL,
-33055,56,5,603,984,jsav-forward,"{"ev_num":21,"currentStep":8}",8/29/2016 15:20,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:21,8/29/2016 15:21,NULL,NULL,NULL,NULL,
-33056,56,5,603,984,jsav-forward,"{"ev_num":22,"currentStep":8}",8/29/2016 15:20,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:21,8/29/2016 15:21,NULL,NULL,NULL,NULL,
-33057,56,5,603,985,jsav-forward,"{"ev_num":23,"currentStep":4}",8/29/2016 15:20,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:21,8/29/2016 15:21,NULL,NULL,NULL,NULL,
-33058,56,5,603,985,jsav-forward,"{"ev_num":24,"currentStep":4}",8/29/2016 15:20,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:21,8/29/2016 15:21,NULL,NULL,NULL,NULL,
-33059,56,5,603,985,jsav-forward,"{"ev_num":25,"currentStep":4}",8/29/2016 15:20,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:21,8/29/2016 15:21,NULL,NULL,NULL,NULL,
-33060,56,5,603,985,jsav-forward,"{"ev_num":26,"currentStep":4}",8/29/2016 15:20,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:21,8/29/2016 15:21,NULL,NULL,NULL,NULL,
-33092,56,5,603,NULL,hyperlink-ui-id-6,"{href"":""#DList_XOR_code_Java""}""",8/29/2016 15:22,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:41,8/29/2016 15:41,NULL,NULL,NULL,NULL,
-33093,56,5,603,NULL,hyperlink-ui-id-6,"{href"":""#DList_XOR_code_Java""}""",8/29/2016 15:22,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:41,8/29/2016 15:41,NULL,NULL,NULL,NULL,
-33094,56,5,603,NULL,hyperlink-ui-id-5,"{href"":""#DList_XOR_code_Processing""}""",8/29/2016 15:22,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:41,8/29/2016 15:41,NULL,NULL,NULL,NULL,
-33095,56,5,603,NULL,hyperlink-ui-id-4,"{href"":""#DList_XOR_code_Java_Generic""}""",8/29/2016 15:22,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:41,8/29/2016 15:41,NULL,NULL,NULL,NULL,
-33096,56,5,603,NULL,hyperlink-ui-id-6,"{href"":""#DList_XOR_code_Java""}""",8/29/2016 15:22,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:41,8/29/2016 15:41,NULL,NULL,NULL,NULL,
-33097,56,5,603,NULL,window-blur,"User is no longer looking at 09.03.01 - Doubly Linked Lists""""",8/29/2016 15:34,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:41,8/29/2016 15:41,NULL,NULL,NULL,NULL,
-33098,56,5,603,NULL,window-focus,"User looking at 09.03.01 - Doubly Linked Lists""""",8/29/2016 15:39,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:41,8/29/2016 15:41,NULL,NULL,NULL,NULL,
-33099,56,5,603,NULL,window-blur,"User is no longer looking at 09.03.01 - Doubly Linked Lists""""",8/29/2016 15:40,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:41,8/29/2016 15:41,NULL,NULL,NULL,NULL,
-33100,56,5,603,NULL,window-unload,"User closed or refreshed 09.03.01 - Doubly Linked Lists""""",8/29/2016 15:40,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:41,8/29/2016 15:41,NULL,NULL,NULL,NULL,
-33101,56,5,603,NULL,window-unload,"User closed or refreshed 09.03.01 - Doubly Linked Lists""""",8/29/2016 15:40,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:41,8/29/2016 15:41,NULL,NULL,NULL,NULL,
-33102,56,5,604,NULL,document-ready,"User loaded the 09.04.01 - List Element Implementations""""",8/29/2016 15:40,1.47249E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:41,8/29/2016 15:41,NULL,NULL,NULL,NULL,
-33103,56,5,604,NULL,document-ready,"User loaded the 09.04.01 - List Element Implementations""""",8/29/2016 15:40,1.47249E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:41,8/29/2016 15:41,NULL,NULL,NULL,NULL,
-33104,56,5,604,NULL,window-unload,"User closed or refreshed 09.04.01 - List Element Implementations""""",8/29/2016 15:40,1.47249E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:41,8/29/2016 15:41,NULL,NULL,NULL,NULL,
-33105,56,5,604,NULL,document-ready,"User loaded the 09.04.01 - List Element Implementations""""",8/29/2016 15:40,1.47249E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:41,8/29/2016 15:41,NULL,NULL,NULL,NULL,
-33106,56,5,604,NULL,window-unload,"User closed or refreshed 09.04.01 - List Element Implementations""""",8/29/2016 15:40,1.47249E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:43,8/29/2016 15:43,NULL,NULL,NULL,NULL,
-33107,56,5,604,NULL,window-focus,"User looking at 09.04.01 - List Element Implementations""""",8/29/2016 15:42,1.47249E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:43,8/29/2016 15:43,NULL,NULL,NULL,NULL,
-33108,56,5,604,986,jsav-forward,"{""ev_num"":0,""currentStep"":2}",8/29/2016 15:42,1.47249E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:43,8/29/2016 15:43,NULL,NULL,NULL,,
-33109,56,5,604,986,jsav-forward,"{""ev_num"":1,""currentStep"":2}",8/29/2016 15:43,1.47249E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:43,8/29/2016 15:43,NULL,NULL,NULL,,
-33110,56,5,604,NULL,window-blur,"User is no longer looking at 09.04.01 - List Element Implementations""""",8/29/2016 15:44,1.47249E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:47,8/29/2016 15:47,NULL,NULL,NULL,NULL,
-33111,56,5,604,NULL,window-focus,"User looking at 09.04.01 - List Element Implementations""""",8/29/2016 15:44,1.47249E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:47,8/29/2016 15:47,NULL,NULL,NULL,NULL,
-33112,56,5,604,987,jsav-forward,"{""ev_num"":2,""currentStep"":1}",8/29/2016 15:47,1.47249E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:47,8/29/2016 15:47,NULL,NULL,NULL,,
-33113,56,5,604,988,jsav-forward,"{""ev_num"":3,""currentStep"":1}",8/29/2016 15:47,1.47249E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:48,8/29/2016 15:48,NULL,NULL,NULL,,
-33114,56,5,604,NULL,window-blur,"User is no longer looking at 09.04.01 - List Element Implementations""""",8/29/2016 15:48,1.47249E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:50,8/29/2016 15:50,NULL,NULL,NULL,NULL,
-33115,56,5,604,NULL,window-unload,"User closed or refreshed 09.04.01 - List Element Implementations""""",8/29/2016 15:49,1.47249E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:50,8/29/2016 15:50,NULL,NULL,NULL,NULL,
-33116,56,5,604,NULL,window-unload,"User closed or refreshed 09.04.01 - List Element Implementations""""",8/29/2016 15:49,1.47249E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:50,8/29/2016 15:50,NULL,NULL,NULL,NULL,
-33117,56,5,605,NULL,document-ready,"User loaded the 09.05.01 - Freelists""""",8/29/2016 15:49,1.47249E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:50,8/29/2016 15:50,NULL,NULL,NULL,NULL,
-33118,56,5,605,NULL,window-unload,"User closed or refreshed 09.05.01 - Freelists""""",8/29/2016 15:50,1.47249E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:50,8/29/2016 15:50,NULL,NULL,NULL,NULL,
-33119,56,5,606,NULL,document-ready,"User loaded the 09.06.01 - Practice Questions""""",8/29/2016 15:50,1.47249E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:51,8/29/2016 15:51,NULL,NULL,NULL,NULL,
-33120,56,5,606,NULL,window-unload,"User closed or refreshed 09.06.01 - Practice Questions""""",8/29/2016 15:50,1.47249E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:51,8/29/2016 15:51,NULL,NULL,NULL,NULL,
-33121,56,5,607,NULL,document-ready,"User loaded the 09.06.02 - Chapter Review Questions""""",8/29/2016 15:50,1.47249E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:51,8/29/2016 15:51,NULL,NULL,NULL,NULL,
-33122,56,5,NULL,NULL,window-unload,"User closed or refreshed 11.01.01 - Glossary""""",8/29/2016 15:50,1.47248E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:51,8/29/2016 15:51,NULL,NULL,NULL,NULL,
-33123,56,5,607,NULL,window-unload,"User closed or refreshed 09.06.02 - Chapter Review Questions""""",8/29/2016 15:50,1.47249E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:51,8/29/2016 15:51,NULL,NULL,NULL,NULL,
-33150,56,5,NULL,NULL,document-ready,"User loaded the 10.01.01 - Binary Trees Chapter Introduction""""",8/29/2016 15:50,1.47249E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 16:00,8/29/2016 16:00,NULL,NULL,NULL,NULL,
-33151,56,5,NULL,NULL,window-unload,"User closed or refreshed 10.01.01 - Binary Trees Chapter Introduction""""",8/29/2016 15:50,1.47249E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 16:00,8/29/2016 16:00,NULL,NULL,NULL,NULL,
+id,user_id,inst_book_id,inst_section_id,inst_book_section_exercise_id,name,description,action_time,uiid,browser_family,browser_version,os_family,os_version,device,ip_address,created_at,updated_at,inst_course_offering_exercise_id,inst_chapter_module_id,inst_module_version_id,inst_module_section_exercise_id
+33030,56,5,603,NULL,window-focus,"User looking at 09.03.01 - Doubly Linked Lists""""",8/29/2016 15:17,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL
+33031,56,5,603,982,jsav-forward,"{ev_num"":0currentStep:9}""",8/29/2016 15:19,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL
+33032,56,5,603,982,jsav-forward,"{ev_num"":1currentStep:9}""",8/29/2016 15:19,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL
+33033,56,5,603,982,jsav-forward,"{ev_num"":2currentStep:9}""",8/29/2016 15:19,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL
+33034,56,5,603,982,jsav-forward,"{ev_num"":3currentStep:9}""",8/29/2016 15:19,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL
+33035,56,5,603,982,jsav-forward,"{ev_num"":4currentStep:9}""",8/29/2016 15:19,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL
+33036,56,5,603,982,jsav-forward,"{ev_num"":5currentStep:9}""",8/29/2016 15:19,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL
+33037,56,5,603,982,jsav-forward,"{ev_num"":6currentStep:9}""",8/29/2016 15:19,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL
+33038,56,5,603,982,jsav-forward,"{ev_num"":7currentStep:9}""",8/29/2016 15:19,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL
+33039,56,5,603,982,jsav-forward,"{ev_num"":8currentStep:9}""",8/29/2016 15:19,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL
+33042,56,5,603,983,jsav-forward,"{ev_num"":9currentStep:7}""",8/29/2016 15:19,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL
+33043,56,5,603,983,jsav-forward,"{ev_num"":10currentStep:7}""",8/29/2016 15:20,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL
+33044,56,5,603,983,jsav-forward,"{ev_num"":11currentStep:7}""",8/29/2016 15:20,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL
+33045,56,5,603,983,jsav-forward,"{ev_num"":12currentStep:7}""",8/29/2016 15:20,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL
+33046,56,5,603,983,jsav-forward,"{ev_num"":13currentStep:7}""",8/29/2016 15:20,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL
+33047,56,5,603,983,jsav-forward,"{ev_num"":14currentStep:7}""",8/29/2016 15:20,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL
+33048,56,5,603,983,jsav-forward,"{ev_num"":15currentStep:7}""",8/29/2016 15:20,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:20,8/29/2016 15:20,NULL,NULL,NULL,NULL
+33050,56,5,603,984,jsav-forward,"{ev_num"":16currentStep:8}""",8/29/2016 15:20,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:21,8/29/2016 15:21,NULL,NULL,NULL,NULL
+33051,56,5,603,984,jsav-forward,"{ev_num"":17currentStep:8}""",8/29/2016 15:20,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:21,8/29/2016 15:21,NULL,NULL,NULL,NULL
+33052,56,5,603,984,jsav-forward,"{ev_num"":18currentStep:8}""",8/29/2016 15:20,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:21,8/29/2016 15:21,NULL,NULL,NULL,NULL
+33053,56,5,603,984,jsav-forward,"{ev_num"":19currentStep:8}""",8/29/2016 15:20,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:21,8/29/2016 15:21,NULL,NULL,NULL,NULL
+33054,56,5,603,984,jsav-forward,"{ev_num"":20currentStep:8}""",8/29/2016 15:20,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:21,8/29/2016 15:21,NULL,NULL,NULL,NULL
+33055,56,5,603,984,jsav-forward,"{ev_num"":21currentStep:8}""",8/29/2016 15:20,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:21,8/29/2016 15:21,NULL,NULL,NULL,NULL
+33056,56,5,603,984,jsav-forward,"{ev_num"":22currentStep:8}""",8/29/2016 15:20,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:21,8/29/2016 15:21,NULL,NULL,NULL,NULL
+33057,56,5,603,985,jsav-forward,"{ev_num"":23currentStep:4}""",8/29/2016 15:20,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:21,8/29/2016 15:21,NULL,NULL,NULL,NULL
+33058,56,5,603,985,jsav-forward,"{ev_num"":24currentStep:4}""",8/29/2016 15:20,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:21,8/29/2016 15:21,NULL,NULL,NULL,NULL
+33059,56,5,603,985,jsav-forward,"{ev_num"":25currentStep:4}""",8/29/2016 15:20,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:21,8/29/2016 15:21,NULL,NULL,NULL,NULL
+33060,56,5,603,985,jsav-forward,"{ev_num"":26currentStep:4}""",8/29/2016 15:20,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:21,8/29/2016 15:21,NULL,NULL,NULL,NULL
+33092,56,5,603,NULL,hyperlink-ui-id-6,"{href"":""#DList_XOR_code_Java""}""",8/29/2016 15:22,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:41,8/29/2016 15:41,NULL,NULL,NULL,NULL
+33093,56,5,603,NULL,hyperlink-ui-id-6,"{href"":""#DList_XOR_code_Java""}""",8/29/2016 15:22,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:41,8/29/2016 15:41,NULL,NULL,NULL,NULL
+33094,56,5,603,NULL,hyperlink-ui-id-5,"{href"":""#DList_XOR_code_Processing""}""",8/29/2016 15:22,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:41,8/29/2016 15:41,NULL,NULL,NULL,NULL
+33095,56,5,603,NULL,hyperlink-ui-id-4,"{href"":""#DList_XOR_code_Java_Generic""}""",8/29/2016 15:22,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:41,8/29/2016 15:41,NULL,NULL,NULL,NULL
+33096,56,5,603,NULL,hyperlink-ui-id-6,"{href"":""#DList_XOR_code_Java""}""",8/29/2016 15:22,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:41,8/29/2016 15:41,NULL,NULL,NULL,NULL
+33097,56,5,603,NULL,window-blur,"User is no longer looking at 09.03.01 - Doubly Linked Lists""""",8/29/2016 15:34,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:41,8/29/2016 15:41,NULL,NULL,NULL,NULL
+33098,56,5,603,NULL,window-focus,"User looking at 09.03.01 - Doubly Linked Lists""""",8/29/2016 15:39,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:41,8/29/2016 15:41,NULL,NULL,NULL,NULL
+33099,56,5,603,NULL,window-blur,"User is no longer looking at 09.03.01 - Doubly Linked Lists""""",8/29/2016 15:40,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:41,8/29/2016 15:41,NULL,NULL,NULL,NULL
+33100,56,5,603,NULL,window-unload,"User closed or refreshed 09.03.01 - Doubly Linked Lists""""",8/29/2016 15:40,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:41,8/29/2016 15:41,NULL,NULL,NULL,NULL
+33101,56,5,603,NULL,window-unload,"User closed or refreshed 09.03.01 - Doubly Linked Lists""""",8/29/2016 15:40,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:41,8/29/2016 15:41,NULL,NULL,NULL,NULL
+33102,56,5,604,NULL,document-ready,"User loaded the 09.04.01 - List Element Implementations""""",8/29/2016 15:40,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:41,8/29/2016 15:41,NULL,NULL,NULL,NULL
+33103,56,5,604,NULL,document-ready,"User loaded the 09.04.01 - List Element Implementations""""",8/29/2016 15:40,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:41,8/29/2016 15:41,NULL,NULL,NULL,NULL
+33104,56,5,604,NULL,window-unload,"User closed or refreshed 09.04.01 - List Element Implementations""""",8/29/2016 15:40,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:41,8/29/2016 15:41,NULL,NULL,NULL,NULL
+33105,56,5,604,NULL,document-ready,"User loaded the 09.04.01 - List Element Implementations""""",8/29/2016 15:40,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:41,8/29/2016 15:41,NULL,NULL,NULL,NULL
+33106,56,5,604,NULL,window-unload,"User closed or refreshed 09.04.01 - List Element Implementations""""",8/29/2016 15:40,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:43,8/29/2016 15:43,NULL,NULL,NULL,NULL
+33107,56,5,604,NULL,window-focus,"User looking at 09.04.01 - List Element Implementations""""",8/29/2016 15:42,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:43,8/29/2016 15:43,NULL,NULL,NULL,NULL
+33108,56,5,604,986,jsav-forward,"{""ev_num"":0,""currentStep"":2}",8/29/2016 15:42,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:43,8/29/2016 15:43,NULL,NULL,NULL,
+33109,56,5,604,986,jsav-forward,"{""ev_num"":1,""currentStep"":2}",8/29/2016 15:43,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:43,8/29/2016 15:43,NULL,NULL,NULL,
+33110,56,5,604,NULL,window-blur,"User is no longer looking at 09.04.01 - List Element Implementations""""",8/29/2016 15:44,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:47,8/29/2016 15:47,NULL,NULL,NULL,NULL
+33111,56,5,604,NULL,window-focus,"User looking at 09.04.01 - List Element Implementations""""",8/29/2016 15:44,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:47,8/29/2016 15:47,NULL,NULL,NULL,NULL
+33112,56,5,604,987,jsav-forward,"{""ev_num"":2,""currentStep"":1}",8/29/2016 15:47,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:47,8/29/2016 15:47,NULL,NULL,NULL,
+33113,56,5,604,988,jsav-forward,"{""ev_num"":3,""currentStep"":1}",8/29/2016 15:47,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:48,8/29/2016 15:48,NULL,NULL,NULL,
+33114,56,5,604,NULL,window-blur,"User is no longer looking at 09.04.01 - List Element Implementations""""",8/29/2016 15:48,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:50,8/29/2016 15:50,NULL,NULL,NULL,NULL
+33115,56,5,604,NULL,window-unload,"User closed or refreshed 09.04.01 - List Element Implementations""""",8/29/2016 15:49,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:50,8/29/2016 15:50,NULL,NULL,NULL,NULL
+33116,56,5,604,NULL,window-unload,"User closed or refreshed 09.04.01 - List Element Implementations""""",8/29/2016 15:49,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:50,8/29/2016 15:50,NULL,NULL,NULL,NULL
+33117,56,5,605,NULL,document-ready,"User loaded the 09.05.01 - Freelists""""",8/29/2016 15:49,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:50,8/29/2016 15:50,NULL,NULL,NULL,NULL
+33118,56,5,605,NULL,window-unload,"User closed or refreshed 09.05.01 - Freelists""""",8/29/2016 15:50,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:50,8/29/2016 15:50,NULL,NULL,NULL,NULL
+33119,56,5,606,NULL,document-ready,"User loaded the 09.06.01 - Practice Questions""""",8/29/2016 15:50,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:51,8/29/2016 15:51,NULL,NULL,NULL,NULL
+33120,56,5,606,NULL,window-unload,"User closed or refreshed 09.06.01 - Practice Questions""""",8/29/2016 15:50,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:51,8/29/2016 15:51,NULL,NULL,NULL,NULL
+33121,56,5,607,NULL,document-ready,"User loaded the 09.06.02 - Chapter Review Questions""""",8/29/2016 15:50,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:51,8/29/2016 15:51,NULL,NULL,NULL,NULL
+33122,56,5,NULL,NULL,window-unload,"User closed or refreshed 11.01.01 - Glossary""""",8/29/2016 15:50,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:51,8/29/2016 15:51,NULL,NULL,NULL,NULL
+33123,56,5,607,NULL,window-unload,"User closed or refreshed 09.06.02 - Chapter Review Questions""""",8/29/2016 15:50,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 15:51,8/29/2016 15:51,NULL,NULL,NULL,NULL
+33150,56,5,NULL,NULL,document-ready,"User loaded the 10.01.01 - Binary Trees Chapter Introduction""""",8/29/2016 15:50,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 16:00,8/29/2016 16:00,NULL,NULL,NULL,NULL
+33151,56,5,NULL,NULL,window-unload,"User closed or refreshed 10.01.01 - Binary Trees Chapter Introduction""""",8/29/2016 15:50,1.47E+12,Chrome,52,linux,,PC,172.25.132.16,8/29/2016 16:00,8/29/2016 16:00,NULL,NULL,NULL,NULL
diff --git a/InteractionPrototype.csv_merged_result_unannotated.csv b/InteractionPrototype.csv_merged_result_unannotated.csv
new file mode 100644
index 0000000000000000000000000000000000000000..fc886ee76c8b828531613d07462547714d5e87ad
--- /dev/null
+++ b/InteractionPrototype.csv_merged_result_unannotated.csv
@@ -0,0 +1,29 @@
+session,user ID,Inst Book,Event name,Event Description,Start time,End Time,Action Time,Exercise Type,Number of events
+1,56,5,Window open,Attempted to solve Chrome frame ,8/29/2016 15:17,8/29/2016 15:17,Reading time: 120.0 sec,nan,1
+1,56,5,FF event,Attempted to solve Chrome frame ,8/29/2016 15:19,8/29/2016 15:20,60.0 seconds,nan,27
+1,56,5,Other event,Attempted to solve Chrome frame ,8/29/2016 15:22,8/29/2016 15:22,,nan,2
+1,56,5,Other event,Attempted to solve Chrome frame ,8/29/2016 15:22,8/29/2016 15:22,,nan,1
+1,56,5,Other event,Attempted to solve Chrome frame ,8/29/2016 15:22,8/29/2016 15:22,,nan,1
+1,56,5,Other event,Attempted to solve Chrome frame ,8/29/2016 15:22,8/29/2016 15:22,,nan,1
+2,56,5,Window close,Attempted to solve Chrome frame ,8/29/2016 15:34,8/29/2016 15:34,Away time: 300.0 sec,nan,1
+2,56,5,Window open,Attempted to solve Chrome frame ,8/29/2016 15:39,8/29/2016 15:39,Reading time: 60.0 sec,nan,1
+2,56,5,window event,Attempted to solve Chrome frame ,8/29/2016 15:40,8/29/2016 15:40,,nan,1
+2,56,5,window event,Attempted to solve Chrome frame ,8/29/2016 15:40,8/29/2016 15:40,,nan,2
+2,56,5,document event,Attempted to solve Chrome frame ,8/29/2016 15:40,8/29/2016 15:40,,nan,2
+2,56,5,window event,Attempted to solve Chrome frame ,8/29/2016 15:40,8/29/2016 15:40,,nan,1
+2,56,5,document event,Attempted to solve Chrome frame ,8/29/2016 15:40,8/29/2016 15:40,,nan,1
+2,56,5,window event,Attempted to solve Chrome frame ,8/29/2016 15:40,8/29/2016 15:40,,nan,1
+2,56,5,Window open,Attempted to solve Chrome frame ,8/29/2016 15:42,8/29/2016 15:42,Reading time: 0.0 sec,nan,1
+2,56,5,FF event,Attempted to solve Chrome frame ,8/29/2016 15:42,8/29/2016 15:43,60.0 seconds,nan,2
+2,56,5,Window close,Attempted to solve Chrome frame ,8/29/2016 15:44,8/29/2016 15:44,Away time: 0.0 sec,nan,1
+2,56,5,Window open,Attempted to solve Chrome frame ,8/29/2016 15:44,8/29/2016 15:44,Reading time: 180.0 sec,nan,1
+2,56,5,FF event,Attempted to solve Chrome frame ,8/29/2016 15:47,8/29/2016 15:47,0.0 seconds,nan,2
+2,56,5,window event,Attempted to solve Chrome frame ,8/29/2016 15:48,8/29/2016 15:48,,nan,1
+2,56,5,window event,Attempted to solve Chrome frame ,8/29/2016 15:49,8/29/2016 15:49,,nan,2
+2,56,5,document event,Attempted to solve Chrome frame ,8/29/2016 15:49,8/29/2016 15:49,,nan,1
+2,56,5,window event,Attempted to solve Chrome frame ,8/29/2016 15:50,8/29/2016 15:50,,nan,1
+2,56,5,document event,Attempted to solve Chrome frame ,8/29/2016 15:50,8/29/2016 15:50,,nan,1
+2,56,5,window event,Attempted to solve Chrome frame ,8/29/2016 15:50,8/29/2016 15:50,,nan,1
+2,56,5,document event,Attempted to solve Chrome frame ,8/29/2016 15:50,8/29/2016 15:50,,nan,1
+2,56,5,window event,Attempted to solve Chrome frame ,8/29/2016 15:50,8/29/2016 15:50,,nan,2
+2,56,5,document event,"User loaded the 10.01.01 - Binary Trees Chapter Introduction""""",8/29/2016 15:50,8/29/2016 15:50,,nan,1
diff --git a/abstracting_script.py b/abstracting_script.py
index 982a2f0689dd4eeddeb263db65fd6d219971a834..e0b489514ffee04ec699ef25629207b255e22f50 100644
--- a/abstracting_script.py
+++ b/abstracting_script.py
@@ -72,26 +72,26 @@ def writeEvName(row):
 # Helper function to write a description for events
 def writeDesc(row):    
     # exercise_type
-    if row['ex_type'] == "pe":
+    if row['inst_module_version_id'] == "pe":
         return "Attempted to solve PE"
     elif pd.isnull(row['inst_section_id']):
         return row['description']
     else:
         # ev_name
-        if row['short_name']:
+        if row['inst_module_section_exercise_id']:
             return f'Attempted to solve {row[9]} frame '
         else:
             return f'Attempted to solve {row[9]} exercise'
 
 # Helper function to write a time for events
 def writeTime(row, start, end):
-    if row['description'] == "PE" or row['ex_type'] == "pe" or check_pe_helper(row['name']):
+    if row['description'] == "PE" or row['inst_module_version_id'] == "pe" or check_pe_helper(row['name']):
         return f'{(end - start).total_seconds()} seconds'
     elif row['name'] in ff_event:
         return f'{(end-start).total_seconds()} seconds'
     elif "document" not in row['name']:
         # ev_name
-        if row['short_name']:
+        if row['inst_module_section_exercise_id']:
             return f'In slideshow for {(end - start).total_seconds()} seconds' if (end - start).total_seconds() > 0 else None
         else:
             return f'In exercise for {(end - start).total_seconds()} seconds' if (end - start).total_seconds() > 0 else None
@@ -105,16 +105,16 @@ def check_pe_helper(command):
 
 # Check whether this and next events are the same type of event (PE)
 def bundle_pe(curr, next):
-    if not pd.isnull(curr['ex_type']) or curr['description'] == 'PE': # curr has value
-        if not pd.isnull(next['ex_type']): # both curr and next has values
-            if curr['ex_type'] != 'pe' and next['ex_type'] != 'pe':
+    if not pd.isnull(curr['inst_module_version_id']) or curr['description'] == 'PE': # curr has value
+        if not pd.isnull(next['inst_module_version_id']): # both curr and next has values
+            if curr['inst_module_version_id'] != 'pe' and next['inst_module_version_id'] != 'pe':
                 return False
         else: #if only curr has value
             if not check_pe_helper(next['name']) and next['description'] != 'PE':
                 return False 
     else: # curr doesn't have value
         if check_pe_helper(curr['name']):
-            if next['ex_type'] == 'pe' or check_pe_helper(next['name']):
+            if next['inst_module_version_id'] == 'pe' or check_pe_helper(next['name']):
                 return True
             else:
                 return False
@@ -124,7 +124,7 @@ def bundle_pe(curr, next):
  
 # Check whether this and next events are the same type of event (FF)
 def bundle_ff(curr, next):
-    if not pd.isnull(curr['short_name']) and curr['short_name'] == next['short_name']:
+    if not pd.isnull(curr['inst_module_section_exercise_id']) and curr['inst_module_section_exercise_id'] == next['inst_module_section_exercise_id']:
         return True
     else:
         return False
@@ -180,13 +180,22 @@ def abstract(file_name):
             action_time = curr['action_time']
             module_id = curr['inst_chapter_module_id']
             section_id = curr['inst_section_id']
-            exercise_id = curr['inst_exercise_id']
-            exercise_name = curr['short_name']
-            exercise_type = curr['ex_type']
+            exercise_id = curr['inst_course_offering_exercise_id']
+            exercise_name = curr['inst_module_section_exercise_id']
+            exercise_type = curr['inst_module_version_id']
+            
+            #exercise_id = curr['inst_exercise_id']
+            #exercise_name = curr['short_name']
+            #exercise_type = curr['ex_type']
+            
+            
             next_ev = row
 
-            now = dt.strptime(action_time, "%Y-%m-%d %H:%M:%S")
-            next_time = dt.strptime(next_ev['action_time'], "%Y-%m-%d %H:%M:%S")
+            # now = dt.strptime(action_time, "%Y-%m-%d %H:%M:%S")
+            # next_time = dt.strptime(next_ev['action_time'], "%Y-%m-%d %H:%M:%S")
+            
+            now = dt.strptime(action_time, "%m/%d/%Y %H:%M")
+            next_time = dt.strptime(next_ev['action_time'], "%m/%d/%Y %H:%M")
             time_diff = (next_time - now).total_seconds()
 
             end_time = start_time
@@ -205,8 +214,11 @@ def abstract(file_name):
                 if (time_diff > threshold): # Creating a new session
                     # For the last event of a session, we need to add one more row of event at the end of the session
                     end_time = action_time
-                    start = dt.strptime(start_time, "%Y-%m-%d %H:%M:%S")
-                    end = dt.strptime(end_time, "%Y-%m-%d %H:%M:%S")
+                    # start = dt.strptime(start_time, "%Y-%m-%d %H:%M:%S")
+                    # end = dt.strptime(end_time, "%Y-%m-%d %H:%M:%S")
+                    
+                    start = dt.strptime(start_time, "%m/%d/%Y %H:%M")
+                    end = dt.strptime(end_time, "%m/%d/%Y %H:%M")
                     diff = writeTime(curr, start, end)
                     # diff = f'{(end - start).total_seconds()} seconds' if (end - start).total_seconds() > 0 else None 
                     if is_pe_exercise:
@@ -225,7 +237,7 @@ def abstract(file_name):
                     # writer.writerow([f'Session {session_count + 1}'])
                     
 
-                    total_session_time = total_session_time + (session_end_time - dt.strptime(session_start_time, "%Y-%m-%d %H:%M:%S")).total_seconds()
+                    total_session_time = total_session_time + (session_end_time - dt.strptime(session_start_time, "%m/%d/%Y %H:%M")).total_seconds()
                     total_session_count = total_session_count + 1
 
                     session_count += 1
@@ -257,8 +269,8 @@ def abstract(file_name):
                                 continue
                             else:
                                 end_time = action_time                        
-                                start = dt.strptime(start_time, "%Y-%m-%d %H:%M:%S")
-                                end = dt.strptime(end_time, "%Y-%m-%d %H:%M:%S")
+                                start = dt.strptime(start_time, "%m/%d/%Y %H:%M")
+                                end = dt.strptime(end_time, "%m/%d/%Y %H:%M")
                                 diff = writeTime(curr, start, end)
                                 # diff = f'In slideshow for {(end - start).total_seconds()} seconds' if (end - start).total_seconds() > 0 else None 
 
@@ -323,7 +335,7 @@ def abstract(file_name):
                 
 start_time = time.time()
 
-abstract("User_Interactions.csv") 
+abstract("InteractionPrototype.csv") 
 print(total_session_count, total_session_time)
 print("--- %s seconds ---" % (time.time() - start_time))