use Object.defineProperty