added acknowledgments and a general definition encompassing precomposition with product