private funciton