using Object prototype version of hasOwnProperty as window.hasOwnProperty doesn't exist in older browsers (IE8)