The way I have the code structured right now, all I require for the TOTP class is to mangle with the supplied time value a little with `int(math.floor(time/30))` before passing it into `_dynamic_truncate()`.

If I shift `_dynamic_truncate()` out of the HOTP class into `utils.py` for example, I can just add an additional `algorithm` parameter to the function which gets called with `SHA1()` by the HOTP class and gets called by whatever `self._algorithm` is set to in the TOTP class.