use specicialized data types for semantic property names instead of just strings