Protocol exposing argument
Rename stuff in the constrained module
Rename constrained -> constraints
Add documentation about constraints