diff --git a/src/metric.hpp b/src/metric.hpp
index 859315e..b627b4e 100644
--- a/src/metric.hpp
+++ b/src/metric.hpp
@@ -2,8 +2,11 @@
 
 #include "interfaces/clock.hpp"
 #include "interfaces/metric.hpp"
+#include "interfaces/metric_listener.hpp"
 #include "interfaces/sensor.hpp"
 #include "interfaces/sensor_listener.hpp"
+#include "metrics/collection_data.hpp"
+#include "types/collection_duration.hpp"
 
 class Metric :
     public interfaces::Metric,
@@ -14,28 +17,22 @@
     Metric(Sensors sensors, OperationType operationType, std::string id,
            CollectionTimeScope, CollectionDuration,
            std::unique_ptr<interfaces::Clock>);
-    ~Metric();
 
     void initialize() override;
     void deinitialize() override;
     std::vector<MetricValue> getReadings() const override;
-    void sensorUpdated(interfaces::Sensor&, Milliseconds) override;
     void sensorUpdated(interfaces::Sensor&, Milliseconds,
                        double value) override;
     LabeledMetricParameters dumpConfiguration() const override;
     uint64_t sensorCount() const override;
+    void registerForUpdates(interfaces::MetricListener& listener) override;
+    void unregisterFromUpdates(interfaces::MetricListener& listener) override;
+    void updateReadings(Milliseconds) override;
+    bool isTimerRequired() const override;
 
   private:
-    class CollectionData;
-    class DataPoint;
-    class DataInterval;
-    class DataStartup;
-
-    static std::vector<std::unique_ptr<CollectionData>>
-        makeCollectionData(size_t size, OperationType, CollectionTimeScope,
-                           CollectionDuration);
-
-    CollectionData& findAssociatedData(const interfaces::Sensor& notifier);
+    metrics::CollectionData&
+        findAssociatedData(const interfaces::Sensor& notifier);
 
     std::string id;
     std::vector<MetricValue> readings;
@@ -43,6 +40,7 @@
     OperationType operationType;
     CollectionTimeScope collectionTimeScope;
     CollectionDuration collectionDuration;
-    std::vector<std::unique_ptr<CollectionData>> collectionAlgorithms;
+    std::vector<std::unique_ptr<metrics::CollectionData>> collectionAlgorithms;
     std::unique_ptr<interfaces::Clock> clock;
+    std::vector<std::reference_wrapper<interfaces::MetricListener>> listeners;
 };
