generalise invocation