added the parameter p