abstract class for resources and contribute