generalise pipe initialisation