diff --git a/.travis.yml b/.travis.yml
index cd46dcf5..1b16400a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -48,7 +48,7 @@ jobs:
     - stage: 'Unit Tests'
       language: csharp
       dist: xenial
-      mono: 5.2.0
+      mono: 6.12.0
       solution: "./OptimizelySDK.Travis.sln"
       install:
         - nuget restore ./OptimizelySDK.Travis.sln
@@ -67,9 +67,9 @@ jobs:
     - stage: 'NetStandard16'
       language: csharp
       # dotnet only works on trusty https://github.com/travis-ci/travis-ci/issues/5189
-      dist: trusty
+      dist: xenial
       mono: none
-      dotnet: 2.1.502
+      dotnet: 3.1
       install:
         - dotnet restore OptimizelySDK.NetStandard16/OptimizelySDK.NetStandard16.csproj
       script:
@@ -84,9 +84,9 @@ jobs:
     - stage: 'NetStandard20'
       language: csharp
       # dotnet only works on trusty https://github.com/travis-ci/travis-ci/issues/5189
-      dist: trusty
+      dist: xenial
       mono: none
-      dotnet: 2.1.502
+      dotnet: 3.1
       install:
         - dotnet restore OptimizelySDK.NetStandard20/OptimizelySDK.NetStandard20.csproj
       script:
diff --git a/OptimizelySDK/OptlyConfig/OptimizelyConfigService.cs b/OptimizelySDK/OptlyConfig/OptimizelyConfigService.cs
index 53ad7899..ae7a26e1 100644
--- a/OptimizelySDK/OptlyConfig/OptimizelyConfigService.cs
+++ b/OptimizelySDK/OptlyConfig/OptimizelyConfigService.cs
@@ -227,12 +227,11 @@ private IDictionary<string, OptimizelyFeature> GetFeaturesMap(ProjectConfig proj
             foreach (var featureFlag in projectConfig.FeatureFlags)   
             {
 
-                var featureExperimentMap = experimentsMapById.Where(expMap => featureFlag.ExperimentIds.Contains(expMap.Key))
-                    .ToDictionary(k => k.Value.Key, v => v.Value);
+                var experimentRules = featureFlag.ExperimentIds.Select(experimentId => experimentsMapById[experimentId]).ToList();
 
                 var featureVariableMap = featureFlag.Variables.Select(v => (OptimizelyVariable)v).ToDictionary(k => k.Key, v => v) ?? new Dictionary<string, OptimizelyVariable>();
 
-                var experimentRules = featureExperimentMap.Select(exMap => exMap.Value).ToList();
+                var featureExperimentMap = experimentRules.ToDictionary(experiment => experiment.Key, experiment => experiment);
                 var rollout = projectConfig.GetRolloutFromId(featureFlag.RolloutId);
                 var deliveryRules = GetDeliveryRules(featureFlag.Id, rollout.Experiments, projectConfig);