initial api implementation