#1 Added support for optional parameters