Add genericity to all algortithms
Add an input stream reader that is an interator