diff --git a/.travis.yml b/.travis.yml
index ad450bf7db23168eb40a455e8989e4b1932b1493..66d7e23ddf3d56a44f2a3c2955f2b8818afd6eb2 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -22,4 +22,4 @@ compiler:
   - gcc
 script:
   - mkdir build && cd build
-  - cmake -DCMAKE_BUILD_TYPE=Release .. && make -j4 && make install
+  - cmake -DCMAKE_BUILD_TYPE=RelwithDebInfo .. && make -j4 && make install
diff --git a/src/lowlevel_feature_extractor.cpp b/src/lowlevel_feature_extractor.cpp
index 20452cb545de72c022ce51468e5a269363c2eaf4..f15985f8d01699edbbe8f1e736625f9dd4ffb5c3 100644
--- a/src/lowlevel_feature_extractor.cpp
+++ b/src/lowlevel_feature_extractor.cpp
@@ -16,6 +16,7 @@ LowLevelFeatureExtractor::LowLevelFeatureExtractor(int num_teammates,
   assert(numOpponents >= 0);
   numFeatures = num_basic_features +
       features_per_player * (numTeammates + numOpponents);
+  numFeatures += numTeammates + numOpponents; // Uniform numbers
   feature_vec.resize(numFeatures);
 }
 
@@ -184,6 +185,38 @@ const std::vector<float>& LowLevelFeatureExtractor::ExtractFeatures(
       addFeature(0);
     }
   }
+
+  // ========================= UNIFORM NUMBERS ========================== //
+  detected_teammates = 0;
+  for (PlayerPtrCont::const_iterator it = teammates.begin();
+       it != teammates.end(); ++it) {
+    PlayerObject* teammate = *it;
+    if (teammate->pos().x > 0 && teammate->unum() > 0 &&
+        detected_teammates < numTeammates) {
+      addFeature(teammate->unum());
+      detected_teammates++;
+    }
+  }
+  // Add zero features for any missing teammates
+  for (int i=detected_teammates; i<numTeammates; ++i) {
+    addFeature(0);
+  }
+
+  detected_opponents = 0;
+  for (PlayerPtrCont::const_iterator it = opponents.begin();
+       it != opponents.end(); ++it) {
+    PlayerObject* opponent = *it;
+    if (opponent->pos().x > 0 && opponent->unum() > 0 &&
+        detected_opponents < numOpponents) {
+      addFeature(opponent->unum());
+      detected_opponents++;
+    }
+  }
+  // Add zero features for any missing opponents
+  for (int i=detected_opponents; i<numOpponents; ++i) {
+    addFeature(0);
+  }
+
   assert(featIndx == numFeatures);
   checkFeatures();
   return feature_vec;
diff --git a/src/lowlevel_feature_extractor.h b/src/lowlevel_feature_extractor.h
index 22d90890955c5de4be786b24751648ce43ef0a4d..8d19e573d77e544f0fdf6be7c0d812106817535b 100644
--- a/src/lowlevel_feature_extractor.h
+++ b/src/lowlevel_feature_extractor.h
@@ -17,7 +17,7 @@ public:
 protected:
   // Number of features for non-player objects.
   const static int num_basic_features = 58;
-  // Number of features for each player or opponent in game.
+  // Number of features for each player or opponent in game, not including uniform numbers.
   const static int features_per_player = 8;
 };