Dynamic attrs no sugar

An alternative to #188 that has the same behavior but is not implemented with syntactic sugar, with a result that is IMO cleaner.