Added Builder pattern with domain driven design