still trying to figure out zipper (plus recursion)