more work on simpler API