diff --git a/recipes-app/fofb-init/files/configuration b/recipes-app/fofb-init/files/configuration.example
similarity index 100%
rename from recipes-app/fofb-init/files/configuration
rename to recipes-app/fofb-init/files/configuration.example
diff --git a/recipes-app/simple-test/files/archiver.cpp b/recipes-app/simple-test/files/archiver.cpp
index 79efed7b53a74d90022b65ccf82810d980758f64..4a315cf086fca24d18525f01f9b2c28664e091c2 100644
--- a/recipes-app/simple-test/files/archiver.cpp
+++ b/recipes-app/simple-test/files/archiver.cpp
@@ -9,6 +9,7 @@
 #include <errno.h>
 #include <ctime>
 
+
 int main(){
 
     int fd_ddr, fd_ddr_sro;     // File descriptors for DDR4
@@ -23,6 +24,7 @@ int main(){
     char fdate[32];
     time_t t;
     char *src;
+    uint8_t cur_buf;
     struct pollfd pfd;
 
     // Initialize ChimeraTK ===================================================
@@ -39,8 +41,8 @@ int main(){
         dev.getScalarRegisterAccessor<uint32_t>("APP/DAQ_CONTROL");
     ChimeraTK::OneDRegisterAccessor<uint32_t> daq_tabsel =
         dev.getOneDRegisterAccessor<uint32_t>("APP/daq_0/TAB_SEL");
-    ChimeraTK::OneDRegisterAccessor<uint32_t> daq_curbuff =
-        dev.getOneDRegisterAccessor<uint32_t>("APP/daq_0/ACTIVE_BUF");
+    ChimeraTK::ScalarRegisterAccessor<uint32_t> daq_curbuff =
+        dev.getScalarRegisterAccessor<uint32_t>("APP/daq_0/ACTIVE_BUF");
 
     // Open DDR access ========================================================
     // Open file descriptor for DDR4
@@ -61,10 +63,37 @@ int main(){
     };
 
     // Initialize DAQ =========================================================
-    // Disable DAQ, mask IRQ
+    // Disable DAQ
     daq_enable = 0;
     daq_enable.write();
+
+    // Flushing interrupts
+    //*
+    rp = 1;
+    while (rp >= 1) {
+        fprintf(stdout, "Flushing interrupt...\n");
+
+        //  unmask irq
+        s_wr = write(fd_ddr, &unmask, sizeof(unmask));
+        if (s_wr != (ssize_t)sizeof(unmask)) {
+            fprintf(stderr, "Error when unmasking interrupt !\n");
+            return -3;
+        };
+
+        rp = poll(&pfd, 1, 1000);
+
+        if (rp >= 1) {
+            read(fd_ddr, &info, sizeof(info));
+        };
+    };
+    // */
+
+    // Masking interrupt
     s_wr = write(fd_ddr, &mask, sizeof(mask));
+    if (s_wr != (ssize_t)sizeof(mask)) {
+        fprintf(stderr, "Error when masking interrupt !\n");
+        return -3;
+    };
 
     // Configure DAQ
     daq_dbuf_ena = 3;
@@ -77,6 +106,7 @@ int main(){
     daq_enable = 1;
     daq_enable.write();
     daq_curbuff.read();
+    cur_buf = daq_curbuff & (uint32_t)(1);
 
     // trigger
     daq_trigger = 1;
@@ -86,62 +116,88 @@ int main(){
 
     // ========================================================================
 
-    // Unmask interrupt
-    s_wr = write(fd_ddr, &unmask, sizeof(unmask));
-    if (s_wr != (ssize_t)sizeof(unmask)) {
-        fprintf(stderr, "Error when unmasking interrupt !\n");
-        return -3;
-    };
-
-    // Wait for interrupt
-    fprintf(stdout, "Waiting for interrupt...\n");
-    rp = poll(&pfd, 1, -1);     // Timeout = -1, infinite wait
-
-    if (rp >= 1) {
-        read(fd_ddr, &info, sizeof(info));
-        fprintf(stdout, "Read %d interrupts\n", info);
-    } else if (rp == 0) {
-        fprintf(stderr, "Wait for IRQ interrupted, timeout or signal.\n");
-        return -4;
-    } else {
-        fprintf(stderr, "Failed poll.\n");
-        return -5;
-        //fprintf(stderr, "Failed poll. Relaunch for next iteration.\n");
-        //continue;
-    };
+    while(fcnt < 5) {
+        // Unmask interrupt
+        s_wr = write(fd_ddr, &unmask, sizeof(unmask));
+        if (s_wr != (ssize_t)sizeof(unmask)) {
+            fprintf(stderr, "Error when unmasking interrupt !\n");
+            return -3;
+        };
 
-    // Open destination file
-    t=time(0);
-    strftime(fdate, 32, "%Y%m%d_%H%M%S", localtime(&t));
-    snprintf(fname, 128, "/mnt/data/archive_files/file_%s.bin", fdate);
-    fd_dst = open(fname, O_CREAT | O_WRONLY | O_APPEND , 0666);
-    if (fd_dst <= 0) {
-        fprintf(stderr, "Failed to open destination file '%s'.\n", fname);
-        return -2;
-    };
+        // Wait for interrupt
+        fprintf(stdout, "Waiting for interrupt...\n");
+        rp = poll(&pfd, 1, -1);     // Timeout = -1, infinite wait
+
+        if (rp >= 1) {
+            read(fd_ddr, &info, sizeof(info));
+            fprintf(stdout, "Read interrupt %d\n", info);
+        } else if (rp == 0) {
+            fprintf(stderr, "Wait for IRQ interrupted, timeout or signal.\n");
+            return -4;
+        } else {
+            fprintf(stderr, "Failed poll.\n");
+            return -5;
+            //fprintf(stderr, "Failed poll. Relaunch for next iteration.\n");
+            //continue;
+        };
 
-    fprintf(stdout, "Write to file '%s'.\n", fname);
-    // Copy data, whole block
-    /*
-    s_wr = write(fd_dst, &src, 0x08000000);
-    if (s_wr < 0x08000000) {
-        fprintf(stderr, "Error while writing to file '%s' (%d).\n", fname, s_wr);
-        return -6;
-    };
-    // */
+        // Ignore first one
+        fcnt += 1;
+        if (fcnt == 1) {
+            continue;
+        }
+
+        // Open destination file
+        t=time(0);
+        strftime(fdate, 32, "%Y%m%d_%H%M%S", localtime(&t));
+        snprintf(fname, 128, "/mnt/data/archive_files/file_%s.bin", fdate);
+        fd_dst = open(fname, O_CREAT | O_WRONLY | O_APPEND , 0666);
+        if (fd_dst <= 0) {
+            fprintf(stderr, "Failed to open destination file '%s'.\n", fname);
+            return -2;
+        };
 
-    // Copy data, page by page
-    //*
-    for (i = 0 ; i < 0x08000 ; i++) {
-        s_wr = write(fd_dst, &src[i*0x1000], 0x1000);
-        if (s_wr < 0x1000) {
-            fprintf(stderr, "Error while writing to file '%s' (%d:%d).\n", fname, i, s_wr);
+        fprintf(stdout, "Write to file '%s'.\n", fname);
+        // Copy data, whole block
+        /*
+        s_wr = write(fd_dst, &src, 0x08000000);
+        if (s_wr < 0x08000000) {
+            fprintf(stderr, "Error while writing to file '%s' (%d).\n", fname, s_wr);
             return -6;
         };
-    };
-    // */
+        // */
+
+        // Copy data, page by page
+        //*
+        for (i = 0 ; i < 0x08000 ; i++) {
+            s_wr = write(fd_dst, &src[i*0x1000+cur_buf*0x08000000], 0x1000);
+            if (s_wr < 0x1000) {
+                fprintf(stderr, "Error while writing to file '%s' (%d:%d).\n", fname, i, s_wr);
+                return -6;
+            };
+        };
+        // */
+
+        // Copy data, element by element
+        /*
+        for (i=0 ; i < 0x00800000 ; i++) {
+            s_wr = write(fd_dst, &src[i*16 + 0 + cur_buf*0x08000000], 4);
+            s_wr = s_wr+ write(fd_dst, &src[i*16 + 4 + cur_buf*0x08000000], 4);
+            s_wr = s_wr+ write(fd_dst, &src[i*16 + 8 + cur_buf*0x08000000], 1);
+            s_wr = s_wr+ write(fd_dst, &src[i*16 + 12 + cur_buf*0x08000000], 1);
+            if (s_wr < 10) {
+                fprintf(stderr, "Error while writing to file '%s' (%d:%d).\n", fname, i, s_wr);
+                return -6;
+            };
+        };
+        */
 
-    close(fd_dst);
+
+        cur_buf = (cur_buf+1)%2;
+
+        close(fd_dst);
+
+    };
 
     // Disable DAQ, mask IRQ
     daq_enable = 0;