parameterize and allow multiple FIFOs