refactored decay provider, not yet trimmed