reimplement resource using stackable traits