converted fifo to use pointers instead of offsets