History doesn't need to be a mutable field, it can just be a extra immutable struct that is returned. And the adapt field needs to be on the main object. I think this would be a more clean API, and it would likely make the compiler happier.