move wrap function out