Avoids an additional layer of indirection for callbacks. Passing them around deep into instruction decoding logic doesn't provide much benefit seeing as there will always be one frontend object per thread.