Refactored for property based protocol