slight tweak to function visiting
split up generate call function
tests working, output args are only required to have partial support