public IResult<string> CreateContact(ICreateContactParameters parameters) { if(parameters == null) { throw new ArgumentNullException("parameters"); } var parametersResults = parameters.ToParsedParameters(); if(!parametersResults.Success) { return parametersResults.ConvertTo<string>(); } var createResult = new CreateContactCommand(_companyUnitOfWork).Execute(parametersResults.ResultingObject); if(!createResult.Success) { return createResult.ConvertTo<string>(); } _companyUnitOfWork.Commit(); return SyncParameters.Using(new SuccessResult<string>(createResult.ResultingObject.ToContactKey()), createResult.ResultingObject.ToCompanyKey()); }