diff --git a/healthd/healthd.cpp b/healthd/healthd.cpp
index 89178fa..158274c 100644
--- a/healthd/healthd.cpp
+++ b/healthd/healthd.cpp
@@ -37,10 +37,11 @@
 // Periodic chores intervals in seconds
 #define DEFAULT_PERIODIC_CHORES_INTERVAL_FAST (60 * 1)
 #define DEFAULT_PERIODIC_CHORES_INTERVAL_SLOW (60 * 10)
-static int periodic_chores_interval_fast =
-        DEFAULT_PERIODIC_CHORES_INTERVAL_FAST;
-static int periodic_chores_interval_slow =
-        DEFAULT_PERIODIC_CHORES_INTERVAL_SLOW;
+
+static struct healthd_config healthd_config = {
+    .periodic_chores_interval_fast = DEFAULT_PERIODIC_CHORES_INTERVAL_FAST,
+    .periodic_chores_interval_slow = DEFAULT_PERIODIC_CHORES_INTERVAL_SLOW,
+};
 
 #define POWER_SUPPLY_SUBSYSTEM "power_supply"
 
@@ -84,7 +85,8 @@
     // slow wake interval when on battery (watch for drained battery).
 
    int new_wake_interval = gBatteryMonitor->update() ?
-        periodic_chores_interval_fast : periodic_chores_interval_slow;
+       healthd_config.periodic_chores_interval_fast :
+           healthd_config.periodic_chores_interval_slow;
 
     if (new_wake_interval != wakealarm_wake_interval)
             wakealarm_set_interval(new_wake_interval);
@@ -94,12 +96,12 @@
     // poll at fast rate while awake and let alarm wake up at slow rate when
     // asleep.
 
-    if (periodic_chores_interval_fast == -1)
+    if (healthd_config.periodic_chores_interval_fast == -1)
         awake_poll_interval = -1;
     else
         awake_poll_interval =
-            new_wake_interval == periodic_chores_interval_fast ?
-                -1 : periodic_chores_interval_fast * 1000;
+            new_wake_interval == healthd_config.periodic_chores_interval_fast ?
+                -1 : healthd_config.periodic_chores_interval_fast * 1000;
 }
 
 static void periodic_chores() {
@@ -150,10 +152,7 @@
         return;
     }
 
-    healthd_board_poll_intervals(&periodic_chores_interval_fast,
-                                 &periodic_chores_interval_slow);
-
-    wakealarm_set_interval(periodic_chores_interval_fast);
+    wakealarm_set_interval(healthd_config.periodic_chores_interval_fast);
 }
 
 static void wakealarm_event(void) {
@@ -262,6 +261,7 @@
         }
     }
 
+    healthd_board_init(&healthd_config);
     wakealarm_init();
     uevent_init();
     binder_init();
diff --git a/healthd/healthd.h b/healthd/healthd.h
index 18ad03a..895be40 100644
--- a/healthd/healthd.h
+++ b/healthd/healthd.h
@@ -19,25 +19,33 @@
 
 #include <batteryservice/BatteryService.h>
 
+// periodic_chores_interval_fast, periodic_chores_interval_slow: intervals at
+// which healthd wakes up to poll health state and perform periodic chores,
+// in units of seconds:
+//
+//    periodic_chores_interval_fast is used while the device is not in
+//    suspend, or in suspend and connected to a charger (to watch for battery
+//    overheat due to charging).  The default value is 60 (1 minute).  Value
+//    -1 turns off periodic chores (and wakeups) in these conditions.
+//
+//    periodic_chores_interval_slow is used when the device is in suspend and
+//    not connected to a charger (to watch for a battery drained to zero
+//    remaining capacity).  The default value is 600 (10 minutes).  Value -1
+//    tuns off periodic chores (and wakeups) in these conditions.
+
+struct healthd_config {
+    int periodic_chores_interval_fast;
+    int periodic_chores_interval_slow;
+};
+
 // The following are implemented in libhealthd_board to handle board-specific
 // behavior.
 //
-// Set periodic poll intervals in seconds.
-//
-// fast_interval is used while the device is not in suspend, or in suspend and
-// connected to a charger (to watch for battery overheat due to charging).
-// The default value is 60 (1 minute).  Value -1 turns off fast_interval
-// polling.
-//
-// slow_interval is used when the device is in suspend and not connected to a
-// charger (to watch for a battery drained to zero remaining capacity).  The
-// default value is 600 (10 minutes).  Value -1 tuns off slow interval
-// polling.
 //
 // To use the default values, this function can simply return without
 // modifying the parameters.
 
-void healthd_board_poll_intervals(int *fast_interval, int *slow_interval);
+void healthd_board_init(struct healthd_config *config);
 
 // Process updated battery property values.  This function is called when
 // the kernel sends updated battery status via a uevent from the power_supply
diff --git a/healthd/healthd_board_default.cpp b/healthd/healthd_board_default.cpp
index 82f37fe..b2bb516 100644
--- a/healthd/healthd_board_default.cpp
+++ b/healthd/healthd_board_default.cpp
@@ -16,7 +16,7 @@
 
 #include <healthd.h>
 
-void healthd_board_poll_intervals(int *fast_interval, int *slow_interval)
+void healthd_board_init(struct healthd_config *config)
 {
     // use defaults
 }
