refactor DCM