Rough history implementation.  Needs testing.