remove separate object factory, embed in invoker