Used Trampoline from post by Runar for the TailCalls: http://apocalisp.wordpress.com/2011/10/26/tail-call-elimination-in-scala-monads/
An attempt to make typer tail-recursive.