implement external API
progress on API