A better, but still not final version