diff --git a/student-distrib/idt.c b/student-distrib/idt.c
index 18ccd2152cd53436ee5b8e4f4e08673822dde204..a6de4c286747dfc61a9735fe1142ea9c5604d604 100644
--- a/student-distrib/idt.c
+++ b/student-distrib/idt.c
@@ -143,6 +143,9 @@ void initialize_IDT(void)
     SET_IDT_ENTRY(idt[18], MACHINE_CHECK);
     SET_IDT_ENTRY(idt[19], FLOATING_POINT);
 
+    // insert PIT handler into IDT table
+    SET_IDT_ENTRY(idt[PIT_INDEX], PIT_INTERRUPT);
+
     // insert KB handler into IDT table
     SET_IDT_ENTRY(idt[KEYBOARD_INDEX], KB_INTERRUPT);
 
diff --git a/student-distrib/idt.h b/student-distrib/idt.h
index e582e5faea62fdfe4d5bb1d90199b66414903992..5f81855b77f48ebb77ac41db77055fcc5e44b85c 100644
--- a/student-distrib/idt.h
+++ b/student-distrib/idt.h
@@ -5,6 +5,7 @@
 #include "lib.h"
 #include "syscall.h"
 
+#define PIT_INDEX      0x20
 #define KEYBOARD_INDEX 0x21
 #define RTC_INDEX      0x28
 #define SYS_CALL_INDEX 0x80
@@ -37,5 +38,6 @@ void MACHINE_CHECK(void);
 void FLOATING_POINT(void);
 void RTC_INTERRUPT(void);
 void KB_INTERRUPT(void);
+void PIT_INTERRUPT(void);
 
 #endif
diff --git a/student-distrib/idt_asm.S b/student-distrib/idt_asm.S
index 08bf40d7fa6271b22abbfd5699a4e8e602aebf5b..3edc99756ce1d06ec139165ed0738b5cbd19cbee 100644
--- a/student-distrib/idt_asm.S
+++ b/student-distrib/idt_asm.S
@@ -28,6 +28,7 @@
 .globl FLOATING_POINT
 .globl RTC_INTERRUPT
 .globl KB_INTERRUPT
+.globl PIT_INTERRUPT
 
 # - Each function acts as a bridge sending
 #   the interrupt value
@@ -173,3 +174,15 @@ KB_INTERRUPT:
      STI
 
      IRET
+
+PIT_INTERRUPT:
+
+     CLI
+
+     PUSHAL
+     CALL   pit_handler
+     POPAL
+
+     STI
+
+     IRET
\ No newline at end of file
diff --git a/student-distrib/kernel.c b/student-distrib/kernel.c
index 20cec021c17ab39570eeb9acfab64193cf3dcdd1..61d88d57abb67a649770d1cc47486efa50400656 100644
--- a/student-distrib/kernel.c
+++ b/student-distrib/kernel.c
@@ -164,6 +164,10 @@ void entry(unsigned long magic, unsigned long addr) {
     rtc_init();
     printf("RTC Initialized\n");
 
+    printf("Initializing PIT\n");
+    i8253_init();
+    printf("PIT Initialized\n");
+
     printf("Initializing paging\n");
     paging_initi();
     printf("Paging Initialized\n");
diff --git a/student-distrib/pit.c b/student-distrib/pit.c
index 7ac463ad795c32a0885f9db2fd31f1221a3be639..624a5d9b165385366e0262f981f1572380b4fc17 100644
--- a/student-distrib/pit.c
+++ b/student-distrib/pit.c
@@ -18,6 +18,7 @@ void i8253_init(void){
 
 void pit_handler(){
 
+	//printf("[PIT] Interrupt Test");
 	send_eoi(0);
 
     //todo
diff --git a/student-distrib/rtc.c b/student-distrib/rtc.c
index dcb4099f5ce317d29df8124c3cbdeb1c1286f002..e1082c48ceeed2c6110c9eb0534f4203acd04164 100644
--- a/student-distrib/rtc.c
+++ b/student-distrib/rtc.c
@@ -75,13 +75,7 @@ int32_t rtc_read(int32_t fd, void* buf, int32_t nbytes)
 
     /* Wait until interrupt handler clears flag */
     while (interrupt_flag);
-
-    /* Reset flag, necessary?  */
-    //interrupt_flag = 1;
-
-    /* Testing */
-    //printf("Fu");
-
+    
     return 0;
 }