let empty =
   fun x _ g -> (x,g)