In general, I'd prefer it if "public" methods had strong typing - I just think it's a bit more self-documenting.  The "private" methods could just as easily be declared with `def`, I guess I was just in the mood.  Should I change them?

On that, I did attempt to mark private methods as such with that keyword, but did run in to issues trying to mock/spy on private methods, so there is inconsistency here also.