Throughout this model, we maintain two definitions of a "lap". Internally, it is "an object with `duration` and `time` attributes". Externally, it is "a duration". This implementation of `nextLap` blurs that distinction, which makes the API a little cryptic: different "lap"-related methods return different representations of a lap. I can see this is because you are using `nextLap` both internally and from the Stopwatch Panel, so I'm not sure how to resolve this at the moment. I'll keep thinking about it, but I thought I'd give you a heads-up while I work it out (in case you can tell me how my premise is incorrect).