using identity function instead of inline fn