Could there be an overload:
```c++
void invoke_action(utility::priority_tag<1> const&,
        F& f, Context const& context, unused)
```
that created the attribute like before? I think overload selection would catch ```priority<1>``` and ```priority<2>``` cases, so only one implementation would be needed. After the attribute is created it should go to ```priority<1>``` or ```priority<2>``` overload just like before.

Also, is refactoring action necessary for this patch? Theres been a lot of discussion about the refactoring of a feature that I thought worked. Is there a feature being added that am I missing?