Draft new API which doesn't use reflection, but combined interfaces.