wrap in closure
shift out
parameterize to reduce branch
cOP behaves as validator
Merge branch 'rc/constrain'