now can wrap function