avoid multiple definitions of function when include