added return types to function nodes, filled in missing evaluate