add some domain driven design code.