+- Easier-(for me!)-to-reason-about implementation:
+ + Well-defined metrics-to-binary conversions, as opposed to the
+ nearly-arbitrary term-to-string conversions used in `folsomite`
+ + Spec'd, tested and Dialyzed
+
+### Adding consumers
+
+#### At app config time
+
+```erlang
+{env,
+ [ {production_interval , 30000}
+ , {consumers,
+ [ {beam_stats_consumer_statsd,
+ [ {consumption_interval , 60000}
+ , {dst_host , "localhost"}
+ , {dst_port , 8125}
+ , {src_port , 8124}
+ , {num_msgs_per_packet , 10}
+
+ % If you want to name your node something other than what
+ % erlang:node() returns:
+ , {static_node_name , <<"unicorn_at_rainbow">>}
+ ]}
+ , {beam_stats_consumer_graphite,
+ [ {consumption_interval , 60000}
+ , {host , "localhost"}
+ , {port , 2003}
+ , {timeout , 5000}
+ ]}
+ , {beam_stats_consumer_csv,
+ [ {consumption_interval , 60000}
+ , {path , "beam_stats.csv"}
+ ]}
+ , {some_custom_consumer_module,
+ [ {some_custom_option_a, "abc"}
+ , {some_custom_option_b, 123}
+ ]}
+
+ ]}
+ ]}
+```
+
+#### Dynamically
+
+```erlang
+beam_stats_consumer:add(consumer_module, ConsumerOptions).
+```
+
+### Removing consumers
+
+Not yet implemented.