Separated DM interface from implementation.