implemented required and rest param lists