add exteranl function