Imporoved interface, hopefully without breaking anything