diff --git a/src/module/module_repo.c b/src/module/module_repo.c
index 71922468464e8cdaf59d0792afb96b524e9d6d10..80fc22e2be0f820bf9be242d1b8d2d1026afb6a8 100644
--- a/src/module/module_repo.c
+++ b/src/module/module_repo.c
@@ -93,7 +93,7 @@ struct ___file {
  *********************/
 
 /* Sleep a bit, to not overuse ressources */
-static inline void
+PRIVATE_FUNCTION void
 ___sleep(void)
 {
     struct timespec time_sleep = {
@@ -104,7 +104,7 @@ ___sleep(void)
 }
 
 /* Recursive mkdir, where the last word of the string is a file, not a folder. */
-static inline void
+PRIVATE_FUNCTION void
 ___mkdir(const char *dir, unsigned int umask)
 {
 #pragma message(TODO "Pour le Kubat du futur: inlude the umask from the conf")
@@ -131,14 +131,14 @@ ___mkdir(const char *dir, unsigned int umask)
     mkdir(tmp, umask);
 }
 
-static inline void
+PRIVATE_FUNCTION void
 ___craft_filename_obfuscate(char str[PATH_MAX], struct kara *kara)
 {
     /* Obfuscate filename */
     safe_snprintf(str, PATH_MAX, "%s%ld.mkv", kara->database_filepath, kara->id);
 }
 
-static inline void
+PRIVATE_FUNCTION void
 ___craft_filename_non_obfuscate(char str[PATH_MAX], struct kara *kara)
 {
     /* Not obfuscate filename, need to create directories, won't fail if not
@@ -152,7 +152,7 @@ ___craft_filename_non_obfuscate(char str[PATH_MAX], struct kara *kara)
                   kara->mdt.song_number, kara->mdt.song_name);
 }
 
-static inline void
+PRIVATE_FUNCTION void
 ___clean_file(struct ___file *f)
 {
     if (f->fd) {
@@ -161,7 +161,7 @@ ___clean_file(struct ___file *f)
     }
 }
 
-static inline void
+PRIVATE_FUNCTION void
 ___clean_memory(struct ___memory *m)
 {
     if (m->mem) {
@@ -171,14 +171,14 @@ ___clean_memory(struct ___memory *m)
     }
 }
 
-static size_t
+PRIVATE_FUNCTION size_t
 ___write_mem(char *data, size_t size, size_t nmem, void *user)
 {
     size_t realsize       = size * nmem;
     struct ___memory *mem = (struct ___memory *)user;
 
     void *ptr = realloc(mem->mem, mem->size + realsize);
-    RETURN_UNLESS(ptr, "Out of memory", 0);
+    FAIL_UNLESS(ptr, "Out of memory");
 
     mem->mem = ptr;
     memcpy(((uint8_t *)mem->mem) + mem->size, data, realsize);
@@ -186,12 +186,13 @@ ___write_mem(char *data, size_t size, size_t nmem, void *user)
     return realsize;
 }
 
-static size_t
+PRIVATE_FUNCTION size_t
 ___write_disk(char *data, size_t size, size_t nmem, void *user)
 {
     ssize_t realsize     = size * nmem;
     struct ___file *file = (struct ___file *)user;
     RETURN_IF(write(file->fd, data, realsize) != realsize, "Failed to write", 0);
+
     if (file->index < 4) {
         memcpy(file->magic + file->index, data, 4 - file->index);
         if (file->index + realsize >= 4) {
@@ -199,11 +200,12 @@ ___write_disk(char *data, size_t size, size_t nmem, void *user)
             RETURN_IF(mkv_magic(file->magic), "Magic number invalid, should be 0x1A45DFA3", 0);
         }
     }
+
     file->index += realsize;
     return realsize;
 }
 
-static int
+PRIVATE_FUNCTION int
 ___json_dl(const char *url, char **json)
 {
     RETURN_UNLESS(json, "Invalid argument", 1);
@@ -250,7 +252,7 @@ err:
     return ret;
 }
 
-static inline int
+PRIVATE_FUNCTION int
 ___download_kara(const char *url, const char *path, int override)
 {
     struct curl_slist *headers = NULL;
@@ -319,7 +321,7 @@ err:
     return ret;
 }
 
-static void
+PRIVATE_FUNCTION void
 ___handle_got_json_dl(struct kara *kara, int current_id)
 {
     /* Download the kara */
@@ -359,7 +361,7 @@ ___handle_got_json_dl(struct kara *kara, int current_id)
     LOG_INFO("REPO", "Added kara %ld from repo %s, filepath is %s", kara->id, kara->repo->name, kara->filename);
 }
 
-static int
+PRIVATE_FUNCTION int
 ___handle_got_json_internal_callback(const char *key, const char *val, int comp, void *user)
 {
     struct json_parse_arg *arg = (struct json_parse_arg *)user;
@@ -450,7 +452,7 @@ ___handle_got_json_internal_callback(const char *key, const char *val, int comp,
     return 0;
 }
 
-static inline int
+PRIVATE_FUNCTION int
 ___handle_got_json(volatile sqlite3 *db, struct module_repo_internal *repo, const char *json)
 {
     size_t len       = json_parse_get_count(json, 2);
@@ -487,7 +489,7 @@ ___handle_got_json(volatile sqlite3 *db, struct module_repo_internal *repo, cons
     return ret;
 }
 
-static inline void
+PRIVATE_FUNCTION void
 ___handle_deleted_kara(volatile sqlite3 *db)
 {
     size_t len, i;
@@ -502,7 +504,7 @@ ___handle_deleted_kara(volatile sqlite3 *db)
     free(kara_ids);
 }
 
-static void *
+PRIVATE_FUNCTION void *
 ___worker_update(void UNUSED *worker, void *___repo)
 {
     struct module_repo_internal *repo = ___repo;
@@ -543,7 +545,7 @@ end_no_lock:
     return NULL;
 }
 
-static void *
+PRIVATE_FUNCTION void *
 ___worker_rescan(void UNUSED *worker, void *___repo)
 {
     struct module_repo_internal *repo = ___repo;
@@ -572,7 +574,7 @@ end_no_lock:
     return NULL;
 }
 
-static int
+PRIVATE_FUNCTION int
 ___handle_fav_list_internal(const char UNUSED *key, const char *val, int UNUSED comp, void *user)
 {
     if (val == NULL)
@@ -600,7 +602,7 @@ ___handle_fav_list_internal(const char UNUSED *key, const char *val, int UNUSED
     return 0;
 }
 
-static inline void
+PRIVATE_FUNCTION void
 ___handle_fav_list(struct module_repo_internal *repo, char *fav, size_t fav_size)
 {
     char *json;
@@ -650,7 +652,7 @@ ___handle_fav_list(struct module_repo_internal *repo, char *fav, size_t fav_size
     free(json);
 }
 
-static int
+PRIVATE_FUNCTION int
 ___worker_import_favorites_internal(const char UNUSED *k, const char *val, int UNUSED c, void *user)
 {
     if (val == NULL)
@@ -668,14 +670,13 @@ ___worker_import_favorites_internal(const char UNUSED *k, const char *val, int U
 
     char fav[LKT_LINE_MAX];
     safe_strncpy(fav, val, LKT_LINE_MAX);
-#pragma message(TODO "Add a way to use the workers to do this for each fav list")
     LOG_INFO("REPO", "Processing favorite list: %s", fav);
     ___handle_fav_list(repo, fav, LKT_LINE_MAX);
     lkt_queue_send(repo->queue, LKT_EVENT_DB_UPDATE_TICK, NULL);
     return 0;
 }
 
-static void *
+PRIVATE_FUNCTION void *
 ___worker_import_favorites(void *worker, void *___repo)
 {
     struct module_repo_internal *repo = ___repo;
@@ -718,7 +719,7 @@ end_no_lock:
  * Functions that will be wrapped and exported *
  ***********************************************/
 
-static inline void
+PRIVATE_FUNCTION void
 module_repo_close(struct module_repo_internal *repo)
 {
     LOG_INFO("REPO", "Waiting for workers to finish");
@@ -726,7 +727,7 @@ module_repo_close(struct module_repo_internal *repo)
     LOG_INFO("REPO", "All workers have finished");
 }
 
-static inline bool
+PRIVATE_FUNCTION bool
 module_repo_new(struct module_repo_internal *repo_, struct queue *queue, volatile sqlite3 *db)
 {
     RETURN_UNLESS(repo_ && queue && db, "Invalid argument", 1);
@@ -793,7 +794,7 @@ module_repo_new(struct module_repo_internal *repo_, struct queue *queue, volatil
  * Export functions *
  ********************/
 
-static int
+PRIVATE_FUNCTION int
 mod_new(va_list *va)
 {
     va_list copy;
@@ -817,14 +818,14 @@ mod_new(va_list *va)
     return !ret;
 }
 
-static int
+PRIVATE_FUNCTION int
 mod_close(va_list UNUSED *va)
 {
     LOG_ERROR("ERROR", "Operation 'close' not supported on module");
     return 1;
 }
 
-static int
+PRIVATE_FUNCTION int
 mod_free(va_list *va)
 {
     va_list copy;
@@ -850,7 +851,7 @@ mod_free(va_list *va)
     return 0;
 }
 
-static int
+PRIVATE_FUNCTION int
 mod_update(va_list *va)
 {
     va_list copy;
@@ -879,7 +880,7 @@ end_no_lock:
     return ret;
 }
 
-static int
+PRIVATE_FUNCTION int
 mod_rescan(va_list *va)
 {
     va_list copy;
@@ -908,7 +909,7 @@ end_no_lock:
     return ret;
 }
 
-static int
+PRIVATE_FUNCTION int
 mod_import(va_list *va)
 {
     va_list copy;