Update API; add initial implementation