diff --git a/network-metrics.cabal b/network-metrics.cabal
--- a/network-metrics.cabal
+++ b/network-metrics.cabal
@@ -1,5 +1,5 @@
 name:               network-metrics
-version:            0.2.4
+version:            0.2.5
 synopsis:           Send metrics to Ganglia, Graphite, and statsd.
 license:            OtherLicense
 license-file:       LICENSE
diff --git a/src/Network/Metric/Sink/Ganglia.hs b/src/Network/Metric/Sink/Ganglia.hs
--- a/src/Network/Metric/Sink/Ganglia.hs
+++ b/src/Network/Metric/Sink/Ganglia.hs
@@ -79,7 +79,7 @@
 data Ganglia = Ganglia Host Handle deriving (Show)
 
 instance Sink Ganglia where
-    push (Ganglia host hd) = mapM_ (hPush hd . enc) . measure
+    push (Ganglia host hd) m = mapM_ (hPush hd) (concat . map enc $ measure m)
       where
         enc (Counter g b v) = put host g b v Positive
         enc (Timer g b v)   = put host g b v Both
@@ -108,7 +108,7 @@
 
 -- | Open a new Ganglia sink
 open :: Host -> HostName -> PortNumber -> IO AnySink
-open host = fOpen (Ganglia host) Stream
+open host = fOpen (Ganglia host) Datagram
 
 -- | Encode a GangliaMetric's metadata into a Binary.Put monad
 --
@@ -149,9 +149,8 @@
     -> Bucket
     -> a
     -> Slope
-    -> BL.ByteString
-put host group bucket value slope =
-    BL.concat $ map run [putMetaData, putValue]
+    -> [BL.ByteString]
+put host group bucket value slope = map run [putMetaData, putValue]
   where
      run f  = runPut $ f metric
      metric = defaultMetric
