refactored primitives