updated P* model