Enable optional parameters

All explanations are in the code