Implement double dispatch callback system