public IResult<string> CreateCompany(ICreateCompanyParameters parameters) { if(parameters == null) { throw new ArgumentNullException("parameters"); } var parsedParametersResult = parameters.ToParsedParameters(); if(!parsedParametersResult.Success) { return parsedParametersResult.ConvertTo<string>(); } var createResult = new CreateCompanyCommand(_companyUnitOfWork).Execute(_timeStamper.CurrentTimeStamp, parsedParametersResult.ResultingObject); if(!createResult.Success) { return createResult.ConvertTo<string>(); } _companyUnitOfWork.Commit(); var companyKey = createResult.ResultingObject.ToCompanyKey(); return SyncParameters.Using(new SuccessResult<string>(companyKey), companyKey); }