why not name 'p' as 'file'?