rough draft of API complete