primitive api