improved public interface