concrete pieces should be fetched by code, and new instances should be extended with attrs