another iteration on the public API