~ self-explanatory enum keywords
+ optional::has