diff --git a/cmds/statsd/src/DropboxWriter.cpp b/cmds/statsd/src/DropboxWriter.cpp
index 37df834..b72e530 100644
--- a/cmds/statsd/src/DropboxWriter.cpp
+++ b/cmds/statsd/src/DropboxWriter.cpp
@@ -31,18 +31,17 @@
 DropboxWriter::DropboxWriter(const string& tag) : mTag(tag), mLogReport(), mBufferSize(0) {
 }
 
-void DropboxWriter::addStatsLogReport(const StatsLogReport& log) {
-    mLogReport = log;
-    flushIfNecessary(log);
-    mBufferSize += log.ByteSize();
+void DropboxWriter::addEventMetricData(const EventMetricData& eventMetricData) {
+    flushIfNecessary(eventMetricData);
+    EventMetricData* newEntry = mLogReport.mutable_event_metrics()->add_data();
+    newEntry->CopyFrom(eventMetricData);
+    mBufferSize += eventMetricData.ByteSize();
 }
 
-void DropboxWriter::flushIfNecessary(const StatsLogReport& log) {
-    // TODO: Decide to flush depending on the serialized size of the StatsLogReport.
-    // if (entry.ByteSize() + mBufferSize > kMaxSerializedBytes) {
-    //     flush();
-    // }
-    flush();
+void DropboxWriter::flushIfNecessary(const EventMetricData& eventMetricData) {
+    if (eventMetricData.ByteSize() + mBufferSize > kMaxSerializedBytes) {
+        flush();
+    }
 }
 
 void DropboxWriter::flush() {
diff --git a/cmds/statsd/src/DropboxWriter.h b/cmds/statsd/src/DropboxWriter.h
index 1fd0d75..6107685 100644
--- a/cmds/statsd/src/DropboxWriter.h
+++ b/cmds/statsd/src/DropboxWriter.h
@@ -32,7 +32,7 @@
      */
     DropboxWriter(const string& tag);
 
-    void addStatsLogReport(const StatsLogReport& log);
+    void addEventMetricData(const EventMetricData& eventMetricData);
 
     /* Request a flush to dropbox. */
     void flush();
@@ -61,7 +61,7 @@
 
     /* Check if the buffer size exceeds the max buffer size when the new entry is added, and flush
        the logs to dropbox if true. */
-    void flushIfNecessary(const StatsLogReport& log);
+    void flushIfNecessary(const EventMetricData& eventMetricData);
 };
 
 }  // namespace statsd
diff --git a/cmds/statsd/src/StatsLogProcessor.cpp b/cmds/statsd/src/StatsLogProcessor.cpp
index 0c77ee5..280f9af 100644
--- a/cmds/statsd/src/StatsLogProcessor.cpp
+++ b/cmds/statsd/src/StatsLogProcessor.cpp
@@ -54,12 +54,8 @@
     // dump all statsd logs to dropbox for now.
     // TODO: Add filtering, aggregation, etc.
     if (err == NO_ERROR) {
-        StatsLogReport logReport;
-        logReport.set_start_report_millis(entry.tv_sec * 1000 + entry.tv_nsec / 1000 / 1000);
-        EventMetricData* eventMetricData = logReport.mutable_event_metrics()->add_data();
-        *eventMetricData = parse(msg);
-
-        m_dropbox_writer.addStatsLogReport(logReport);
+        EventMetricData eventMetricData = parse(msg);
+        m_dropbox_writer.addEventMetricData(eventMetricData);
     }
 }
 
