Use records and be a little more transparent about actions.  Breaking changes to API, new version