fifo with interfaces