Simple constraint optimisation during creation time

I'm not sure if
* there should be an option to disable this
* these changes mean that code in other places can be simplified