work on subfunctions - 20 tests pass