Initial implementation + tests.

Signed-off-by: John McCutchan <john@johnmccutchan.com>