updated piper fn