safer for-in loops with obj.hasOwnProperty()