we don't need FuncWrapper