some functions I often reuse , Collected here