use fifo for data handling