diff --git a/src/cpu/pred/statistical_corrector.cc b/src/cpu/pred/statistical_corrector.cc
index 8ddae9b..3059595 100644
--- a/src/cpu/pred/statistical_corrector.cc
+++ b/src/cpu/pred/statistical_corrector.cc
@@ -65,7 +65,8 @@
     extraWeightsWidth(p->extraWeightsWidth),
     scCountersWidth(p->scCountersWidth),
     firstH(0),
-    secondH(0)
+    secondH(0),
+    stats(this)
 {
     wb.resize(1 << logSizeUps, 4);
 
@@ -376,9 +377,9 @@
 StatisticalCorrector::updateStats(bool taken, BranchInfo *bi)
 {
     if (taken == bi->scPred) {
-        scPredictorCorrect++;
+        stats.correct++;
     } else {
-        scPredictorWrong++;
+        stats.wrong++;
     }
 }
 
@@ -396,16 +397,12 @@
     return 0;
 }
 
-void
-StatisticalCorrector::regStats()
+StatisticalCorrector::StatisticalCorrectorStats::StatisticalCorrectorStats(
+    Stats::Group *parent)
+    : Stats::Group(parent),
+      ADD_STAT(correct, "Number of time the SC predictor is the"
+          " provider and the prediction is correct"),
+      ADD_STAT(wrong, "Number of time the SC predictor is the"
+          " provider and the prediction is wrong")
 {
-    scPredictorCorrect
-        .name(name() + ".scPredictorCorrect")
-        .desc("Number of time the SC predictor is the provider and "
-              "the prediction is correct");
-
-    scPredictorWrong
-        .name(name() + ".scPredictorWrong")
-        .desc("Number of time the SC predictor is the provider and "
-              "the prediction is wrong");
 }
diff --git a/src/cpu/pred/statistical_corrector.hh b/src/cpu/pred/statistical_corrector.hh
index 2e8e502..b61f0d8 100644
--- a/src/cpu/pred/statistical_corrector.hh
+++ b/src/cpu/pred/statistical_corrector.hh
@@ -182,9 +182,12 @@
     int8_t firstH;
     int8_t secondH;
 
-    // stats
-    Stats::Scalar scPredictorCorrect;
-    Stats::Scalar scPredictorWrong;
+    struct StatisticalCorrectorStats : public Stats::Group {
+        StatisticalCorrectorStats(Stats::Group *parent);
+        Stats::Scalar correct;
+        Stats::Scalar wrong;
+    } stats;
+
   public:
     struct BranchInfo
     {
@@ -260,7 +263,6 @@
         int64_t phist) = 0;
 
     void init() override;
-    void regStats() override;
     void updateStats(bool taken, BranchInfo *bi);
 
     virtual void condBranchUpdate(ThreadID tid, Addr branch_pc, bool taken,
