core refactoring: getter/setters using JavaScript Prototype Descriptors