implemented DPM