replaced defineProperty by defineProperties
partially supported ie8