stronger model user with Object.defineProperty