Refactored Invocation to implementation detail

This is a preparation for performance improvement where we can replace the OperationServiceImpl
by different ones to improve performance. Apart from that, I think that the design also is cleaner since less implementation details are visible in the system.

No optimizations are being made in this PR; it is just preparing the road for swapping out the OperationService by different implementations with different performance characteristics and requirements.