refactored properties() method