refactored properties handling