use experimental module to squash warnings
squashing smartmatch warnings
explicitly marking attributes as lazy

when they depend on another attribute's value in their default