Introduced DmObject, refactor decorators and test