Renames and some comments
Refactor to split out complex func
Require that seq has values
Replaced formerly tailrec func with a foldleft that should give similar benefits but is able to cope with a seq of futures
moved val down a bit so isn't declared when in an error state