implement api (not chef)