Make add function itself a generator. Elegance achieved.