refactored DelegateActivator, now all delegates are returning shared_ptr