At some point, an explicit timing scheme should handle timers and timings.
Consider timing (and maybe counting) in the respective objects. For ex. you can get the total time for smoother at a level by having the timers in your `SmoothingInPlace` functions. You can then have a different class for logging that can access and print these times.
Originally posted by @ds-aakash in #65 (comment)