Use prewalk-replace instead of my silly replace-all.
Walk through the form rather than using ad hoc list manipulation.
Extract a body fn to simplify the path in extract-local.