protocols vs properties