required and optional params