These tasks build pieces of a small reporting toolkit: a page reader that yields records, a rate converter that remembers its table, a decorator that times out bad inputs, and a walker for nested categories.
Each one calls for a specific tool from the unit. If you find yourself writing a long loop with a lot of bookkeeping, check whether a generator, a closure or a recursive call would carry the state for you.
All of them are checked by calling your code on hidden inputs, including empty ones.