closes #1 and adds Metric.exec(). I didn't write full tests yet, but it's sleepy time. I'll be sure to feel bad about it later.