introduce wrap-with-mode