diff --git a/.gitignore b/.fossil-settings/ignore-glob
similarity index 58%
rename from .gitignore
rename to .fossil-settings/ignore-glob
index 5f50531..2089a51 100644
--- a/.gitignore
+++ b/.fossil-settings/ignore-glob
@@ -1,5 +1,5 @@
-**/*.o
-**/*.a
-
+*.o
+src/*.o
+*.a
 docs/html/
 docs/latex/
diff --git a/include/mastodont_error.h b/include/mastodont_error.h
index 8e1bec7..0172398 100644
--- a/include/mastodont_error.h
+++ b/include/mastodont_error.h
@@ -18,7 +18,6 @@
 #include <mastodont_types.h>
 #include <mastodont_fetch.h>
 
-int mstdnt_check_error(struct mstdnt_fetch_results* result,
-                       struct mstdnt_storage* storage);
+int mstdnt_check_error(struct mstdnt_storage* storage);
 
 #endif /* MASTODONT_ERROR_H */
diff --git a/include/mastodont_request.h b/include/mastodont_request.h
index 48a85a4..d16e9e2 100644
--- a/include/mastodont_request.h
+++ b/include/mastodont_request.h
@@ -29,9 +29,7 @@ struct mastodont_request_args
     size_t params_post_len;
     CURLoption request_type;
     void* args;
-    int (*callback)(struct mstdnt_fetch_results* results,
-                    struct mstdnt_storage* storage,
-                    void*);
+    int (*callback)(void*);
 };
 
 int mastodont_request(mastodont_t* data, struct mastodont_request_args* args);
diff --git a/src/error.c b/src/error.c
index 3adedfe..d6beca6 100644
--- a/src/error.c
+++ b/src/error.c
@@ -28,13 +28,10 @@ static void _mstdnt_val_errors_call(cJSON* v, void* _type)
     }
 }
 
-int mstdnt_check_error(struct mstdnt_fetch_results* results,
-                       struct mstdnt_storage* storage)
+int mstdnt_check_error(struct mstdnt_storage* storage)
 {
     int res = 0;
-    cJSON* root, *v;
-    if (_mstdnt_json_init(&root, results, storage))
-        return 1;
+    cJSON* v;
 
     /* Make sure empty */
     storage->error = NULL;
@@ -49,6 +46,8 @@ int mstdnt_check_error(struct mstdnt_fetch_results* results,
     
     for (v = root->child; v; v = v->next)
         if (_mstdnt_key_val_ref(v, refs, _mstdnt_arr_len(refs)) == 0)
+        {
             res = 1;
+        }
     return res;
 }
diff --git a/src/json_helper.c b/src/json_helper.c
index 1a67e99..4f902e6 100644
--- a/src/json_helper.c
+++ b/src/json_helper.c
@@ -26,9 +26,9 @@ int _mstdnt_json_init(cJSON** root,
                       struct mstdnt_storage* storage)
 {
     *root = cJSON_ParseWithLength(results->response, results->size);
+    storage->root = *root;
     if (*root == NULL)
         return 1;
-    storage->root = *root;
     storage->needs_cleanup = 1;
     return 0;
 }
diff --git a/src/request.c b/src/request.c
index 42ea5b6..ea2b884 100644
--- a/src/request.c
+++ b/src/request.c
@@ -74,6 +74,7 @@ int mastodont_request(mastodont_t* data, struct mastodont_request_args* args)
     int res = 0, curlerror = 0;
     struct mstdnt_storage* storage = args->storage;
     struct mstdnt_fetch_results results = { 0 };
+    cJSON* root;
     curl_mime* mime = NULL;
     char* post;
     // TODO debug me
@@ -115,19 +116,14 @@ int mastodont_request(mastodont_t* data, struct mastodont_request_args* args)
         goto cleanup;
     }
 
-
-    if (mstdnt_check_error(&results, storage))
+    // Create json structure
+    if (_mstdnt_json_init(&root, &results, storage) &&
+        mstdnt_check_error(&results, storage))
     {
-        res = 1;
-        goto cleanup_res;
+        /* Optional */
+        if (args->callback) res = args->callback(args->args);
     }
 
-    storage->needs_cleanup = 1;
-
-    /* Optional */
-    if (args->callback) res = args->callback(&results, storage, args->args);
-
-cleanup_res:
     mastodont_fetch_results_cleanup(&results);
 cleanup:
     if (args->params_post && args->request_type == CURLOPT_POST) free(post);
diff --git a/src/status.c b/src/status.c
index dfdb9ff..e94a9b9 100644
--- a/src/status.c
+++ b/src/status.c
@@ -123,20 +123,13 @@ int mstdnt_statuses_from_result(struct mstdnt_storage* storage,
                                 struct mstdnt_status* statuses[],
                                 size_t* size)
 {
-    cJSON* root, *status_j_list;
-    if (_mstdnt_json_init(&root, results, storage) &&
-        !cJSON_IsArray(root))
-        return 1;
-
-    return mstdnt_statuses_json(statuses, size, root);
+    return mstdnt_statuses_json(statuses, size, storage->root);
 }
 
 // GENERATE mstdnt_statuses_json
 GENERATE_JSON_ARRAY_FUNC(mstdnt_statuses_json, struct mstdnt_status, mstdnt_status_from_json)
 
-int _mstdnt_statuses_result_callback(struct mstdnt_fetch_results* results,
-                                     struct mstdnt_storage* storage,
-                                     void* _args)
+int mstdnt_statuses_json_callback(void* _args)
 {
     struct _mstdnt_statuses_cb_args* args = _args;
     return mstdnt_statuses_from_result(storage, results, args->statuses, args->size);
