IS #4 finish getting rid of explicit dynamic dispatch