first pass of zipper implementation