Redesigned the Domain* objects and moved them to differnent packages.