make more complicated
add javadoc
* fix empty(Iterable) bug
* change prog1 signature again