r8873: better generic function