   // loseSomeTime can only sleep for up to just over a minute (65535
   // milliseconds) so to get decent sleep intervals, we'll loop through
   // a number of times
-  for (int i =0; i < kReportInterval; i++) {
-    lastReportTime = millis();
-    while (Sleepy::loseSomeTime((60*1000)-(millis()-lastReportTime)) == 0)
-    {
-      // It was interrupted by the movement trigger, go back to sleep
-#if 0
-      digitalWrite(4, HIGH);
+  for (int readingIdx = 0; readingIdx < kReadingsPerReport; readingIdx++)
+  {
+    for (int i =0; i < kReadingInterval; i++) {
+      lastReadingTime = millis();
+#if DEBUG
+      delay(60000);
+#else
+      while (Sleepy::loseSomeTime((60*1000)-(millis()-lastReadingTime)) == 0)
+      {
+        // It was interrupted by the movement trigger, go back to sleep
+      }
+#endif
+    }
+    // Store these readings
+    // Record what our battery level is now too  
+    // A4 is measuring the mid-point of a 100k/100k voltage divider
+    batteryReadings[readingIdx].setFloat(analogRead(A4)*2.0*3.3/1023.0);
+    // And whether or not we're charging
+    chargingReadings[readingIdx].setInt(analogRead(A5));
+    // Plus how much memory is free (so we'll maybe spot memory leaks)
+    freeMemReadings[readingIdx].setInt(FreeRam());
+    
+    sensorReadings[readingIdx].setInt(movementCount);
+    movementCount = 0;
+    for (int i=0; i < sensorReadings[readingIdx].getInt(); i++)
+    {
+      digitalWrite(13, LOW);
       delay(300);
-      digitalWrite(4, LOW);
-#endif
+      digitalWrite(13, HIGH);
+      delay(200);
     }
   }
 
   digitalWrite(13, LOW);
-  delay(1000);
+
+#if 1
+  reportMovementCount();
   digitalWrite(13, HIGH);
-  
+#else
   if (movementCount > lastMovementCount)
   {
     int diff = movementCount - lastMovementCount;

      digitalWrite(4, LOW);
    }
  }
  
  // Record what our battery level is now too  
  // A4 is measuring the mid-point of a 100k/100k voltage divider
  datastreams[0].setFloat(analogRead(A4)*2.0*3.3/1023.0);
  // And whether or not we're charging
  datastreams[1].setInt(analogRead(A5));
  
  datastreams[2].setInt(aCount); 
  
  if (xivelyclient.put(feed, xivelyKey) < 0)
  {
    // Something went wrong

      delay(200);
    }
  }
#if DEBUG
  Serial.println("finished putting data");
#endif

  while ( gsmAccess.shutdown() != 1 ) {
    delay (1000);
