Index: proj/libs/graph/include/font.h
===================================================================
--- proj/libs/graph/include/font.h	(revision 312)
+++ proj/libs/graph/include/font.h	(revision 313)
@@ -16,10 +16,14 @@
 struct font;
 typedef struct font font_t;
 font_t* (font_ctor)(const char *s);
-void    (font_dtor)(font_t *p);
+int     (font_dtor)(font_t *p);
 
 font_t *consolas;
+font_t *default_font;
 
+int (font_init)(void);
+int (font_free)(void);
+
 struct text;
 typedef struct text text_t;
 text_t* (text_ctor)(const font_t *fnt, const char *txt);
Index: proj/libs/graph/src/font.c
===================================================================
--- proj/libs/graph/src/font.c	(revision 312)
+++ proj/libs/graph/src/font.c	(revision 313)
@@ -84,14 +84,32 @@
         return NULL;
     }
 }
-void (font_dtor)(font_t *p){
-    if(p == NULL) return;
+int (font_dtor)(font_t *p){
+    if(p == NULL) return SUCCESS;
     for(size_t i = 0; i < p->nchars; ++i)
         glyph_dtor(p->glyphs[i]);
     free(p->glyphs);
     free(p);
+    return SUCCESS;
 }
 
+font_t *consolas = NULL;
+font_t *default_font = NULL;
+
+int (font_init)(void){
+    consolas = font_ctor("/home/lcom/labs/proj/media/font/Consolas/xpm2");
+    if(consolas == NULL) return NULL_PTR;
+    default_font = consolas;
+    return SUCCESS;
+}
+int (font_free)(void){
+    int r;
+    if((r = font_dtor(consolas))) return r;
+    consolas = NULL;
+    default_font = NULL;
+    return SUCCESS;
+}
+
 struct text{
     const font_t *fnt;
     char *txt;
Index: proj/libs/uart/src/hltp.c
===================================================================
--- proj/libs/uart/src/hltp.c	(revision 312)
+++ proj/libs/uart/src/hltp.c	(revision 313)
@@ -111,7 +111,6 @@
 
     return ret;
 }
-
 int hltp_send_remote_info(const remote_info_t *p) {
     // struct size
     size_t struct_size = sizeof(keys_t) + sizeof(int32_t) * 2 + sizeof(size_t) + sizeof(double) * (3 *p->bullets_shot);
Index: proj/src/ent.c
===================================================================
--- proj/src/ent.c	(revision 312)
+++ proj/src/ent.c	(revision 313)
@@ -41,7 +41,7 @@
     ret->y = 0.0;
     ret->health = 100;
     ret->current_health = ret->health;
-    ret->txt = text_ctor(consolas, "");
+    ret->txt = text_ctor(default_font, "");
     ret->type = type;
     ret->team = team;
     ret->dude   = sprite_ctor(dude  );
Index: proj/src/proj.c
===================================================================
--- proj/src/proj.c	(revision 312)
+++ proj/src/proj.c	(revision 313)
@@ -49,7 +49,6 @@
     return 0;
 }
 
-font_t               *consolas      = NULL;
 basic_sprite_t       *bsp_crosshair = NULL;
 basic_sprite_t       *bsp_shooter   = NULL;
 basic_sprite_t       *bsp_zombie    = NULL;
@@ -66,8 +65,7 @@
 
     int r;
 
-    consolas = font_ctor("/home/lcom/labs/proj/media/font/Consolas/xpm2");
-    if(consolas == NULL){ printf("Failed to load consolas\n"); return 1; }
+    if(font_init()){ printf("Failed to initialize fonts\n"); return 1; }
 
     /// subscribe interrupts
     if (subscribe_all()) { return 1; }
@@ -82,7 +80,7 @@
     /// Load stuff
     {
         graph_clear_screen();
-        text_t *txt = text_ctor(consolas, "Loading...");
+        text_t *txt = text_ctor(default_font, "Loading...");
         text_set_pos(txt, graph_get_XRes()/2, graph_get_YRes()/2);
         text_set_valign(txt, text_valign_center);
         text_set_halign(txt, text_halign_center);
@@ -102,7 +100,7 @@
         sp_crosshair = sprite_ctor(bsp_crosshair); if(sp_crosshair == NULL) printf("Failed to get crosshair sprite\n");
     }
 
-    menu_t *main_menu = menu_ctor(consolas);
+    menu_t *main_menu = menu_ctor(default_font);
     menu_add_item(main_menu, "Single player");
     menu_add_item(main_menu, "Multiplayer");
     menu_add_item(main_menu, "Chat");
@@ -167,7 +165,7 @@
     basic_sprite_dtor      (bsp_pistol   ); bsp_pistol    = NULL;
     basic_sprite_dtor      (bsp_nothing  ); bsp_nothing   = NULL;
     map_dtor               (map1         ); map1          = NULL;
-    font_dtor              (consolas     ); consolas      = NULL;
+    if(font_free()){ printf("Failed to free fonts\n"); return 1; }
 
     // Unsubscribe interrupts
     if (unsubscribe_all()) {
@@ -207,7 +205,7 @@
 static int (multiplayer)(void) {
     int r;
 
-    menu_t *main_menu = menu_ctor(consolas);
+    menu_t *main_menu = menu_ctor(default_font);
     menu_add_item(main_menu, "Create");
     menu_add_item(main_menu, "Connect");
     menu_add_item(main_menu, "Back");
@@ -272,7 +270,7 @@
     nctp_set_processor(multiplayer_process);/*
 
     ent_set_scale(DEFAULT_SCALE);
-    text_timer_t *in_game_timer = timer_ctor(consolas);
+    text_timer_t *in_game_timer = timer_ctor(default_font);
 
     list_t *shooter_list = list_ctor();
 
@@ -336,7 +334,7 @@
     nctp_set_processor(multiplayer_process);
 
     ent_set_scale(DEFAULT_SCALE);
-    text_timer_t *in_game_timer = timer_ctor(consolas);
+    text_timer_t *in_game_timer = timer_ctor(default_font);
 
     list_t *shooter_list = list_ctor();
 
@@ -400,7 +398,7 @@
 
     int r;
 
-    menu_t *main_menu = menu_ctor(consolas);
+    menu_t *main_menu = menu_ctor(default_font);
     menu_add_item(main_menu, "Campaign");
     menu_add_item(main_menu, "Zombies");
     menu_add_item(main_menu, "Back");
@@ -464,7 +462,7 @@
     int r;
 
     ent_set_scale(DEFAULT_SCALE);
-    text_timer_t *in_game_timer = timer_ctor(consolas);
+    text_timer_t *in_game_timer = timer_ctor(default_font);
 
     list_t *shooter_list = list_ctor();
 
@@ -572,7 +570,7 @@
     int r;
 
     ent_set_scale(DEFAULT_SCALE);
-    text_timer_t *in_game_timer = timer_ctor(consolas);
+    text_timer_t *in_game_timer = timer_ctor(default_font);
 
     list_t *shooter_list = list_ctor();
 
@@ -751,7 +749,7 @@
         rectangle_set_fill_trans(r_buffer, GRAPH_TRANSPARENT);
     }
     text_t      *t_buffer = NULL; {
-        t_buffer = text_ctor(consolas, "");
+        t_buffer = text_ctor(default_font, "");
         text_set_pos(t_buffer, rectangle_get_x(r_buffer)+50,
         rectangle_get_y(r_buffer)+rectangle_get_h(r_buffer)/2);
         text_set_halign(t_buffer, text_halign_left);
@@ -759,7 +757,7 @@
         text_set_color (t_buffer, TEXT_COLOR);
     }
     text_t      *t_size   = NULL; {
-        t_size = text_ctor(consolas, "");
+        t_size = text_ctor(default_font, "");
         text_set_pos(t_size, rectangle_get_x(r_buffer)+rectangle_get_w(r_buffer)-5,
         rectangle_get_y(r_buffer)+rectangle_get_h(r_buffer)-5);
         text_set_halign(t_size, text_halign_right);
@@ -782,7 +780,7 @@
     }
     /** t_text */ {
     for(size_t i = 0; i < CHAT_MAX_NUM; ++i){
-        t_text[i] = text_ctor(consolas, " ");
+        t_text[i] = text_ctor(default_font, " ");
         text_set_pos(t_text[i], rectangle_get_x(r_text)+50,
         rectangle_get_y(r_text)+rectangle_get_h(r_text)-30-25*i);
         text_set_halign(t_text[i], text_halign_left);
