modularize wrap function