grammar is a better place to enforce constraints it looks like