Somewhat simplified API with one major bug less!