this function use only for internal