stronger time types, overrides init underlying lib object as a member this might be changed to unique_ptr, in case we really want begin() to be idempotent and being able to re-init things (which might not be actually possible?)