Refactoring
Object
adjust generic type definitions for 'apply' set of functions, attempting behavior the same as that of 'merge'