add function todos, problems with yield keyword