rework DDP as a module