add detect function