typehinting the stuff with the right class implementation and not the interface