fixups:
1) check type of required parameters (coderefs)
2) rename $input_data_iterator => $input_data_iterator
3) use die instead of confess. Consider Carp::Always - Warns and dies noisily with stack backtraces
4) improvements to pod