almost entirely switched zip to being a variadic function, apart from test-zip