adding more abstracit primitives