diff --git a/src/rmi_splitter/rmi_splitter.py b/src/rmi_splitter/rmi_splitter.py
index 8c0abdf2a0aaf3938d23dd0b8017520fd78623b5..2391e5aa93edbb572a5cae0abe56a7d4a08de8af 100644
--- a/src/rmi_splitter/rmi_splitter.py
+++ b/src/rmi_splitter/rmi_splitter.py
@@ -589,15 +589,22 @@ def write_seqs(reads_list, fouts, config, sample, verbose=False):
         ntuple += 1
 
 
-def read_reads(fins, reads_list, ntuple):
+def read_reads(fins, reads_list, ntuple, line_number):
     """
     read a read from handle
 
     params: fin file  handle
     return: read str()
     """
-    for reads in ntuple:
-        reads_list[reads-1].read(fin=fins[reads-1])
+    if line_number == 0:
+        for reads in ntuple:
+            reads_list[reads-1].header = fins[reads-1]
+    if line_number == 1:
+        for reads in ntuple:
+            reads_list[reads-1].seq = fins[reads-1]
+    if line_number == 3:
+        for reads in ntuple:
+            reads_list[reads-1].str2qual(fins[reads-1])
     return reads_list
 
 
@@ -616,6 +623,7 @@ def parse_ntuples_fastq(ffastqs,
     barcode_dictionary = create_barcode_dictionaries(config=config,
                                                      mismatch=mismatch)
     sequences_number = 0
+    line_number = 0
     reads_list = list()
     for read in ntuple:
         reads_list.append(Reads())
@@ -624,16 +632,21 @@ def parse_ntuples_fastq(ffastqs,
             fins=list_ffastqs,
             ntuple=ntuple,
             reads_list=reads_list,
+            line_number=line_number,
         )
-        sample = assign_reads(reads_list=reads_list,
-                              config=config,
-                              barcode_dictionary=barcode_dictionary,
-                              verbose=verbose)
-        write_seqs(reads_list=reads_list,
-                   fouts=fouts,
-                   config=config,
-                   sample=sample,
-                   verbose=verbose)
+        if line_number == 3:
+            sample = assign_reads(reads_list=reads_list,
+                                  config=config,
+                                  barcode_dictionary=barcode_dictionary,
+                                  verbose=verbose)
+            write_seqs(reads_list=reads_list,
+                       fouts=fouts,
+                       config=config,
+                       sample=sample,
+                       verbose=verbose)
+            line_number = 0
+        else:
+            line_number += 1
         sequences_number += 1
     print("number of processed sequences: " +
           str(sequences_number-1) +