more consistent BNF