properties should be interfaces