another wrap() version