Refactor history API

Fixes the first item in #115. The second item will need to follow a deprecation path since Serrano depends on it.