diff --git a/inc/hal/hal.h b/inc/hal/hal.h
index 2d84d77..efae4f7 100644
--- a/inc/hal/hal.h
+++ b/inc/hal/hal.h
@@ -3,9 +3,9 @@
 #define _HAL_H_
 
 #define I_LEFT 0
-#define I_RIGHT 0
-#define I_UP 0
-#define I_DOWN 0
+#define I_RIGHT 1
+#define I_UP 2
+#define I_DOWN 3
 
 
 void debug(const char* str);
diff --git a/src/example.cpp b/src/example.cpp
index c97dcfa..40d7312 100644
--- a/src/example.cpp
+++ b/src/example.cpp
@@ -3,7 +3,7 @@
 #include "node.h"
 #include "gfx/canvas.h"
 
-char peng[] = {'_','_','_','_','_',0};
+char peng[] = {' ', ' ', ' ', ' ', ' ', 0};
 
 int j = 0;
 
@@ -11,19 +11,16 @@ void fooValue::render(canvas& c){
 
 	for(int i = 0; i<32; i++)
 		c.draw(0,i);
-	for(int i = 0; i<c.getWidth(); i++)
-		c.draw(i,31-i%32);
-	for(int i = 0; i<c.getWidth(); i++)
-		c.draw(i,31-(i+16)%32);
+
 
 	c.print(5 , 10, title_);
-	peng[0]=input[0]?' ':'#';
-	peng[1]=input[1]?' ':'#';
-	peng[2]=input[2]?' ':'#';
-	peng[3]=input[3]?' ':'#';
+    peng[0] = input[0] ? 'L' : ' ';
+    peng[1] = input[1] ? 'R' : ' ';
+    peng[2] = input[2] ? 'U' : ' ';
+    peng[3] = input[3] ? 'D' : ' ';
 	j++;
-	j%=26;
-	peng[4] = 'a'+j;
+    j %= 10;
+    peng[4] = 'A' + j;
 	c.print(5 , 20, peng);
 }
 
@@ -38,6 +35,6 @@ void menu::render(canvas& c){
 
 	for(int i = 0; i<32;i++)
 		c.draw(0,i);
-	for(int i = 0; i<32 && i<c.getWidth();i++)
-		c.draw((i%c.getWidth()),i);
+
+    c.print(5, 10, title_);
 }
diff --git a/src/gfx/layout.cpp b/src/gfx/layout.cpp
index bd76c1b..332ad93 100644
--- a/src/gfx/layout.cpp
+++ b/src/gfx/layout.cpp
@@ -10,9 +10,9 @@ void layout::render() {
     for (int j = 0; j < allocated_; j++) {
         node *node_ptr;
         if (node_ptr = slots[j].content) {
+            slots[j].canvas_->clear();
             node_ptr->render(*slots[j].canvas_);
             screen_.draw(slots[j].pos_, 0, *slots[j].canvas_);
-
         }
     }
 }
diff --git a/src/hal/linux.cpp b/src/hal/linux.cpp
index b86cfde..72dbe2e 100644
--- a/src/hal/linux.cpp
+++ b/src/hal/linux.cpp
@@ -6,34 +6,28 @@
 
 //Using SDL and standard IO
 #include <SDL2/SDL.h>
-#include <stdio.h>
+#include <cstdio>
 
-SDL_Window* window = NULL;
+SDL_Window *window = nullptr;
 SDL_Event event;
 SDL_Renderer *renderer;
 
-void hal_init(){
-    if( SDL_Init( SDL_INIT_VIDEO ) < 0 ) {
-        printf( "SDL could not initialize! SDL_Error: %s\n", SDL_GetError() );
+void hal_init() {
+    if (SDL_Init(SDL_INIT_VIDEO) < 0) {
+        printf("SDL could not initialize! SDL_Error: %s\n", SDL_GetError());
         exit(1);
     }
 
 
-   /* //Create window
-    window = SDL_CreateWindow( "SDL Tutorial", 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN|SDL_WINDOW_BORDERLESS );
-    if( window == NULL ) {
-        printf( "Window could not be created! SDL_Error: %s\n", SDL_GetError() );
-        exit(1);
-    }
-*/
-    int i;
+    /* //Create window
+     window = SDL_CreateWindow( "SDL Tutorial", 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN|SDL_WINDOW_BORDERLESS );
+     if( window == NULL ) {
+         printf( "Window could not be created! SDL_Error: %s\n", SDL_GetError() );
+         exit(1);
+     }
+ */
 
     SDL_CreateWindowAndRenderer(SCREEN_WIDTH, SCREEN_HEIGHT, 0, &window, &renderer);
-    SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0);
-    SDL_RenderClear(renderer);
-    SDL_SetRenderDrawColor(renderer, 0, 255, 255, 255);
-
-
 
 }
 
@@ -50,7 +44,8 @@ void hal_render() {
     bool quit = false;
 
     while (!quit) {
-        if (SDL_WaitEvent(&event)) {
+        if (SDL_PollEvent(&event)) {
+
 
             switch (event.type) {
                 case SDL_KEYDOWN:
@@ -91,8 +86,13 @@ void hal_render() {
                     quit = true;
                     break;
             }
+        } else {
+            SDL_Delay(10);
         }
 
+        SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0);
+        SDL_RenderClear(renderer);
+        SDL_SetRenderDrawColor(renderer, 0, 255, 255, 255);
         render();
         SDL_RenderPresent(renderer);
     }