add more formal `param` and `validate`