required and optional args mixed