prefer using primitive