only set properties on objects (not primitives or functions) since they cannot have substate