split up the monad and the traverse