Move CallNative() details to new NativeCaller class