by jzj add private func