primitive implementation