don't rely on inheriting hasOwnProperty