implement halve and zip