rollback due to ie8's Object.defineProperty compatibility