allowing constraints to be passed as an option