modified gitignore
generator can accpet other generator as a function
TODO upgrade

TODO: Contemplate about "no side effect"