Final FIFO
refactored to use node struct