The same unfold is being performed in 3 spots.  What about a private unfold() method?