Don't use IO monad for traversal