much better, but still can't print identity function