rewrite the whole walk, does not compile