updated pfunc