diff --git a/src/core/src/arm/arm_interface.h b/src/core/src/arm/arm_interface.h
index 80518a779..daf35b51d 100644
--- a/src/core/src/arm/arm_interface.h
+++ b/src/core/src/arm/arm_interface.h
@@ -24,32 +24,65 @@
 
 #pragma once
 
+#include "common.h"
 #include "common_types.h"
 
 /// Generic ARM11 CPU interface
 class ARM_Interface {
 public:
     ARM_Interface() {
+        num_instructions_ = 0;
     }
 
     ~ARM_Interface() {
     }
 
+    /// Step CPU by one instruction
     void Step() {
         ExecuteInstruction();
-        ticks_++;
+        num_instructions_++;
     }
-    
-    virtual void SetPC(u32 pc) = 0;
+ 
+    /**
+     * Set the Program Counter to an address
+     * @param addr Address to set PC to
+     */
+    virtual void SetPC(u32 addr) = 0;
+
+    /*
+     * Get the current Program Counter
+     * @return Returns current PC
+     */
     virtual u32 PC() = 0;
+
+    /**
+     * Get an ARM register
+     * @param index Register index (0-15)
+     * @return Returns the value in the register
+     */
     virtual u32 Reg(int index) = 0;
+
+    /**
+     * Get the current CPSR register
+     * @return Returns the value of the CPSR register
+     */
     virtual u32 CPSR() = 0;  
 
-    u64 ticks() { return ticks_; }
+    /**
+     * Returns the number of clock ticks since the last rese
+     * @return Returns number of clock ticks
+     */
+    virtual u64 GetTicks() = 0;
+
+    /// Getter for num_instructions_
+    u64 num_instructions() { return num_instructions_; }
 
 private:
     
+    /// Execture next instruction
     virtual void ExecuteInstruction() = 0;
 
-    u64 ticks_;
+    u64 num_instructions_;  ///< Number of instructions executed
+
+    DISALLOW_COPY_AND_ASSIGN(ARM_Interface);
 };
diff --git a/src/core/src/arm/interpreter/arm_interpreter.h b/src/core/src/arm/interpreter/arm_interpreter.h
index 89f871fa9..074149f1b 100644
--- a/src/core/src/arm/interpreter/arm_interpreter.h
+++ b/src/core/src/arm/interpreter/arm_interpreter.h
@@ -24,6 +24,7 @@
 
 #pragma once
 
+#include "common.h"
 #include "common_types.h"
 #include "arm/arm_interface.h"
 
@@ -45,6 +46,12 @@ public:
 
     u32 CPSR();
 
+    u64 GetTicks() {
+        return ARMul_Time(state);
+    }
+
 private:
     ARMul_State* state;
+
+    DISALLOW_COPY_AND_ASSIGN(ARM_Interpreter);
 };
diff --git a/src/core/src/hw/hw_lcd.cpp b/src/core/src/hw/hw_lcd.cpp
index 19e3b4ab4..7e3728346 100644
--- a/src/core/src/hw/hw_lcd.cpp
+++ b/src/core/src/hw/hw_lcd.cpp
@@ -28,7 +28,7 @@
 
 namespace LCD {
 
-static const u32 kFrameTicks = 268123480 / 30; // 268MHz / 30 frames per second
+static const u32 kFrameTicks = 268123480 / 60;  ///< 268MHz / 60 frames per second
 
 u64 g_last_ticks = 0; ///< Last CPU ticks
 
@@ -42,7 +42,7 @@ inline void Write(u32 addr, const T data) {
 
 /// Update hardware
 void Update() {
-    u64 current_ticks = Core::g_app_core->ticks();
+    u64 current_ticks = Core::g_app_core->GetTicks();
 
     if ((current_ticks - g_last_ticks) >= kFrameTicks) {
         g_last_ticks = current_ticks;
@@ -52,7 +52,7 @@ void Update() {
 
 /// Initialize hardware
 void Init() {
-    g_last_ticks = Core::g_app_core->ticks();
+    g_last_ticks = Core::g_app_core->GetTicks();
 
     NOTICE_LOG(LCD, "LCD initialized OK");
 }