This seems a bit messy. Unfortunate downside of moving the properties into a protocol.