major reworking of how elements function