fix and simplify walk