rough draft of proposed api