extending Resource with a case class - ensures property provider is not
stored in the resource which causes circular refs