add code about function object take extra data.