diff --git a/src/cpu/abstract_cpu.cpp b/src/cpu/abstract_cpu.cpp
index 8b4c650..ebdc510 100644
--- a/src/cpu/abstract_cpu.cpp
+++ b/src/cpu/abstract_cpu.cpp
@@ -421,12 +421,6 @@ void abstract_cpu::validate(void)
 	for (i = 0; i < children.size(); i++) {
 
 		if (children[i]) {
-			if (my_time != children[i]->total_pstate_time())
-				printf("My (%i) time %llu is not the same as child (%i) time %llu\n",
-					first_cpu,
-					(unsigned long long)my_time,
-					children[i]->number,
-					(unsigned long long)children[i]->total_pstate_time());
 			children[i]->validate();
 		}
 	}
diff --git a/src/display.cpp b/src/display.cpp
index f48b53f..6a119bc 100644
--- a/src/display.cpp
+++ b/src/display.cpp
@@ -95,7 +95,7 @@ static int current_tab;
 
 void show_tab(unsigned int tab)
 {
-	WINDOW *win;
+	class tab_window *win;
 	unsigned int i;
 	int tab_pos = 17;
 	const char *c;
@@ -145,11 +145,11 @@ void show_tab(unsigned int tab)
 	wrefresh(tab_bar);
 	wrefresh(bottom_line);
 
-	win = get_ncurses_win(tab_names[tab]);
+	win = tab_windows[tab_names[tab]];
 	if (!win)
 		return;
 
-	prefresh(win, 0, 0, 1, 0, LINES - 3, COLS - 1);
+	prefresh(win->win, win->ypad_pos, win->xpad_pos, 1, 0, LINES - 3, COLS - 1);
 }
 
 WINDOW *get_ncurses_win(const char *name)
@@ -185,42 +185,41 @@ WINDOW *get_ncurses_win(const string &name)
 	return get_ncurses_win(name.c_str());
 }
 
-
-void show_next_tab(void)
+void show_prev_tab(void)
 {
-	class tab_window *w;
+       class tab_window *w;
 
-	if (!display)
-		return;
+       if (!display)
+               return;
+       w = tab_windows[tab_names[current_tab]];
+       if (w)
+               w->hide();
 
-	w = tab_windows[tab_names[current_tab]];
-	if (w)
-		w->hide();
+       current_tab --;
+       if (current_tab < 0)
+               current_tab = tab_names.size() - 1;
 
-	current_tab ++;
-	if (current_tab >= (int)tab_names.size())
-		current_tab = 0;
-
-	w = tab_windows[tab_names[current_tab]];
-	if (w)
-		w->expose();
+       w = tab_windows[tab_names[current_tab]];
+       if (w)
+               w->expose();
 
-	show_tab(current_tab);
+       show_tab(current_tab);
 }
 
-void show_prev_tab(void)
+void show_next_tab(void)
 {
 	class tab_window *w;
 
 	if (!display)
 		return;
+
 	w = tab_windows[tab_names[current_tab]];
 	if (w)
 		w->hide();
 
-	current_tab --;
-	if (current_tab < 0)
-		current_tab = tab_names.size() - 1;
+	current_tab ++;
+	if (current_tab >= (int)tab_names.size())
+		current_tab = 0;
 
 	w = tab_windows[tab_names[current_tab]];
 	if (w)
@@ -241,8 +240,16 @@ void cursor_down(void)
 	class tab_window *w;
 
 	w = tab_windows[tab_names[current_tab]];
-	if (w)
-		w->cursor_down();
+	if (w) {
+		if (tab_names[current_tab] == "Tunables") {
+	                if ((w->cursor_pos + 7) >= LINES) { 
+				prefresh(w->win, ++w->ypad_pos, w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
+			}			
+				w->cursor_down(); 
+		} else {
+			prefresh(w->win, ++w->ypad_pos, w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
+		}
+	}
 
 	show_cur_tab();
 }
@@ -253,12 +260,45 @@ void cursor_up(void)
 
 	w = tab_windows[tab_names[current_tab]];
 
-	if (w)
-		w->cursor_up();
-
+	if (w) {
+		w->cursor_up(); 
+		if(w->ypad_pos > 0) {
+	                if (tab_names[current_tab] == "Tunables") {
+        	               prefresh(w->win, --w->ypad_pos, w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
+	                } else {
+        	               prefresh(w->win, --w->ypad_pos, w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
+	                }
+		}
+	}
+	
 	show_cur_tab();
 }
 
+void cursor_left(void)
+{
+        class tab_window *w;
+
+	w = tab_windows[tab_names[current_tab]];
+	
+	if (w) {			
+		if (w->xpad_pos > 0) {
+			prefresh(w->win, w->ypad_pos,--w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
+		}
+	}
+}
+
+void cursor_right(void) 
+{
+        class tab_window *w;
+
+	w = tab_windows[tab_names[current_tab]];
+
+	if (w) {
+		prefresh(w->win, w->ypad_pos, ++w->xpad_pos, 1, 0, LINES - 3, COLS - 1);
+	}
+	
+}
+
 void cursor_enter(void)
 {
 	class tab_window *w;
@@ -279,6 +319,8 @@ void window_refresh()
 	w = tab_windows[tab_names[current_tab]];
 
 	if (w) {
+		w->ypad_pos = 0;
+		w->xpad_pos = 0;
 		w->window_refresh();
 		w->repaint();
 	}
diff --git a/src/display.h b/src/display.h
index 33aaae1..00887aa 100644
--- a/src/display.h
+++ b/src/display.h
@@ -41,6 +41,8 @@ extern void show_prev_tab(void);
 extern void show_cur_tab(void);
 extern void cursor_up(void);
 extern void cursor_down(void);
+extern void cursor_right(void);
+extern void cursor_left(void);
 extern void cursor_enter(void);
 extern void window_refresh(void);
 
@@ -48,10 +50,17 @@ class tab_window {
 public:
 	int cursor_pos;
 	int cursor_max;
+	int xpad_pos, ypad_pos; 
 	WINDOW *win;
 
-	virtual void cursor_down(void) { if (cursor_pos < cursor_max ) cursor_pos++; repaint(); } ;
-	virtual void cursor_up(void) { if (cursor_pos > 0) cursor_pos--; repaint(); };
+	virtual void cursor_down(void) { 
+		if (cursor_pos < cursor_max ) cursor_pos++; repaint(); 
+	} ;
+	virtual void cursor_up(void) { 
+		if (cursor_pos > 0) cursor_pos--; repaint(); 
+	};
+	virtual void cursor_left(void) { };
+	virtual void cursor_right(void) { };
 
 	virtual void cursor_enter(void) { };
 	virtual void window_refresh() { };
diff --git a/src/main.cpp b/src/main.cpp
index cf47b4e..1815075 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -135,22 +135,28 @@ static void do_sleep(int seconds)
 		halfdelay(delta * 10);
 
 		c = getch();
-
 		switch (c) {
-		case KEY_NPAGE:
+		case 353: 
+			show_prev_tab();
+			break;
+		case 9:
+			show_next_tab(); 
+			break;
 		case KEY_RIGHT:
-			show_next_tab();
+			cursor_right(); 
 			break;
-		case KEY_PPAGE:
 		case KEY_LEFT:
-			show_prev_tab();
+			cursor_left(); 
 			break;
+		case KEY_NPAGE:
 		case KEY_DOWN:
 			cursor_down();
 			break;
+		case KEY_PPAGE:
 		case KEY_UP:
 			cursor_up();
 			break;
+		case 32:
 		case 10:
 			cursor_enter();
 			break;

