prototypes for basic primitives