made some progress with invoke()
got a reasonable invoke
added tests for using a smart-pointer
fixed various issues with the different compilers