diff --git a/signal_detection.py b/signal_detection.py
index a8e2bb0d6bb8ceb093005b6a6df095fb8dd6aa73..722c27166d36be196886ef64c29188b8e39116b2 100644
--- a/signal_detection.py
+++ b/signal_detection.py
@@ -108,6 +108,7 @@ def setup(intensity,task,DEBUG=False):
 def run_block(subject,intensity,p=0.5,num_of_blocks=1,task='yes-no',DEBUG=False):
     from psychopy import core, visual, event, monitors, logging
     data = load_data(subject)
+    data_list = []
     if len(data)>0:
         block = data['block'].max()+1
     else:
@@ -210,13 +211,18 @@ def run_block(subject,intensity,p=0.5,num_of_blocks=1,task='yes-no',DEBUG=False)
                  'false_alarm': int(not(s) and r),
                  'correct': int(s==r),
                  'RT': rt}
-        data = data.append(ndata, ignore_index=True)
+        # append has been deprecated and this should be done differently
+        # data = data.append(ndata, ignore_index=True)
+        # data.loc[len(data)] = ndata # this becomes slower with growing frame
+        data_list.append(ndata)
         # after a number of trials have been done save
         if ((i+1) % params['num_of_trials']) == 0:
+            data = pd.concat([data, pd.DataFrame(data_list)])
             data.to_csv(params['filename'],header=True,index=False)
             pc = data[data['block']==block]['correct'].mean()
             text = '%d of %d trials done. %.2f%% correct in last block.\nAny key to continue.'%(i+1,num_of_trials,pc*100)
             block = block + 1
+            data_list = [] # clear data from last block
             message = visual.TextStim(win, pos=[0,100],text=text)
             message.draw()
             win.flip()